全部产品
Search
文档中心

PolarDB:Tentukan kebijakan pengumpulan statistik

更新时间:Jul 02, 2025

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.

  1. Pernyataan SQL yang mencakup klausa WHERE (RAND() < 3.9623395E-4).

  2. Pernyataan SQL di mana alamat IP ditetapkan sebagai null dalam komentar.

  3. Pernyataan SQL yang mencakup fungsi HYPERLOGLOG.

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:

    1. 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.

    2. 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

  1. 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.

  2. Untuk segera menghentikan tugas pengumpulan statistik, ikuti langkah-langkah berikut:

    1. Eksekusi pernyataan show full physical_processlist where info like '%rand%'; untuk melihat pernyataan SQL yang sedang dieksekusi pada node data.

    2. 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.