Topik ini menjelaskan kebijakan yang dapat digunakan untuk mengumpulkan statistik serta memberikan rekomendasi untuk mengonfigurasi pengumpulan statistik.
Kualitas rencana eksekusi kueri SQL sangat mempengaruhi performa database. Untuk menyediakan statistik yang akurat bagi optimalisasi berbasis biaya (CBO) guna menghasilkan rencana eksekusi terbaik, PolarDB-X mengumpulkan statistik di latar belakang.
Kebijakan pengumpulan statistik
Tabel berikut menjelaskan kebijakan pengumpulan statistik yang didukung oleh PolarDB-X.
Kebijakan | Frekuensi pengumpulan | Jenis pernyataan SQL | Parameter |
Analisis otomatis | Sekali seminggu, dijadwalkan antara pukul 02:00 hingga 05:00 pada hari tertentu. |
| ENABLE_BACKGROUND_STATISTIC_COLLECTION |
Kueri pada INFORMATION_SCHEMA | Sekali sehari, dijadwalkan antara pukul 02:00 hingga 05:00. | SELECT table_schema, table_name, table_rows FROM information_schema.tables WHERE table_schema IN (xxx,xxx,xxx....) AND table_name IN (yyy,yyy,yyy...) | N/A |
Pengumpulan umpan balik waktu nyata | Pengumpulan statistik dipicu ketika jumlah baris data yang dimasukkan atau dihapus melebihi 20% dari jumlah baris data yang sebelumnya disimpan dalam tabel. | Persyaratan sama dengan persyaratan kebijakan analisis otomatis. | N/A |
Masalah
Jika volume data sebuah tabel besar, IOPS pada node data meningkat selama jam-jam tertentu yang ditetapkan untuk pengumpulan statistik.
Jika IOPS meningkat di luar jam-jam pengumpulan statistik, masalah berikut dapat terjadi:
Volume data tabel terlalu besar sehingga tugas pengumpulan statistik membutuhkan waktu lama untuk menyelesaikan satu tabel logis tunggal. Akibatnya, tugas tersebut melampaui batas waktu yang telah ditentukan.
Pengumpulan statistik waktu nyata sedang dilakukan. Jika jumlah data yang diperbarui terlalu besar dan sistem memerlukan waktu lama untuk mengimpor data yang diperbarui, pengumpulan statistik waktu nyata akan dipicu.
Saran
Jika Anda tidak ingin mengumpulkan statistik selama jam-jam pagi buta, atur parameter ENABLE_BACKGROUND_STATISTIC_COLLECTION menjadi False di halaman Pengaturan Parameter di konsol PolarDB-X. Pengaturan ini menonaktifkan fitur pengumpulan statistik terjadwal dan fitur pengumpulan statistik waktu nyata. Jika kedua fitur dinonaktifkan, disarankan untuk secara manual mengeksekusi pernyataan
analyze table [table_name];secara berkala untuk mengumpulkan statistik selama jam-jam sepi.Untuk segera menghentikan tugas pengumpulan statistik, ikuti langkah-langkah berikut:
Eksekusi pernyataan
show full physical_processlist where info like '%rand%';untuk melihat pernyataan SQL yang sedang dieksekusi pada node data.Eksekusi pernyataan kill untuk menghentikan kueri SQL yang dilakukan untuk mengumpulkan statistik. Sebagai contoh, Anda dapat mengeksekusi
kill '0-0-222';untuk menghentikan kueri SQL yang sesuai. Dalam '0-0-222', angka 0 pertama menunjukkan ID node data, angka 0 kedua menunjukkan ID shard database, dan 222 menunjukkan ID pernyataan SQL yang ingin Anda hentikan.