All Products
Search
Document Center

PolarDB:Performance Agent

Last Updated:Mar 28, 2026

Performance Agent adalah plug-in PolarDB for MySQL yang menulis statistik performa tingkat node ke tabel in-memory pada interval yang dapat dikonfigurasi. Anda dapat mengkueri tabel tersebut langsung dengan SQL atau menghubungkannya ke platform pemantauan seperti Grafana untuk melacak metrik CPU, memori, I/O, koneksi, dan engine InnoDB secara real time.

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

Cara kerja

Performance Agent mengumpulkan data performa pada interval yang dapat dikonfigurasi dan menulis setiap snapshot sebagai satu baris ke dalam tabel memori PERF_STATISTICS di database sistem performance_schema. Tabel ini menyimpan data performa yang dihasilkan selama periode waktu terbaru.

Catatan

Mengaktifkan performance_schema memungkinkan Anda memantau lock, transaksi, dan metrik memori, tetapi mengonsumsi jumlah memori sistem yang signifikan dan dapat memengaruhi performa kluster. Fitur ini dinonaktifkan secara default di PolarDB for MySQL. Jika Anda mengaktifkannya, konfigurasikan hanya metrik yang diperlukan berdasarkan spesifikasi kluster dan sumber daya yang tersedia.

Parameter

ParameterDeskripsiDefault
performance_agent_enabledMengaktifkan atau menonaktifkan Performance Agent. Nilai valid: ON, OFF.ON
performance_agent_intervalFrekuensi pengumpulan data oleh Performance Agent. Nilai valid: 1–60. Satuan: detik.1
performance_agent_perfstat_volume_sizeJumlah maksimum baris dalam tabel PERF_STATISTICS.3600

Dengan nilai default (interval = 1, volume_size = 3600), tabel menyimpan data selama kurang lebih satu jam.

Untuk mengubah parameter ini, lihat Tentukan parameter kluster dan node.

Tabel PERF_STATISTICS

Skema

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;

Referensi kolom

Kolom dikelompokkan berdasarkan area fungsional.

Sumber daya sistem

KolomDeskripsi
TIMETimestamp baris. Format: yyyy-MM-dd HH:mm:ss.
PROCS_MEM_USAGEMemori fisik yang digunakan oleh kluster. Satuan: byte.
PROCS_CPU_RATIOUtilisasi CPU.
PROCS_IOPSJumlah operasi I/O yang dilakukan.
PROCS_IO_READ_BYTESData yang dibaca oleh operasi I/O. Satuan: byte.
PROCS_IO_WRITE_BYTESData yang ditulis oleh operasi I/O. Satuan: byte.

Koneksi dan sesi

KolomDeskripsi
MYSQL_CONN_ABORTJumlah koneksi yang ditutup.
MYSQL_CONN_CREATEDJumlah koneksi baru.
MYSQL_USER_CONN_COUNTTotal jumlah koneksi.
MYSQL_CONN_RUNNINGJumlah koneksi aktif.

Lock

KolomDeskripsi
MYSQL_LOCK_IMMEDIATEJumlah lock yang dipegang.
MYSQL_LOCK_WAITEDJumlah event tunggu lock.

Pernyataan SQL

KolomDeskripsi
MYSQL_COM_INSERTJumlah pernyataan INSERT yang dieksekusi.
MYSQL_COM_UPDATEJumlah pernyataan UPDATE yang dieksekusi.
MYSQL_COM_DELETEJumlah pernyataan DELETE yang dieksekusi.
MYSQL_COM_SELECTJumlah pernyataan SELECT yang dieksekusi.
MYSQL_COM_COMMITJumlah transaksi yang dikomit secara eksplisit.
MYSQL_COM_ROLLBACKJumlah transaksi yang di-rollback.
MYSQL_COM_PREPAREJumlah prepared statement.
MYSQL_LONG_QUERYJumlah kueri lambat.

Cache dan objek temporary

KolomDeskripsi
MYSQL_TCACHE_GETJumlah cache hit.
MYSQL_TCACHE_MISSJumlah cache miss.
MYSQL_TMPFILE_CREATEDJumlah file temporary yang dibuat.
MYSQL_TMP_TABLESJumlah tabel temporary yang dibuat.
MYSQL_TMP_DISKTABLESJumlah tabel disk temporary yang dibuat.

