Saat menjalankan kueri yang melibatkan sejumlah besar data, lapisan SQL mengonsumsi banyak sumber daya komputasi karena membaca data dari lapisan mesin penyimpanan dan melakukan komputasi. Untuk meningkatkan kinerja kueri, PolarDB for MySQL menyediakan fitur penelusuran cepat yang mendorong optimiser turun ke lapisan mesin penyimpanan. Topik ini menjelaskan fitur penelusuran cepat.
Prasyarat
Versi kluster PolarDB for MySQL Anda adalah 8.0, dengan versi revisi memenuhi persyaratan berikut:
8.0.1.1.5 atau lebih baru
8.0.2.2.0 atau lebih baru
Untuk informasi tentang cara melihat versi kluster Anda, lihat Kueri versi mesin.
Latar Belakang
Pada Edisi Komunitas MySQL 8.0.13, operasi COUNT (*) tidak dieksekusi oleh engine InnoDB, sehingga menyebabkan overhead kinerja yang signifikan. Pada Edisi Komunitas MySQL 8.0.18, catatan pada halaman InnoDB dapat ditelusuri, tetapi tidak sesuai dengan indeks yang dipilih oleh optimiser; sebagai gantinya, indeks kunci utama digunakan.
PolarDB for MySQL menyediakan fitur penelusuran cepat yang memungkinkan catatan pada halaman untuk ditelusuri berdasarkan indeks yang dipilih oleh optimiser. Fitur ini mengurangi waktu penahanan kunci halaman yang disebabkan oleh pengambilan data dari tabel dan pemulihan versi oleh Multiversion Concurrency Control (MVCC).
Menggunakan fitur penelusuran cepat
Fitur penelusuran cepat tersedia secara langsung pada kluster PolarDB for MySQL yang didukung.
Uji Kinerja
Dalam uji kinerja ini, skema TPC-H digunakan. Jalankan pernyataan EXPLAIN untuk melihat rencana eksekusi kueri TPC-H.
mysql> EXPLAIN SELECT COUNT(*) FROM lineitem\G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: lineitem
partitions: NULL
type: index
possible_keys: NULL
key: i_l_shipdate
key_len: 4
ref: NULL
rows: 59.440.464
filtered: 100,00
Extra: Using indexHasil Pengujian
Pengujian TPC-H dilakukan dengan faktor skala 10. Kluster PolarDB, dengan fitur penelusuran cepat diaktifkan, menunjukkan kinerja yang lebih baik dibandingkan Edisi Komunitas MySQL 8.0.13 dan 8.0.18, seperti terlihat pada gambar berikut. Parameter innodb_parallel_read_threads diatur ke 1.
FAQ
Berapakah nilai default dari innodb_parallel_read_threads di PolarDB for MySQL?
Nilai default dari innodb_parallel_read_threads adalah 0. Untuk informasi lebih lanjut, lihat Konfigurasikan parameter kluster dan node.