Topik ini menjelaskan fitur Agen Performa yang disediakan oleh PolarDB. Anda dapat menggunakan Agen Performa sebagai PolarDB untuk MySQL Plugin untuk mengumpulkan statistik performa dari node dalam kluster PolarDB untuk MySQL.
Prasyarat
- Kluster PolarDB adalah PolarDB untuk MySQL versi 8.0 dengan revisi versi 8.0.2.1.0 atau lebih baru. Untuk informasi lebih lanjut tentang cara memeriksa versi, lihat Kueri versi mesin.
- Parameter loose_performance_schema diatur ke ON. Untuk informasi lebih lanjut, lihat Konfigurasi parameter kluster dan node.
Informasi latar belakang
Anda dapat mengaktifkan fitur performance_schema untuk memantau metrik performa kluster dalam hal kunci, transaksi, dan memori. Namun, setelah mengaktifkan fitur performance_schema, sejumlah besar memori sistem akan digunakan dan performa kluster dapat terpengaruh. Fitur performance_schema dinonaktifkan secara default di PolarDB untuk MySQL. Jika ingin mengaktifkan fitur performance_schema, kami sarankan Anda mengonfigurasi metrik performance_schema berdasarkan spesifikasi dan sumber daya kluster.
Parameter
Tabel berikut menjelaskan parameter yang perlu dikonfigurasi untuk Agen Performa.
| Parameter | Deskripsi |
| performance_agent_enabled | Menentukan apakah akan mengaktifkan fitur Agen Performa. Nilai valid: ON dan OFF. Nilai default: ON. |
| performance_agent_interval | Menentukan interval waktu pengumpulan data performa oleh PolarDB. Nilai valid: 1 hingga 60. Unit: detik. Nilai default: 1. |
| performance_agent_perfstat_volume_size | Menentukan jumlah maksimum catatan data yang diizinkan dalam tabel memori PERF_STATISTICS. Nilai default: 3600. Jika Anda mengatur parameter performance_agent_interval ke 1, sistem akan menyimpan data performa yang dihasilkan dalam satu jam terakhir. |
Skema
Tabel memori PERF_STATISTICS menggunakan skema berikut:
CREATE TEMPORARY TABLE `PERF_STATISTICS` (
`TIME` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`PROCS_MEM_USAGE` double NOT NULL DEFAULT '0',
`PROCS_CPU_RATIO` double NOT NULL DEFAULT '0',
`PROCS_IOPS` double NOT NULL DEFAULT '0',
`PROCS_IO_READ_BYTES` bigint(21) NOT NULL DEFAULT '0',
`PROCS_IO_WRITE_BYTES` bigint(21) NOT NULL DEFAULT '0',
`MYSQL_CONN_ABORT` int(11) NOT NULL DEFAULT '0',
`MYSQL_CONN_CREATED` int(11) NOT NULL DEFAULT '0',
`MYSQL_USER_CONN_COUNT` int(11) NOT NULL DEFAULT '0',
`MYSQL_CONN_RUNNING` int(11) NOT NULL DEFAULT '0',
`MYSQL_LOCK_IMMEDIATE` int(11) NOT NULL DEFAULT '0',
`MYSQL_LOCK_WAITED` int(11) NOT NULL DEFAULT '0',
`MYSQL_COM_INSERT` int(11) NOT NULL DEFAULT '0',
`MYSQL_COM_UPDATE` int(11) NOT NULL DEFAULT '0',
`MYSQL_COM_DELETE` int(11) NOT NULL DEFAULT '0',
`MYSQL_COM_SELECT` int(11) NOT NULL DEFAULT '0',
`MYSQL_COM_COMMIT` int(11) NOT NULL DEFAULT '0',
`MYSQL_COM_ROLLBACK` int(11) NOT NULL DEFAULT '0',
`MYSQL_COM_PREPARE` int(11) NOT NULL DEFAULT '0',
`MYSQL_LONG_QUERY` int(11) NOT NULL DEFAULT '0',
`MYSQL_TCACHE_GET` bigint(21) NOT NULL DEFAULT '0',
`MYSQL_TCACHE_MISS` bigint(21) NOT NULL DEFAULT '0',
`MYSQL_TMPFILE_CREATED` int(11) NOT NULL DEFAULT '0',
`MYSQL_TMP_TABLES` int(11) NOT NULL DEFAULT '0',
`MYSQL_TMP_DISKTABLES` int(11) NOT NULL DEFAULT '0',
`MYSQL_SORT_MERGE` int(11) NOT NULL DEFAULT '0',
`MYSQL_SORT_ROWS` int(11) NOT NULL DEFAULT '0',
`MYSQL_BYTES_RECEIVED` bigint(21) NOT NULL DEFAULT '0',
`MYSQL_BYTES_SENT` bigint(21) NOT NULL DEFAULT '0',
`MYSQL_BINLOG_OFFSET` int(11) NOT NULL DEFAULT '0',
`MYSQL_IOLOG_OFFSET` int(11) NOT NULL DEFAULT '0',
`MYSQL_RELAYLOG_OFFSET` int(11) NOT NULL DEFAULT '0',
`EXTRA` json NOT NULL DEFAULT 'null'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;| Kolom | Deskripsi |
| TIME | Waktu ketika catatan data dibuat. Waktu dalam format yyyy-MM-dd HH:mm:ss. |
| PROCS_MEM_USAGE | Ukuran memori fisik yang digunakan oleh kluster. Unit: byte. |
| PROCS_CPU_RATIO | Utilisasi CPU. |
| PROCS_IOPS | Jumlah operasi I/O yang dilakukan. |
| PROCS_IO_READ_BYTES | Jumlah data yang dibaca oleh operasi I/O. Unit: byte. |
| PROCS_IO_WRITE_BYTES | Jumlah data yang ditulis oleh operasi I/O. Unit: byte. |
| MYSQL_CONN_ABORT | Jumlah koneksi yang ditutup. |
| MYSQL_CONN_CREATED | Jumlah koneksi baru. |
| MYSQL_USER_CONN_COUNT | Jumlah total koneksi. |
| MYSQL_CONN_RUNNING | Jumlah koneksi aktif. |
| MYSQL_LOCK_IMMEDIATE | Jumlah kunci yang dipegang. |
| MYSQL_LOCK_WAITED | Jumlah peristiwa tunggu kunci. |
| MYSQL_COM_INSERT | Jumlah pernyataan yang dieksekusi untuk menyisipkan data. |
| MYSQL_COM_UPDATE | Jumlah pernyataan yang dieksekusi untuk memperbarui data. |
| MYSQL_COM_DELETE | Jumlah pernyataan yang dieksekusi untuk menghapus data. |
| MYSQL_COM_SELECT | Jumlah pernyataan yang dieksekusi untuk menanyakan data. |
| MYSQL_COM_COMMIT | Jumlah transaksi yang dikomit secara eksplisit. |
| MYSQL_COM_ROLLBACK | Jumlah transaksi yang dibatalkan. |
| MYSQL_COM_PREPARE | Jumlah pernyataan yang diproses sebelumnya. |
| MYSQL_LONG_QUERY | Jumlah kueri lambat. |
| MYSQL_TCACHE_GET | Jumlah cache hit. |
| MYSQL_TCACHE_MISS | Jumlah cache miss. |
| MYSQL_TMPFILE_CREATED | Jumlah file sementara yang dibuat. |
| MYSQL_TMP_TABLES | Jumlah tabel sementara yang dibuat. |
| MYSQL_TMP_DISKTABLES | Jumlah tabel disk sementara yang dibuat. |
| MYSQL_SORT_MERGE | Jumlah kali data digabung dan diurutkan. |
| MYSQL_SORT_ROWS | Jumlah baris yang diurutkan. |
| MYSQL_BYTES_RECEIVED | Jumlah data yang diterima. Unit: byte. |
| MYSQL_BYTES_SENT | Jumlah data yang dikirim. Unit: byte. |
| MYSQL_BINLOG_OFFSET | Ukuran file log biner yang dihasilkan. Unit: byte. |
| MYSQL_IOLOG_OFFSET | Ukuran file log biner yang dikirim oleh node utama. Unit: byte. |
| MYSQL_RELAYLOG_OFFSET | Ukuran file log biner yang diterapkan oleh node baca-saja. Unit: byte. |
| EXTRA | Statistik tentang InnoDB. Nilai parameter EXTRA terdiri dari beberapa bidang dan dalam format JSON. Untuk informasi lebih lanjut, lihat bagian "Bidang dalam nilai parameter EXTRA" dari topik ini. Catatan Nilai metrik dalam statistik InnoDB sama dengan nilai yang diperoleh dengan mengeksekusi pernyataan SHOW STATUS. |
Tabel 1. Bidang dalam nilai parameter EXTRA
| Bidang | Deskripsi |
| INNODB_TRX_CNT | Jumlah transaksi. |
| INNODB_DATA_READ | Jumlah data yang dibaca. Unit: byte. |
| INNODB_IBUF_SIZE | Jumlah halaman yang digabungkan. |
| INNODB_LOG_WAITS | Jumlah kali InnoDB menunggu untuk menulis data log. |
| INNODB_MAX_PURGE | Jumlah transaksi yang dihapus. |
| INNODB_N_WAITING | Jumlah kunci yang sedang ditunggu oleh InnoDB. |
| INNODB_ROWS_READ | Jumlah baris yang dibaca. |
| INNODB_LOG_WRITES | Jumlah kali data log ditulis oleh InnoDB. |
| INNODB_IBUF_MERGES | Jumlah kali data digabungkan oleh InnoDB. |
| INNODB_DATA_WRITTEN | Jumlah data yang ditulis. Unit: byte. |
| INNODB_DBLWR_WRITES | Jumlah operasi penulisan ganda. |
| INNODB_IBUF_SEGSIZE | Ukuran data yang dimasukkan ke dalam buffer. |
| INNODB_ROWS_DELETED | Jumlah baris yang dihapus. |
| INNODB_ROWS_UPDATED | Jumlah baris yang diperbarui. |
| INNODB_COMMIT_TRXCNT | Jumlah transaksi yang dikomit. |
| INNODB_IBUF_FREELIST | Panjang daftar idle. |
| INNODB_MYSQL_TRX_CNT | Jumlah transaksi MySQL. |
| INNODB_ROWS_INSERTED | Jumlah baris yang disisipkan. |
| INNODB_ACTIVE_TRX_CNT | Jumlah transaksi aktif. |
| INNODB_OS_LOG_WRITTEN | Jumlah data log yang ditulis. Unit: byte. |
| INNODB_ACTIVE_VIEW_CNT | Jumlah tampilan aktif. |
| INNODB_RSEG_HISTORY_LEN | Panjang tabel TRX_RSEG_HISTORY. |
| INNODB_AVG_COMMIT_TRXTIME | Rata-rata waktu yang dibutuhkan untuk mengcommit transaksi. |
| INNODB_MAX_COMMIT_TRXTIME | Waktu maksimum yang dibutuhkan untuk mengcommit transaksi. |
| INNODB_DBLWR_PAGES_WRITTEN | Jumlah penulisan yang diselesaikan oleh operasi penulisan ganda. |
Penggunaan
- Anda dapat mengeksekusi pernyataan berikut untuk menanyakan tabel sistem guna mendapatkan data performa.
- Kueri utilisasi CPU dan penggunaan memori selama 30 detik sebelumnya. Contoh:
MySQL> select TIME, PROCS_MEM_USAGE, PROCS_CPU_RATIO from performance_schema.PERF_STATISTICS order by time DESC limit 30; +---------------------+-----------------+-----------------+ | TIME | PROCS_MEM_USAGE | PROCS_CPU_RATIO | +---------------------+-----------------+-----------------+ | 2020-02-27 11:15:36 | 857812992 | 18.55 | | 2020-02-27 11:15:35 | 857808896 | 18.54 | | 2020-02-27 11:15:34 | 857268224 | 19.64 | | 2020-02-27 11:15:33 | 857268224 | 21.06 | | 2020-02-27 11:15:32 | 857264128 | 20.39 | | 2020-02-27 11:15:31 | 857272320 | 20.32 | | 2020-02-27 11:15:30 | 857272320 | 21.35 | | 2020-02-27 11:15:29 | 857272320 | 28.8 | | 2020-02-27 11:15:28 | 857268224 | 29.08 | | 2020-02-27 11:15:27 | 857268224 | 26.92 | | 2020-02-27 11:15:26 | 857268224 | 23.84 | | 2020-02-27 11:15:25 | 857264128 | 13.76 | | 2020-02-27 11:15:24 | 857264128 | 15.12 | | 2020-02-27 11:15:23 | 857264128 | 14.76 | | 2020-02-27 11:15:22 | 857264128 | 15.38 | | 2020-02-27 11:15:21 | 857260032 | 13.23 | | 2020-02-27 11:15:20 | 857260032 | 12.75 | | 2020-02-27 11:15:19 | 857260032 | 12.17 | | 2020-02-27 11:15:18 | 857255936 | 13.22 | | 2020-02-27 11:15:17 | 857255936 | 20.51 | | 2020-02-27 11:15:16 | 857255936 | 28.74 | | 2020-02-27 11:15:15 | 857251840 | 29.85 | | 2020-02-27 11:15:14 | 857251840 | 29.31 | | 2020-02-27 11:15:13 | 856981504 | 28.85 | | 2020-02-27 11:15:12 | 856981504 | 29.19 | | 2020-02-27 11:15:11 | 856977408 | 29.12 | | 2020-02-27 11:15:10 | 856977408 | 29.32 | | 2020-02-27 11:15:09 | 856977408 | 29.2 | | 2020-02-27 11:15:08 | 856973312 | 29.36 | | 2020-02-27 11:15:07 | 856973312 | 28.79 | +---------------------+-----------------+-----------------+ 30 rows in set (0.08 sec) - Kueri baris yang dibaca dan ditulis oleh InnoDB selama 30 detik sebelumnya. Contoh:
MySQL> select TIME, EXTRA->'$.INNODB_ROWS_READ', EXTRA->'$.INNODB_ROWS_INSERTED' from performance_schema.PERF_STATISTICS order by time DESC limit 30; +---------------------+-----------------------------+---------------------------------+ | TIME | EXTRA->'$.INNODB_ROWS_READ' | EXTRA->'$.INNODB_ROWS_INSERTED' | +---------------------+-----------------------------+---------------------------------+ | 2020-02-27 11:22:17 | 39209 | 0 | | 2020-02-27 11:22:16 | 36098 | 0 | | 2020-02-27 11:22:15 | 38035 | 0 | | 2020-02-27 11:22:14 | 37384 | 0 | | 2020-02-27 11:22:13 | 38336 | 0 | | 2020-02-27 11:22:12 | 33946 | 0 | | 2020-02-27 11:22:11 | 36301 | 0 | | 2020-02-27 11:22:10 | 36835 | 0 | | 2020-02-27 11:22:09 | 36900 | 0 | | 2020-02-27 11:22:08 | 36402 | 0 | | 2020-02-27 11:22:07 | 39672 | 0 | | 2020-02-27 11:22:06 | 39316 | 0 | | 2020-02-27 11:22:05 | 37830 | 0 | | 2020-02-27 11:22:04 | 36396 | 0 | | 2020-02-27 11:22:03 | 34820 | 0 | | 2020-02-27 11:22:02 | 37350 | 0 | | 2020-02-27 11:22:01 | 39463 | 0 | | 2020-02-27 11:22:00 | 38419 | 0 | | 2020-02-27 11:21:59 | 37673 | 0 | | 2020-02-27 11:21:58 | 35117 | 0 | | 2020-02-27 11:21:57 | 36140 | 0 | | 2020-02-27 11:21:56 | 37592 | 0 | | 2020-02-27 11:21:55 | 39765 | 0 | | 2020-02-27 11:21:54 | 35553 | 0 | | 2020-02-27 11:21:53 | 35882 | 0 | | 2020-02-27 11:21:52 | 37061 | 0 | | 2020-02-27 11:21:51 | 40699 | 0 | | 2020-02-27 11:21:50 | 39608 | 0 | | 2020-02-27 11:21:49 | 39317 | 0 | | 2020-02-27 11:21:48 | 37413 | 0 | +---------------------+-----------------------------+---------------------------------+ 30 rows in set (0.08 sec)
- Kueri utilisasi CPU dan penggunaan memori selama 30 detik sebelumnya. Contoh:
- Hubungkan ke platform pemantauan untuk memantau performa database Anda secara real-time. Sebagai contoh, hubungkan ke Grafana.
