Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Praktik Terbaik untuk Membuat Indeks di Tabel MySQL Anda – Rolling Index Builds

Dengan memiliki indeks yang sesuai pada tabel MySQL Anda, Anda dapat sangat meningkatkan kinerja kueri SELECT. Tapi, tahukah Anda bahwa menambahkan indeks ke tabel Anda sendiri adalah operasi yang mahal, dan mungkin membutuhkan waktu lama untuk menyelesaikannya tergantung pada ukuran tabel Anda? Selama waktu ini, Anda juga mungkin mengalami penurunan kinerja kueri karena sumber daya sistem Anda juga sibuk dalam pekerjaan pembuatan indeks. Dalam posting blog ini, kami membahas pendekatan untuk mengoptimalkan proses pembuatan indeks MySQL sedemikian rupa sehingga beban kerja reguler Anda tidak terpengaruh.

Pembuatan Indeks Bergulir MySQL

Kami menyebut pendekatan ini sebagai 'Pembuatan Indeks Bergulir' - jika Anda memiliki kumpulan replika master-slave MySQL, Anda dapat membuat indeks satu node pada satu waktu secara bergulir. Anda harus membuat indeks hanya pada node slave sehingga kinerja master tidak terpengaruh. Ketika pembuatan indeks selesai pada budak, kami menurunkan master saat ini dan mempromosikan salah satu budak yang up-to-date sebagai master baru. Pada saat ini, pembangunan indeks berlanjut pada node master asli (yang sekarang menjadi slave). Akan ada durasi singkat (puluhan detik) selama Anda akan kehilangan konektivitas ke database karena failover, tetapi ini dapat diatasi dengan melakukan percobaan ulang tingkat aplikasi.

Manfaat Kinerja Pembuatan Indeks Bergulir

Kami melakukan eksperimen kecil untuk memahami manfaat kinerja Pembuatan Indeks Bergulir.

Pengujian menggunakan dataset MySQL yang dibuat menggunakan Sysbench yang memiliki 3 tabel dengan masing-masing 50 juta baris. Kami membuat beban pada master MySQL dengan 30 klien yang menjalankan beban kerja seimbang (50% membaca dan 50% menulis) selama 10 menit, dan pada saat yang sama, membuat indeks sekunder sederhana di salah satu tabel dalam dua skenario:

  1. Membuat indeks langsung di master
  2. Membuat indeks pada slave

Konfigurasi Test Bed MySQL

Jenis Instance MySQL Instance EC2 m4.large dengan RAM 8GB
Jenis Penerapan 2 Set Master-Slave Node dengan Replikasi Semisinkron
Versi MySQL 5.7.25

Hasil Performa

Skenario Throughput Beban Kerja (Kueri Per Detik) Latensi Persentil ke-95
Pembuatan Indeks pada Master 453.63 670 md
Pembuatan Indeks Bergulir 790.03 390 md

Bawa pulang

Dengan menjalankan pembuatan indeks langsung di master MySQL, kami hanya dapat mengalami 60% throughput yang dicapai dengan menjalankan pembuatan indeks pada slave MySQL melalui operasi bergulir. Latensi kueri persentil ke-95 juga 1,8 kali lebih tinggi saat pembuatan indeks terjadi di server master.

Praktik Terbaik untuk Membuat Indeks di Tabel #MySQL AndaKlik Untuk Tweet

Mengotomatiskan Pembuatan Indeks Bergulir

ScaleGrid mengotomatiskan Pembuatan Rolling Index untuk penerapan MySQL Anda dengan antarmuka pengguna yang sederhana untuk memulainya.

Di UI di atas, Anda dapat memilih nama Database dan Tabel, dan 'Tambah Indeks' sebagai Operasi Ubah Tabel. Kemudian, tentukan Nama Kolom dan Nama Indeks, dan Perintah Ubah Tabel akan dibuat dan ditampilkan untuk Anda. Setelah Anda mengeklik Buat, pembuatan indeks akan dilakukan satu per satu secara terus-menerus.

Selain itu, ScaleGrid juga mendukung operasi Alter Table sederhana lainnya seperti menambahkan kolom baru ke tabel Anda secara bergulir. Nantikan postingan blog saya selanjutnya dengan detail lebih lanjut!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Perbaiki "ERROR 1136 (21S01):Jumlah kolom tidak cocok dengan jumlah nilai pada baris 2" saat menggunakan Pernyataan VALUES di MySQL

  2. Bagaimana cara memulai MySQL dengan --skip-grant-tables?

  3. Menginstal MySQL di CentOS 7

  4. Pulihkan database mysql dari file .frm

  5. DATE_SUB() Contoh – MySQL