Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menyetel beban kerja tulis
Menerapkan load-balancing dan membebaskan instance penulis akan membantu beban kerja tulis Anda berkinerja lebih baik selama lonjakan tinggi. Untuk mencapai kinerja penulisan yang lebih baik pada konkurensi tinggi, ikuti langkah-langkah tambahan ini.
Pindahkan integritas referensial ke lapisan aplikasi
Meskipun pemeriksaan integritas referensial penting, dengan hyperscaling, mereka dapat merusak beban Anda. Untuk setiap penulisan, pemindaian tambahan harus dilakukan sebelum penulisan itu sendiri dijalankan, dan ini menghasilkan kinerja yang buruk. Jika aplikasi Anda memerlukan pemeriksaan integritas yang ketat, buat mereka ke dalam lapisan aplikasi untuk mencegahnya membatasi penulisan Anda.
Hindari menggunakan kunci primer yang berat
Jaga agar kunci utama Anda tetap terang. Mesin penyimpanan InnoDB menambahkan kunci utama ke setiap indeks lain yang Anda buat di tabel Anda. Ketika kunci utama Anda besar, itu mempengaruhi ukuran indeks. Penyimpanan dan pengambilan halaman data akan melambat jika kunci utama cukup besar. Contoh umum adalah penggunaan pengidentifikasi unik universal sebagai kunci utama. Ini bukan pendekatan yang baik jika Anda menargetkan kinerja pada lingkungan hyperscaled.
Gunakan pertukaran partisi untuk memuat data ke dalam tabel yang dipartisi
Jika Anda menulis kumpulan besar data ke dalam tabel yang dipartisi, kombinasi LOAD DATA FROM S3 dan pertukaran partisi
Hapus indeks yang tidak digunakan
InnoDB
Pastikan versi baris lama dibersihkan secara efisien
Dalam implementasi InnoDB dari kontrol konkurensi multiversi (MVCC), ketika catatan dimodifikasi, versi (lama) saat ini dari data yang dimodifikasi pertama kali dicatat sebagai catatan undo dalam log undo. Nilai panjang daftar riwayat (HLL) yang berkembang menunjukkan bahwa utas pengumpulan sampah InnoDB (utas pembersihan) tidak mengikuti beban kerja penulisan, atau pembersihan diblokir oleh kueri atau transaksi yang berjalan lama. Ketika pengumpulan sampah diblokir atau ditunda, database dapat mengembangkan lag pembersihan substansional yang dapat berdampak negatif pada kinerja kueri. Anda dapat menggunakan rekomendasi berikut untuk mengoptimalkan proses pembersihan.
-
Jaga transaksi tetap kecil.
-
Untuk kueri baca, gunakan tingkat isolasi READ COMMITTED.
-
Tingkatkan jumlah thread pembersihan (innodb_purge_threads dan innodb_purge_batch_size
). Perhatikan bahwa menyetel parameter ini memerlukan reboot. -
Pantau HLL secara teratur, dan selesaikan masalah beban kerja apa pun yang mencegah pengumpulan sampah berkembang.
Pastikan pencatatan tidak menyebabkan pertengkaran tambahan
Log kueri umum mencatat koneksi klien dan pemutusan juga sebagai tambahan untuk semua pernyataan yang diterima oleh server dalam urutan mereka diterima. Saat diaktifkan, logging sinkron, yang dapat menyebabkan penalti kinerja yang substansif pada sistem yang sibuk. Kecuali diperlukan, kami sarankan untuk menonaktifkan log umum.
Log kueri lambat mencatat pernyataan yang membutuhkan waktu lebih lama dari jumlah detik long_query_time