Operasi sort

KolomDeskripsi
MYSQL_SORT_MERGEJumlah kali data digabung dan diurutkan.
MYSQL_SORT_ROWSJumlah baris yang diurutkan.

Jaringan dan replikasi

KolomDeskripsi
MYSQL_BYTES_RECEIVEDData yang diterima oleh node. Satuan: byte.
MYSQL_BYTES_SENTData yang dikirim oleh node. Satuan: byte.
MYSQL_BINLOG_OFFSETUkuran file binary log yang dihasilkan. Satuan: byte.
MYSQL_IOLOG_OFFSETUkuran file binary log yang dikirim oleh node primary. Satuan: byte.
MYSQL_RELAYLOG_OFFSETUkuran file binary log yang diterapkan oleh node read-only. Satuan: byte.

Engine InnoDB (kolom EXTRA)

Kolom EXTRA menyimpan statistik engine InnoDB sebagai objek JSON. Nilainya setara dengan yang dikembalikan oleh SHOW STATUS.

Gunakan ekspresi path JSON untuk mengekstrak bidang individual:

SELECT TIME, EXTRA->'$.INNODB_ROWS_READ', EXTRA->'$.INNODB_ROWS_INSERTED'
FROM performance_schema.PERF_STATISTICS
ORDER BY TIME DESC
LIMIT 30;
BidangDeskripsi
INNODB_TRX_CNTJumlah transaksi.
INNODB_DATA_READData dibaca. Satuan: byte.
INNODB_IBUF_SIZEJumlah halaman yang digabung.
INNODB_LOG_WAITSJumlah kali InnoDB menunggu untuk menulis data log.
INNODB_MAX_PURGEJumlah transaksi yang dihapus.
INNODB_N_WAITINGJumlah lock yang sedang ditunggu oleh InnoDB.
INNODB_ROWS_READJumlah baris yang dibaca.
INNODB_LOG_WRITESJumlah kali InnoDB menulis data log.
INNODB_IBUF_MERGESJumlah kali data digabung oleh InnoDB.
INNODB_DATA_WRITTENData ditulis. Satuan: byte.
INNODB_DBLWR_WRITESJumlah operasi doublewrite.
INNODB_IBUF_SEGSIZEUkuran data yang dimasukkan ke insert buffer.
INNODB_ROWS_DELETEDJumlah baris yang dihapus.
INNODB_ROWS_UPDATEDJumlah baris yang diperbarui.
INNODB_COMMIT_TRXCNTJumlah transaksi yang dikomit.
INNODB_IBUF_FREELISTPanjang daftar idle.
INNODB_MYSQL_TRX_CNTJumlah transaksi MySQL.
INNODB_ROWS_INSERTEDJumlah baris yang disisipkan.
INNODB_ACTIVE_TRX_CNTJumlah transaksi aktif.
INNODB_OS_LOG_WRITTENData log yang ditulis ke disk. Satuan: byte.
INNODB_ACTIVE_VIEW_CNTJumlah view aktif.
INNODB_RSEG_HISTORY_LENPanjang tabel TRX_RSEG_HISTORY.
INNODB_AVG_COMMIT_TRXTIMEWaktu rata-rata untuk melakukan commit transaksi.
INNODB_MAX_COMMIT_TRXTIMEWaktu maksimum untuk menyelesaikan transaksi.
INNODB_DBLWR_PAGES_WRITTENJumlah halaman yang ditulis oleh operasi doublewrite.

Contoh kueri

Semua contoh melakukan kueri terhadap performance_schema.PERF_STATISTICS dan mengurutkan hasil berdasarkan TIME DESC.

Ambil snapshot mentah

Lakukan kueri utilisasi CPU dan penggunaan memori selama 30 detik terakhir:

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)

Lakukan kueri jumlah baris InnoDB yang dibaca dan disisipkan selama 30 detik terakhir:

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)

Hubungkan ke platform pemantauan

Hubungkan PERF_STATISTICS ke platform pemantauan eksternal untuk memvisualisasikan metrik dari waktu ke waktu. Tangkapan layar di bawah ini menunjukkan contoh Dasbor Grafana yang terhubung ke data performa PolarDB.

Grafana