Topik ini menjelaskan cara menggunakan fitur Wawasan Kinerja untuk memantau beban kerja, melakukan analisis asosiasi, dan mengoptimalkan kinerja instance ApsaraDB RDS. Fitur ini membantu Anda mengevaluasi beban kerja instance RDS secara cepat serta mengidentifikasi masalah kinerja guna memastikan stabilitas layanan.
Prasyarat
Instance RDS Anda harus menjalankan MySQL 8.0 atau MySQL 5.7 dengan versi mesin minor 20190915 atau yang lebih baru.
Untuk memeriksa versi mesin minor dari instance RDS Anda, masuk ke Konsol Manajemen ApsaraDB RDS dan buka halaman Basic Information. Di bagian Configuration Information, periksa apakah tombol Upgrade Kernel Version tersedia. Jika tombol tersebut ada, klik untuk melihat dan memperbarui versi mesin minor instance RDS Anda. Jika tombol tidak ditampilkan, instance RDS Anda sudah menggunakan versi mesin minor terbaru. Untuk informasi lebih lanjut, lihat Perbarui versi mesin minor.
Ikhtisar
Fitur Wawasan Kinerja mencakup dua komponen utama:
Statistik objek
Statistik objek mengumpulkan statistik dari indeks dan tabel berikut:
TABLE_STATISTICS: mencatat baris dengan data yang dibaca dan dimodifikasi.
INDEX_STATISTICS: mencatat baris dengan data yang dibaca dari indeks.
Titik kinerja
Titik kinerja mengumpulkan detail kinerja instance RDS Anda. Data ini dapat digunakan untuk menghitung overhead Pernyataan SQL secara cepat dan akurat. Titik kinerja mengukur kinerja database dari tiga dimensi berikut:
CPU: mencakup total waktu eksekusi Pernyataan SQL dan waktu yang dihabiskan oleh CPU untuk mengeksekusi Pernyataan SQL.
Kunci: mencakup waktu yang digunakan oleh metadata locks pada server, transaction locks penyimpanan, mutual exclusion dalam mode debugging, dan readers-writer locks.
I/O: mencakup waktu yang dihabiskan untuk operasi seperti membaca dan menulis file data, menulis file log, membaca log biner, membaca redo logs, serta membaca redo logs secara asinkron.
Menggunakan statistik objek
Pastikan nilai parameter OPT_TABLESTAT dan OPT_INDEXSTAT disetel ke ON. Contoh:
mysql> show variables like "opt_%_stat"; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | opt_indexstat | ON | | opt_tablestat | ON | +---------------+-------+Kueri tabel TABLE_STATISTICS atau INDEX_STATISTICS di database information_schema untuk mendapatkan statistik tabel atau indeks. Contoh:
mysql> select * from TABLE_STATISTICS limit 10; +--------------+--------------+-----------+--------------+------------------------+---------------+--------------+--------------+ | TABLE_SCHEMA | TABLE_NAME | ROWS_READ | ROWS_CHANGED | ROWS_CHANGED_X_INDEXES | ROWS_INSERTED | ROWS_DELETED | ROWS_UPDATED | +--------------+--------------+-----------+--------------+------------------------+---------------+--------------+--------------+ | mysql | db | 2 | 0 | 0 | 0 | 0 | 0 | | mysql | engine_cost | 2 | 0 | 0 | 0 | 0 | 0 | | mysql | proxies_priv | 1 | 0 | 0 | 0 | 0 | 0 | | mysql | server_cost | 6 | 0 | 0 | 0 | 0 | 0 | | mysql | tables_priv | 2 | 0 | 0 | 0 | 0 | 0 | | mysql | user | 7 | 0 | 0 | 0 | 0 | 0 | | test | sbtest1 | 1686 | 142 | 184 | 112 | 12 | 18 | | test | sbtest10 | 1806 | 125 | 150 | 105 | 5 | 15 | | test | sbtest100 | 1623 | 141 | 182 | 110 | 10 | 21 | | test | sbtest11 | 1254 | 136 | 172 | 110 | 10 | 16 | +--------------+--------------+-----------+--------------+------------------------+---------------+--------------+--------------+ mysql> select * from INDEX_STATISTICS limit 10; +--------------+--------------+------------+-----------+ | TABLE_SCHEMA | TABLE_NAME | INDEX_NAME | ROWS_READ | +--------------+--------------+------------+-----------+ | mysql | db | PRIMARY | 2 | | mysql | engine_cost | PRIMARY | 2 | | mysql | proxies_priv | PRIMARY | 1 | | mysql | server_cost | PRIMARY | 6 | | mysql | tables_priv | PRIMARY | 2 | | mysql | user | PRIMARY | 7 | | test | sbtest1 | PRIMARY | 2500 | | test | sbtest10 | PRIMARY | 3007 | | test | sbtest100 | PRIMARY | 2642 | | test | sbtest11 | PRIMARY | 2091 | +--------------+--------------+------------+-----------+Tabel berikut menjelaskan parameter dalam contoh sebelumnya.
Parameter
Deskripsi
TABLE_SCHEMA
Nama database.
TABLE_NAME
Nama tabel.
ROWS_READ
Jumlah baris yang dibaca dari tabel.
ROWS_CHANGED
Jumlah baris yang dimodifikasi dalam tabel.
ROWS_CHANGED_X_INDEXES
Jumlah baris yang dimodifikasi menggunakan indeks dalam tabel.
ROWS_INSERTED
Jumlah baris yang dimasukkan ke dalam tabel.
ROWS_DELETED
Jumlah baris yang dihapus dari tabel.
ROWS_UPDATED
Jumlah baris yang diperbarui dalam tabel.
INDEX_NAME
Nama indeks.
Menggunakan titik kinerja
Lihat pengaturan variabel global instance RDS Anda.Konfirmasi parameter terkait Performance point. Contoh normal sebagai berikut:
mysql> show variables like "%performance_point%"; +---------------------------------------+-------+ | Variable_name | Value | +---------------------------------------+-------+ | performance_point_dbug_enabled | OFF | | performance_point_enabled | ON | | performance_point_iostat_interval | 2 | | performance_point_iostat_volume_size | 10000 | | performance_point_lock_rwlock_enabled | ON | +---------------------------------------+-------+CatatanJika variabel ini tidak ditemukan, periksa apakah instance RDS Anda memenuhi persyaratan versi yang dijelaskan dalam bagian Prasyarat.
Kueri tabel events_statements_summary_by_digest_supplement di database performance_schema untuk mendapatkan 10 Pernyataan SQL teratas berdasarkan berbagai dimensi. Contoh:
mysql> select * from events_statements_summary_by_digest_supplement limit 10; +--------------------+----------------------------------+-------------------------------------------+--------------+ | SCHEMA_NAME | DIGEST | DIGEST_TEXT | ELAPSED_TIME | ...... +--------------------+----------------------------------+-------------------------------------------+--------------+ | NULL | 6b787dd1f9c6f6c5033120760a1a82de | SELECT @@`version_comment` LIMIT ? | 932 | | NULL | 2fb4341654df6995113d998c52e5abc9 | SHOW SCHEMAS | 2363 | | NULL | 8a93e76a7846384621567fb4daa1bf95 | SHOW VARIABLES LIKE ? | 17933 | | NULL | dd148234ac7a20cb5aee7720fb44b7ea | SELECT SCHEMA ( ) | 1006 | | information_schema | 2fb4341654df6995113d998c52e5abc9 | SHOW SCHEMAS | 2156 | | information_schema | 74af182f3a2bd265678d3dadb53e08da | SHOW TABLES | 3161 | | information_schema | d3a66515192fcb100aaef6f8b6e45603 | SELECT * FROM `TABLE_STATISTICS` LIMIT ? | 2081 | | information_schema | b3726b7c4c4db4b309de2dbc45ff52af | SELECT * FROM `INDEX_STATISTICS` LIMIT ? | 2384 | | information_schema | dd148234ac7a20cb5aee7720fb44b7ea | SELECT SCHEMA ( ) | 129 | | test | 2fb4341654df6995113d998c52e5abc9 | SHOW SCHEMAS | 342 | +--------------------+----------------------------------+-------------------------------------------+--------------+Tabel berikut menjelaskan parameter dalam contoh sebelumnya.
Parameter
Deskripsi
SCHEMA_NAME
Nama database.
DIGEST
String hash 64-byte yang dihasilkan dari parameter DIGEST_TEXT.
DIGEST_TEXT
Ringkasan dari Pernyataan SQL.
ELAPSED_TIME
Total waktu yang dihabiskan untuk mengeksekusi Pernyataan SQL. Satuan: mikrodetik.
CPU_TIME
Waktu yang dihabiskan oleh CPU untuk mengeksekusi Pernyataan SQL. Satuan: mikrodetik.
SERVER_LOCK_TIME
Waktu yang ditempati oleh metadata locks pada server selama eksekusi Pernyataan SQL. Satuan: mikrodetik.
TRANSACTION_LOCK_TIME
Waktu yang ditempati oleh storage transaction locks selama eksekusi Pernyataan SQL. Satuan: mikrodetik.
MUTEX_SPINS
Jumlah mutex spins yang dipicu selama eksekusi Pernyataan SQL.
MUTEX_WAITS
Jumlah spin waits yang dipicu oleh mutexes selama eksekusi Pernyataan SQL.
RWLOCK_SPIN_WAITS
Jumlah spin waits yang dipicu oleh readers-write locks selama eksekusi Pernyataan SQL.
RWLOCK_SPIN_ROUNDS
Jumlah putaran di mana thread latar belakang berputar dalam siklus spin-wait yang dipicu oleh readers-write locks selama eksekusi Pernyataan SQL.
RWLOCK_OS_WAITS
Jumlah tunggu sistem operasi yang dipicu oleh readers-write locks selama eksekusi Pernyataan SQL.
DATA_READS
Jumlah kali sistem membaca data dari file data selama eksekusi Pernyataan SQL.
DATA_READ_TIME
Waktu yang dihabiskan untuk membaca data dari file data selama eksekusi Pernyataan SQL. Satuan: mikrodetik.
DATA_WRITES
Jumlah kali sistem menulis data ke file data selama eksekusi Pernyataan SQL.
DATA_WRITE_TIME
Waktu yang dihabiskan untuk menulis data ke file data selama eksekusi Pernyataan SQL. Satuan: mikrodetik.
REDO_WRITES
Jumlah kali sistem menulis data ke file log selama eksekusi Pernyataan SQL.
REDO_WRITE_TIME
Waktu yang dihabiskan untuk menulis data ke file log selama eksekusi Pernyataan SQL. Satuan: mikrodetik.
LOGICAL_READS
Jumlah kali sistem membaca halaman logis selama eksekusi Pernyataan SQL.
PHYSICAL_READS
Jumlah kali sistem membaca halaman fisik selama eksekusi Pernyataan SQL.
PHYSICAL_ASYNC_READS
Jumlah kali sistem membaca halaman fisik asinkron selama eksekusi Pernyataan SQL.
Kueri tabel IO_STATISTICS di database information_schema untuk mendapatkan informasi tentang operasi baca dan tulis data terbaru. Contoh:
mysql> select * from IO_STATISTICS limit 10; +---------------------+-----------+----------------+ | TIME | DATA_READ | DATA_READ_TIME | ...... +---------------------+-----------+----------------+ | 2019-08-08 09:56:53 | 73 | 983 | | 2019-08-08 09:56:57 | 0 | 0 | | 2019-08-08 09:59:17 | 0 | 0 | | 2019-08-08 10:00:55 | 4072 | 40628 | | 2019-08-08 10:00:59 | 0 | 0 | | 2019-08-08 10:01:09 | 562 | 5800 | | 2019-08-08 10:01:11 | 606 | 6910 | | 2019-08-08 10:01:13 | 609 | 6875 | | 2019-08-08 10:01:15 | 625 | 7077 | | 2019-08-08 10:01:17 | 616 | 5800 | +---------------------+-----------+----------------+Tabel berikut menjelaskan parameter dalam contoh sebelumnya.
Parameter
Deskripsi
TIME
Tanggal.
DATA_READ
Jumlah kali sistem membaca data.
DATA_READ_TIME
Total waktu yang dihabiskan untuk membaca data. Satuan: mikrodetik.
DATA_READ_MAX_TIME
Waktu maksimum yang dihabiskan untuk membaca data. Satuan: mikrodetik.
DATA_READ_BYTES
Total jumlah data yang dibaca. Satuan: byte.
DATA_WRITE
Jumlah kali sistem menulis data.
DATA_WRITE_TIME
Total waktu yang dihabiskan untuk menulis data. Satuan: mikrodetik.
DATA_WRITE_MAX_TIME
Waktu maksimum yang dihabiskan untuk menulis data. Satuan: mikrodetik.
DATA_WRITE_BYTES
Total jumlah data yang ditulis. Satuan: byte.