Nilai yang tidak tepat dari parameter kunci dapat memengaruhi performa instance ApsaraDB RDS untuk MySQL atau menyebabkan kesalahan pada aplikasi Anda. Topik ini memberikan saran penyetelan untuk parameter kunci.
Pendahuluan
ApsaraDB RDS untuk MySQL memungkinkan Anda menggunakan template parameter untuk mengatur nilai parameter sesuai skenario tertentu. Nilai parameter preset adalah nilai default. Dalam skenario nyata, Anda harus memodifikasi parameter, terutama parameter kunci, berdasarkan kebutuhan bisnis. Nilai yang tidak tepat dari parameter kunci dapat memengaruhi performa instance RDS atau menyebabkan kesalahan pada aplikasi Anda.
ApsaraDB RDS untuk MySQL menyediakan fitur diagnosis parameter. Fitur ini menganalisis pengaturan parameter berdasarkan status instance, template parameter, konsep referensi tambahan, rumus, serta pengalaman ahli, dan memberikan saran penyetelan parameter. Anda dapat menyetel parameter instance RDS berdasarkan fitur diagnosis parameter dan saran penyetelan yang disediakan dalam topik ini.
Anda dapat melihat nilai parameter default di Konsol ApsaraDB RDS.
Peringatan
Perubahan beberapa parameter dinamis, seperti parameter yang ruang lingkupnya adalah Global,Session di MySQL 8.0 dan MySQL 5.7, hanya berlaku setelah Anda menyambung ulang atau memulai ulang instans. Jika Anda memulai ulang instans, bisnis Anda akan sementara terputus dari instans. Kami sarankan Anda memulai ulang instans selama jam-jam sepi.
back_log
Versi yang didukung: MySQL 8.0, MySQL 5.7, MySQL 5.6, dan MySQL 5.5.
Apakah perlu me-restart instance setelah modifikasi parameter: Ya. Anda harus me-restart instance RDS agar modifikasi berlaku.
Apakah koneksi transient terjadi: Ya. Kami sarankan Anda memodifikasi parameter selama jam sepi.
Fungsionalitas: Parameter ini mengelola panjang antrian koneksi ketika ApsaraDB RDS untuk MySQL memproses sejumlah besar koneksi singkat. Jika jumlah permintaan koneksi yang menunggu di antrian melebihi nilai parameter back_log, ApsaraDB RDS untuk MySQL akan menolak permintaan koneksi baru. Untuk memproses sejumlah besar koneksi singkat, tingkatkan nilai parameter ini.
Gejala: Jika nilai parameter ini kecil, aplikasi mungkin mengalami kesalahan berikut:
SQLSTATE[HY000] [2002] Koneksi habis waktu;Saran: Atur parameter ini menjadi 3.000.
rpl_semi_sync_master_timeout
Versi yang didukung: MySQL 8.0, MySQL 5.7, dan MySQL 5.6.
Apakah perlu me-restart instance setelah modifikasi parameter: Tidak.
Apakah koneksi transient terjadi: Tidak.
Fungsionalitas: Instance RDS menggunakan mode replikasi semi-sinkron. Sebelum transaksi dikomit dari instance RDS utama, Anda harus menunggu hingga instance RDS sekunder menerima semua log biner dari transaksi tersebut. Jika periode tunggu melebihi nilai parameter ini, kesalahan timeout dilaporkan, dan mode replikasi instance RDS diturunkan menjadi replikasi asinkron. Dalam kasus ini, jika instance RDS sekunder menerima semua log biner dari instance RDS utama, mode replikasi instance RDS secara otomatis berubah menjadi replikasi semi-asinkron.
Saran: Atur parameter ini menjadi 1.000. Unit: milidetik. Nilai 1.000 sama dengan 1 detik. Jika instance RDS Anda memerlukan keandalan data yang tinggi, Anda dapat meningkatkan nilai parameter ini untuk mencegah penurunan dari replikasi semi-sinkron. Namun, jika Anda mengatur parameter ini ke nilai yang besar, instance RDS mungkin gagal memproses permintaan tulis untuk jangka waktu lama selama pelaksanaan transaksi besar. Akibatnya, komponen high availability (HA) sistem mendeteksi kegagalan instance, dan pergantian instance dipicu.
innodb_autoinc_lock_mode
Versi yang didukung: MySQL 8.0, MySQL 5.7, MySQL 5.6, dan MySQL 5.5.
Apakah perlu me-restart instance setelah modifikasi parameter: Ya. Anda harus me-restart instance RDS agar modifikasi berlaku.
Apakah koneksi transient terjadi: Ya. Kami sarankan Anda memodifikasi parameter selama jam sepi.
Fungsionalitas: Pada MySQL 5.1.22 dan versi lebih baru, parameter innodb_autoinc_lock_mode digunakan di InnoDB untuk mengelola kunci auto-increment untuk primary key auto-increment. Nilai valid:
0: mode tradisional. Dalam mode ini, pernyataan SQL memegang kunci auto-increment sebelum nilai auto-increment diperoleh, dan pernyataan SQL melepaskan kunci auto-increment di akhir eksekusi pernyataan. Mode ini sangat memengaruhi konkurensi penyisipan data.
1 (nilai default): mode berurutan. Dalam mode ini, pernyataan SQL memegang kunci auto-increment sebelum nilai auto-increment diperoleh. Jika pernyataan SQL dieksekusi untuk menyisipkan sejumlah tetap baris data, pernyataan SQL segera melepaskan kunci auto-increment setelah nilai auto-increment diperoleh. Jika pernyataan SQL dieksekusi untuk menyisipkan sejumlah tidak pasti baris data, pernyataan SQL melepaskan kunci auto-increment di akhir eksekusi pernyataan.
2: mode berseling. Dalam mode ini, pernyataan SQL memegang kunci auto-increment sebelum nilai auto-increment diperoleh. Setelah nilai auto-increment diperoleh, pernyataan SQL segera melepaskan kunci auto-increment tanpa memandang apakah sejumlah tetap baris data disisipkan.
Saran: Ubah nilai parameter ini menjadi 2. Ini mencegah deadlock AUTO-INC dan meningkatkan performa pernyataan INSERT … SELECT.
CatatanJika Anda mengatur parameter ini ke 2, Anda harus mengatur format log biner ke row.
query_cache_size
Versi yang didukung: MySQL 5.7, MySQL 5.6, dan MySQL 5.5.
Apakah perlu me-restart instance setelah modifikasi parameter: Tidak.
Apakah koneksi transient terjadi: Tidak.
Fungsionalitas: Parameter ini mengatur kapasitas memori cache query MySQL. Jika cache query diaktifkan, sistem akan memeriksa hasil query di dalam cache. Jika hasil query tersedia di cache, sistem langsung mengembalikan hasil tersebut. Namun, jika tidak tersedia, sistem akan menjalankan query untuk mendapatkan hasilnya. Operasi tulis seperti INSERT, UPDATE, dan DELETE, serta perubahan skema tabel, menyebabkan cache query menjadi tidak valid dan meningkatkan beban pada instance RDS. Jika data pada instance RDS jarang diperbarui, cache query dapat meningkatkan efisiensi query secara signifikan. Namun, jika instance RDS menangani banyak operasi tulis, mekanisme kunci cache query dapat menyebabkan konflik kunci yang sering, sehingga menurunkan efisiensi query SELECT.
Gejala: Sejumlah besar koneksi database berada dalam status berikut:
memeriksa cache query untuk query,menunggu kunci cache query, danmenyimpan hasil di cache query.Saran: Secara default, ApsaraDB RDS menonaktifkan cache query. Jika Anda mengaktifkan cache query dan mengalami gejala di atas, nonaktifkan cache query.
net_write_timeout
Versi yang didukung: MySQL 8.0, MySQL 5.7, MySQL 5.6, dan MySQL 5.5.
Perlu me-restart instance setelah modifikasi parameter: Tidak.
Koneksi transient terjadi: Tidak.
Fungsionalitas: Parameter ini menetapkan periode timeout yang ApsaraDB RDS tunggu sebelum mengirim blok ke klien.
Gejala: Jika nilai parameter ini kecil, klien mungkin mengalami kesalahan berikut:
"paket terakhir yang berhasil diterima dari server adalah milidetik yang lalu" atau "paket terakhir yang berhasil dikirim ke server adalah milidetik yang lalu"Saran: Atur parameter ini menjadi 60 detik, yang merupakan nilai default. Jika jaringan tidak stabil atau waktu yang lama diperlukan untuk klien memproses setiap blok, disarankan untuk meningkatkan nilai parameter ini guna menghindari pemutusan instance.
tmp_table_size
Versi yang didukung: MySQL 8.0, MySQL 5.7, MySQL 5.6, dan MySQL 5.5.
Apakah perlu me-restart instance setelah modifikasi parameter: Tidak.
Apakah koneksi transient terjadi: Tidak.
Fungsionalitas: Parameter ini menentukan ukuran maksimum tabel sementara internal dalam memori yang dialokasikan untuk setiap thread. Ukuran maksimum aktual tabel sementara internal ditentukan oleh nilai tmp_table_size atau max_heap_table_size, mana yang lebih kecil. Jika ukuran tabel sementara dalam memori melebihi ukuran maksimum, ApsaraDB RDS untuk MySQL secara otomatis mengonversi tabel menjadi tabel MyISAM pada disk, yang merupakan tabel InnoDB di MySQL 8.0. Saat mengoptimalkan pernyataan query, hindari penggunaan tabel sementara. Jika Anda harus menggunakan tabel sementara, pastikan tabel sementara disimpan di memori.
Gejala: Jika Anda menggunakan tabel sementara untuk pernyataan SQL yang kompleks yang berisi klausa GROUP BY atau DISTINCT dan tidak dapat dioptimalkan menggunakan pengindeksan, waktu yang lebih lama diperlukan untuk mengeksekusi pernyataan SQL.
Saran: Nilai default parameter ini adalah 2.097.152. Jika pernyataan SQL berisi sejumlah besar klausa GROUP BY atau DISTINCT dan instance RDS Anda memiliki memori yang cukup, tingkatkan nilai parameter tmp_table_size dan max_heap_table_size untuk meningkatkan performa query.
loose_rds_max_tmp_disk_space
Versi yang didukung: MySQL 5.6 dan MySQL 5.5.
Apakah perlu me-restart instance setelah modifikasi parameter: Tidak.
Apakah koneksi transient terjadi: Tidak.
Fungsionalitas: Parameter ini mengelola ukuran file sementara pada instance RDS.
Gejala: Jika ukuran file sementara melebihi nilai parameter loose_rds_max_tmp_disk_space, aplikasi dapat mengalami kesalahan berikut:
Tabel '/home/mysql/dataxxx/tmp/#sql_2db3_1' penuhSaran: Periksa apakah Anda dapat mengoptimalkan pernyataan SQL yang menyebabkan peningkatan ukuran file sementara. Jika instance Anda memiliki ruang yang cukup, tingkatkan nilai parameter ini untuk memastikan eksekusi pernyataan SQL.
loose_tokudb_buffer_pool_ratio
Versi MySQL yang didukung: 5.6.
Perlu me-restart instance setelah modifikasi parameter: Ya. Restart instance RDS Anda agar perubahan diterapkan.
Koneksi transient terjadi: Ya. Disarankan memodifikasi parameter selama jam sepi.
Fungsionalitas: Parameter ini menentukan ukuran memori buffer yang dapat digunakan oleh tabel TokuDB. Sebagai contoh, jika parameter
innodb_buffer_pool_sizediatur ke 1000 MB dan parametertokudb_buffer_pool_ratiodiatur ke 50 (yang menunjukkan 50%), maka ukuran memori buffer yang dapat digunakan oleh tabel TokuDB adalah 500 MB.Saran: Jika mesin TokuDB digunakan pada instance RDS, tingkatkan nilai parameter ini untuk meningkatkan performa akses tabel TokuDB.
loose_max_statement_time
Versi MySQL yang didukung: 5.6.
Apakah perlu me-restart instance setelah modifikasi parameter: Tidak.
Apakah koneksi transient terjadi: Tidak.
Fungsionalitas: Parameter ini mengatur durasi maksimum query pada instance RDS. Secara default, durasi query tidak dibatasi. Jika parameter ini dikonfigurasi dan durasi query melebihi batas yang ditentukan, query akan gagal.
Gejala: Jika durasi query melebihi nilai parameter ini, kesalahan berikut akan muncul:
ERROR 3006 (HY000): Eksekusi query terganggu, max_statement_time terlampauiCatatanSetelah parameter dimodifikasi, perubahan hanya berlaku untuk koneksi baru. Koneksi yang sudah ada harus tersambung ulang agar perubahan diterapkan.
Saran: Untuk mengelola durasi eksekusi pernyataan SQL, tentukan nilai untuk parameter ini. Unit: milidetik.
loose_rds_threads_running_high_watermark
Versi yang didukung: MySQL 5.6 dan MySQL 5.5.
Perlu me-restart instance setelah modifikasi parameter: Tidak.
Koneksi transient terjadi: Tidak.
Fungsionalitas: Parameter ini mengatur jumlah query konkuren. Sebagai contoh, jika Anda menetapkan nilai loose_rds_threads_running_high_watermark menjadi 100, total 100 query MySQL dapat dijalankan secara konkuren. Query tambahan akan ditolak.
Saran: Gunakan parameter ini untuk mengelola lonjakan permintaan dan beban tinggi selama jam sibuk guna melindungi instance RDS.
innodb_buffer_pool_size
Versi yang didukung: MySQL 8.0, MySQL 5.7, dan MySQL 5.6.
Apakah perlu me-restart instance setelah modifikasi parameter:
MySQL 8.0 dan MySQL 5.7: Tidak.
MySQL 5.6: Ya. Anda harus me-restart instance RDS agar modifikasi berlaku.
Apakah koneksi transient terjadi:
MySQL 8.0 dan MySQL 5.7: Tidak.
MySQL 5.6: Ya. Kami sarankan Anda memodifikasi parameter selama jam sepi.
Fungsionalitas: Parameter ini menentukan ukuran pool buffer InnoDB.
Saran: Atur parameter ini ke nilai yang diperoleh dengan menggunakan perhitungan
{DBInstanceClassMemory × 3/4}.
innodb_buffer_pool_instances
Versi yang didukung: MySQL 8.0, MySQL 5.7, dan MySQL 5.6.
Apakah perlu me-restart instance setelah modifikasi parameter: Ya. Anda harus me-restart instance RDS agar modifikasi berlaku.
Apakah koneksi transient terjadi: Ya. Kami sarankan Anda memodifikasi parameter selama jam sepi.
Fungsionalitas: Parameter ini membagi pool buffer InnoDB menjadi sejumlah instance tertentu ketika ukuran pool buffer InnoDB yang ditentukan oleh parameter innodb_buffer_pool_size lebih besar dari 1 GB. Instance yang dibagi dikelola secara individual dan mendukung pembacaan dan penulisan konkuren.
Saran: Atur parameter ini ke nilai yang diperoleh dengan menggunakan perhitungan
{LEAST(DBInstanceClassMemory/1073741824, 8)}.
table_open_cache_instances
Versi yang didukung: MySQL 8.0, MySQL 5.7, dan MySQL 5.6.
Apakah perlu me-restart instance setelah modifikasi parameter: Ya. Anda harus me-restart instance RDS agar modifikasi berlaku.
Apakah koneksi transient terjadi: Ya. Kami sarankan Anda memodifikasi parameter selama jam sepi.
Fungsionalitas: Parameter ini mempartisi cache tabel terbuka menjadi beberapa instans cache dengan ukuran tertentu yang dihitung menggunakan rumus berikut:
table_open_cache/table_open_cache_instancesuntuk mengurangi konten cache tabel di antara sesi.Saran: Atur parameter ini ke 16.
table_open_cache
Versi yang didukung: MySQL 8.0, MySQL 5.7, dan MySQL 5.6.
Apakah perlu me-restart instance setelah modifikasi parameter: Tidak.
Apakah koneksi transient terjadi: Tidak.
Fungsionalitas: Parameter ini menentukan jumlah maksimum tabel yang dapat disimpan terbuka oleh server dalam instance cache tabel. Jika nilai parameter ini terlalu kecil, performa query SQL mungkin terpengaruh dalam skenario konkurensi tinggi. Nilai besar dapat menyebabkan konsumsi memori tinggi. Saat Anda meningkatkan nilai parameter ini, Anda harus memperhatikan penggunaan memori instance RDS Anda.
Saran: Atur parameter ini ke nilai yang diperoleh dengan menggunakan perhitungan
{LEAST(DBInstanceClassMemory/1073741824 × 1024, 16384)}.
innodb_adaptive_hash_index
Versi yang didukung: MySQL 8.0, MySQL 5.7, dan MySQL 5.6.
Apakah perlu me-restart instance setelah modifikasi parameter: Tidak.
Apakah koneksi transient terjadi: Tidak.
Fungsionalitas: Parameter ini menentukan apakah fitur indeks hash adaptif dinonaktifkan atau diaktifkan. Indeks hash adaptif membantu Anda dengan cepat menemukan node daun di database berdasarkan kondisi query Anda dan mengurangi jumlah operasi I/O.
Gejala: Jika parameter ini diatur ke ON, dampak pada performa query bvariasi berdasarkan pernyataan SQL yang Anda eksekusi. Beberapa pernyataan (seperti pernyataan DDL) dapat menyebabkan pemeliharaan indeks hash adaptif. Akibatnya, eksekusi pernyataan SQL diblokir atau performa query menurun.
Saran: Atur parameter ini ke OFF. Untuk informasi lebih lanjut tentang cara memodifikasi parameter ini, lihat Praktik Terbaik pada Indeks Hash Adaptif ApsaraDB RDS untuk MySQL.
open_files_limit
Versi yang didukung: MySQL 8.0, MySQL 5.7, dan MySQL 5.6.
Apakah perlu me-restart instance setelah modifikasi parameter: Ya. Anda harus me-restart instance RDS agar modifikasi berlaku.
Apakah koneksi transient terjadi: Ya. Kami sarankan Anda memodifikasi parameter selama jam sepi.
Fungsionalitas: Parameter ini menentukan jumlah pegangan file yang dapat dibuka secara bersamaan oleh instance RDS. Ini juga memengaruhi konfigurasi parameter innodb_open_files.
Saran: Jika instans RDS Anda menjalankan MySQL 5.6, atur parameter ini ke 65535. Jika instans RDS Anda menjalankan MySQL 5.7 atau MySQL 8.0, atur parameter ini ke 655350. Jika instans RDS memiliki spesifikasi besar yang lebih besar dari atau sama dengan 32 core CPU dan memiliki sejumlah besar sesi aktif atau tabel, Anda dapat mengatur parameter
open_files_limitke nilai yang sedikit lebih besar dari jumlah file instans sebenarnya.
loose_innodb_rds_faster_ddl
Versi yang didukung: MySQL 8.0, MySQL 5.7, dan MySQL 5.6. Versi mesin minor yang didukung: 20200630 dan yang lebih baru.
Apakah perlu me-restart instance setelah modifikasi parameter: Tidak.
Apakah koneksi transient terjadi: Tidak.
Fungsionalitas: Parameter ini digunakan untuk mempercepat beberapa operasi DDL dan mengurangi dampak operasi DDL pada performa instance RDS Anda.
Saran: Aktifkan parameter ini untuk mengurangi dampak operasi DDL pada beban kerja Anda. Setelah Anda mengaktifkan parameter ini, mekanisme manajemen pool buffer yang dikembangkan oleh tim ApsaraDB RDS digunakan. Mekanisme ini mempercepat beberapa operasi DDL (seperti perubahan skema) dan mengurangi dampak operasi DDL pada beban kerja Anda.
innodb_thread_concurrency
Versi yang didukung: MySQL 8.0, MySQL 5.7, dan MySQL 5.6.
Apakah perlu me-restart instance setelah modifikasi parameter: Tidak.
Apakah koneksi transient terjadi: Tidak.
Fungsionalitas: Parameter ini menentukan jumlah maksimum thread yang diizinkan di InnoDB. Nilai 0 menunjukkan bahwa tidak ada batasan yang diberlakukan pada jumlah thread konkuren. Anda dapat memodifikasi parameter ini untuk menyelesaikan masalah performa yang disebabkan oleh konkurensi tinggi pada instance RDS Anda.
Saran: Jika Anda tidak mengalami masalah performa konkurensi tinggi, kami sarankan Anda mengatur nilai ini ke 0, yang menunjukkan bahwa konkurensi tidak terbatas.
binlog_transaction_dependency_history_size
Versi yang didukung: MySQL 8.0 untuk instance RDS yang menjalankan versi mesin minor 20210930 atau lebih baru, dan MySQL 5.7 untuk instance RDS yang menjalankan versi mesin minor 20211231 atau lebih baru.
Apakah perlu me-restart instance setelah modifikasi parameter: Tidak.
Apakah koneksi transient terjadi: Tidak.
Fungsionalitas: Parameter ini menentukan jumlah maksimum entri informasi transaksi yang di-hash yang dapat disimpan di memori. Setelah batas atas tercapai, semua informasi dihapus.
Gejala: Jika Anda mengatur parameter ini ke nilai yang terlalu kecil, konkurensi pemutaran paralel di instance RDS sekunder terpengaruh. Akibatnya, latensi replikasi terjadi antara instance RDS utama dan sekunder.
Saran: Atur parameter ini ke 500.000. Untuk informasi lebih lanjut tentang cara memodifikasi parameter ini, lihat Modifikasi Parameter WRITESET Terkait.
binlog_transaction_dependency_tracking
Versi yang didukung: MySQL 8.0 untuk instance RDS yang menjalankan versi mesin minor 20210930 atau lebih baru, dan MySQL 5.7 untuk instance RDS yang menjalankan versi mesin minor 20211231 atau lebih baru.
Apakah perlu me-restart instance setelah modifikasi parameter: Tidak.
Apakah koneksi transient terjadi: Tidak.
Fungsionalitas: Parameter ini menentukan bagaimana MySQL mengelola replikasi paralel. Jika Anda mengatur parameter ini ke WRITESET, konflik tingkat baris antara transaksi dapat dideteksi. Dengan cara ini, pemutaran paralel yang lebih cepat dapat dicapai di instance RDS sekunder.
Saran: Atur parameter ini ke WRITESET. Sebelum Anda memodifikasi parameter, Anda harus memodifikasi parameter
transaction_write_set_extraction. Untuk informasi lebih lanjut, lihat Modifikasi parameter WRITESET terkait.
transaction_write_set_extraction
Versi yang didukung: MySQL 8.0 dengan versi mesin minor 20210930 atau lebih baru dan MySQL 5.7 dengan versi mesin minor 20211231 atau lebih baru.
Apakah perlu me-restart instance setelah modifikasi parameter: Tidak.
Apakah koneksi transient terjadi: Tidak.
Fungsionalitas: Parameter ini menentukan algoritma hash yang digunakan oleh WRITESET.
Saran: Atur parameter ini ke XXHASH64. Untuk informasi lebih lanjut, lihat Modifikasi Parameter WRITESET Terkait.
slave_parallel_workers
Versi yang didukung: MySQL 8.0, MySQL 5.7, dan MySQL 5.6.
Apakah perlu me-restart instance setelah modifikasi parameter: Tidak.
Apakah koneksi transient terjadi: Tidak.
Fungsionalitas: Parameter ini menentukan jumlah thread replay pada instance RDS sekunder. Jika Anda mengatur parameter ini ke nilai kecil, efisiensi pemutaran paralel pada instance RDS sekunder mungkin terpengaruh.
Saran: Atur parameter ini ke nilai yang diperoleh dengan menggunakan perhitungan
{GREATEST(DBInstanceClassCPU, 8)}.
innodb_max_dirty_pages_pct_lwm
Versi yang didukung: MySQL 8.0, MySQL 5.7, dan MySQL 5.6.
Apakah perlu me-restart instance setelah modifikasi parameter: Tidak.
Apakah koneksi transient terjadi: Tidak.
Fungsionalitas: Parameter ini menentukan persentase. Jika proporsi halaman kotor dalam pool buffer lebih besar dari nilai parameter ini, operasi flushing dilakukan. Nilai 0 menunjukkan bahwa preflushing dinonaktifkan. Nilai parameter ini harus lebih kecil dari nilai parameter innodb_max_dirty_pages_pct.
Saran: Atur parameter ini ke 10.
eq_range_index_dive_limit
Versi yang didukung: MySQL 8.0, MySQL 5.7, dan MySQL 5.6.
Apakah perlu me-restart instance setelah modifikasi parameter: Tidak.
Apakah koneksi transient terjadi: Tidak.
Fungsionalitas: Parameter ini menentukan jumlah maksimum rentang ekuivalen. Jika jumlah rentang ekuivalen dari kondisi ekuivalen dalam query lebih besar dari atau sama dengan nilai parameter ini, pengoptimal menggunakan statistik untuk menghitung rencana eksekusi. Jika jumlah rentang ekuivalen dari kondisi ekuivalen dalam query kurang dari nilai parameter ini, pengoptimal menggunakan metode index dive untuk melakukan sampling data dan mendapatkan statistik.
Contoh:
col_name IN(val1, ..., valN) col_name = val1 OR ... OR col_name = valNJumlah N rentang ekuivalen termasuk di dalamnya.
Untuk informasi lebih lanjut tentang parameter ini, lihat Dokumentasi Resmi MySQL.
Saran: Atur parameter ini ke 10 untuk instance RDS yang menjalankan MySQL 5.6 dan 100 untuk instance RDS yang menjalankan MySQL 5.7 dan MySQL 8.0.
innodb_flush_neighbors
Versi yang didukung: MySQL 8.0, MySQL 5.7, dan MySQL 5.6.
Apakah perlu me-restart instance setelah modifikasi parameter: Tidak.
Apakah koneksi transient terjadi: Tidak.
Fungsionalitas: Parameter ini menentukan apakah halaman kotor di extent yang sama dengan halaman kotor yang dibuang dari pool buffer InnoDB tertentu juga akan dibuang. Nilai valid:
0: Halaman kotor di extent yang sama dengan halaman kotor yang ditentukan tidak dibuang.
1: Halaman kotor di extent yang sama dengan halaman kotor yang ditentukan atau halaman kotor tetangga dibuang.
2: Semua halaman kotor di extent yang sama dengan halaman kotor yang ditentukan dibuang.
Saran: Atur parameter ini ke 0.
innodb_lock_wait_timeout
Versi yang didukung: MySQL 8.0, MySQL 5.7, dan MySQL 5.6.
Apakah perlu me-restart instance setelah modifikasi parameter: Tidak.
Apakah koneksi transient terjadi: Tidak.
Fungsionalitas: Parameter ini menentukan waktu tunggu transaksi InnoDB untuk kunci baris sebelum transaksi dibatalkan. Unit: detik.
Saran: Atur parameter ini ke 50.
innodb_lru_scan_depth
Versi yang didukung: MySQL 8.0, MySQL 5.7, dan MySQL 5.6.
Apakah perlu me-restart instance setelah modifikasi parameter: Tidak.
Apakah koneksi transient terjadi: Tidak.
Fungsionalitas: Parameter ini menentukan kedalaman pemindaian thread page-cleaner yang digunakan untuk memindai daftar halaman Least Recently Used (LRU) di pool buffer. Parameter ini memengaruhi operasi flushing pool buffer.
Saran: Atur parameter ini ke nilai yang diperoleh dengan menggunakan perhitungan
{LEAST(DBInstanceClassMemory/1048576/8, 8192)}.
innodb_purge_threads
Versi yang didukung: MySQL 8.0, MySQL 5.7, dan MySQL 5.6.
Apakah perlu me-restart instance setelah modifikasi parameter: Ya. Anda harus me-restart instance RDS agar modifikasi berlaku.
Apakah koneksi transient terjadi: Ya. Kami sarankan Anda memodifikasi parameter selama jam sepi.
Fungsionalitas: Parameter ini menentukan jumlah thread latar belakang yang digunakan InnoDB untuk membersihkan catatan undo. Nilai besar meningkatkan efisiensi pembersihan catatan undo. Ini mencegah akumulasi file undo. Dalam beberapa kasus, nilai besar meningkatkan efisiensi operasi DML dan query.
Saran: Atur parameter ini ke nilai yang diperoleh dengan menggunakan perhitungan
LEAST(DBInstanceClassMemory/1073741824, 8).
innodb_log_file_size
Versi yang didukung: MySQL 8.0, MySQL 5.7, dan MySQL 5.6.
Apakah perlu me-restart instance setelah modifikasi parameter: Ya. Anda harus me-restart instance RDS agar modifikasi berlaku.
Apakah koneksi transient terjadi: Ya. Kami sarankan Anda memodifikasi parameter selama jam sepi.
Fungsionalitas:
Parameter ini menentukan ukuran setiap file log dalam grup log redo. Ukuran total file log tidak boleh melebihi 512 GB. Ukuran total ditentukan oleh parameter
innodb_log_file_size * innodb_log_files_in_group. Nilai default parameter ini adalah 48 MB.Pada umumnya, ukuran file log harus cukup besar agar server dapat menangani permintaan tulis selama lebih dari satu jam. Ini membantu mencapai keseimbangan beban kerja selama jam sibuk dan jam sepi. Jika nilai parameter ini besar, jumlah refresh checkpoint yang diperlukan di pool buffer kecil. Ini mengonsumsi lebih sedikit sumber daya I/O disk. Namun, jika ukuran file log terlalu besar, waktu yang diperlukan untuk pemulihan dari kegagalan menjadi lama.
Saran: Konfigurasikan parameter ini berdasarkan spesifikasi instance Anda.
innodb_sync_array_size
Versi yang didukung: MySQL 8.0, MySQL 5.7, dan MySQL 5.6.
Apakah perlu me-restart instance setelah modifikasi parameter: Ya. Anda harus me-restart instance RDS agar modifikasi berlaku.
Apakah koneksi transient terjadi: Ya. Kami sarankan Anda memodifikasi parameter selama jam sepi.
Fungsionalitas: Parameter ini mendefinisikan ukuran array mutex atau kunci tunggu. Meningkatkan nilai ini meningkatkan konkurensi dalam beban kerja dengan sejumlah besar thread yang menunggu. Anda harus mengonfigurasi parameter ini saat memulai instance RDS Anda. Pengaturan parameter ini tidak dapat diubah. Kami sarankan Anda mengatur parameter ini ke nilai besar untuk beban kerja yang sering menghasilkan sejumlah besar thread yang menunggu. Pada umumnya, jika jumlah thread yang menunggu lebih besar dari 768, Anda dapat meningkatkan nilai parameter ini.
Saran: Atur parameter ini ke 128.
innodb_page_cleaners
Versi yang didukung: MySQL 8.0 dan MySQL 5.7.
Apakah perlu me-restart instance setelah modifikasi parameter: Ya. Anda harus me-restart instance RDS agar modifikasi berlaku.
Apakah koneksi transient terjadi: Ya. Kami sarankan Anda memodifikasi parameter selama jam sepi.
Fungsionalitas: Parameter ini menentukan jumlah thread page-cleaner yang digunakan untuk membersihkan halaman kotor dari instance pool buffer. Nilai default parameter ini adalah 4. Jika jumlah thread cleaner halaman melebihi jumlah instance pool buffer, sistem mengatur parameter innodb_page_cleaners ke nilai parameter innodb_buffer_pool_instances.
Saran: Atur parameter ini ke 8.
innodb_open_files
Versi yang didukung: MySQL 8.0, MySQL 5.7, dan MySQL 5.6.
Apakah perlu me-restart instance setelah modifikasi parameter: Ya. Anda harus me-restart instance RDS agar modifikasi berlaku.
Apakah koneksi transient terjadi: Ya. Kami sarankan Anda memodifikasi parameter selama jam sepi.
Fungsionalitas: Parameter ini menentukan jumlah maksimum pegangan file yang dapat dibuka oleh InnoDB secara bersamaan.
Gejala: Jika nilai parameter ini kecil, kesalahan berikut yang memengaruhi performa instance mungkin terjadi:
[Warning] [MY-012152] [InnoDB] File terbuka * melebihi batas *Saran: Atur parameter ini ke 20.000.
default_time_zone
Versi yang didukung: MySQL 8.0, MySQL 5.7, dan MySQL 5.6.
Apakah perlu me-restart instance setelah modifikasi parameter: Ya. Anda harus me-restart instance RDS agar modifikasi berlaku.
Apakah koneksi transient terjadi: Ya. Kami sarankan Anda memodifikasi parameter selama jam sepi.
Fungsionalitas: Parameter ini menentukan zona waktu default.
Gejala: Jika parameter ini dibiarkan kosong, operasi yang dilakukan oleh aplikasi atau database mungkin tidak konsisten dalam waktu. Misalnya, aplikasi yang menyediakan layanan lintas beberapa zona waktu mungkin salah mengonversi nilai waktu atau mencatat timestamp yang tidak konsisten. Selain itu, konversi waktu atau penyesuaian zona waktu yang sering dapat mengakibatkan beban komputasi tinggi dan penggunaan CPU tinggi.
Saran: Konfigurasikan parameter ini berdasarkan kebutuhan bisnis Anda. Untuk informasi lebih lanjut tentang cara memodifikasi parameter ini, lihat Praktik Terbaik Parameter time_zone di ApsaraDB RDS untuk MySQL.
general_log
Versi yang didukung: MySQL 8.0, MySQL 5.7, dan MySQL 5.6.
Apakah perlu me-restart instance setelah modifikasi parameter: Tidak.
Apakah koneksi transient terjadi: Tidak.
Fungsionalitas: Parameter ini menentukan apakah fitur log query umum diaktifkan.
Gejala: Jika Anda mengaktifkan fitur log query umum, beberapa kesalahan muncul. Untuk informasi lebih lanjut, lihat FAQ tentang Fitur Log Query Umum ApsaraDB RDS untuk MySQL.
Saran: Atur parameter ini ke OFF.
innodb_io_capacity
Versi yang didukung: MySQL 8.0, MySQL 5.7, dan MySQL 5.6.
Apakah perlu me-restart instance setelah modifikasi parameter: Tidak.
Apakah koneksi transient terjadi: Tidak.
Fungsionalitas: Parameter ini menentukan jumlah maksimum operasi I/O yang diizinkan oleh InnoDB per detik untuk setiap tugas latar belakang.
Saran: Atur parameter ini ke 20.000.
innodb_io_capacity_max
Versi yang didukung: MySQL 8.0, MySQL 5.7, dan MySQL 5.6.
Apakah perlu me-restart instance setelah modifikasi parameter: Tidak.
Apakah koneksi transient terjadi: Tidak.
Fungsionalitas: Parameter ini menentukan IOPS maksimum InnoDB untuk tugas latar belakang ketika operasi flushing tertinggal.
Saran: Atur parameter ini ke 40.000.
innodb_change_buffering
Versi yang didukung: MySQL 8.0, MySQL 5.7, dan MySQL 5.6.
Apakah perlu me-restart instance setelah modifikasi parameter: Tidak.
Apakah koneksi transient terjadi: Tidak.
Fungsionalitas: Parameter ini menunda operasi tulis pada indeks level-2 untuk mengonversi I/O acak menjadi I/O berurutan. Ini meningkatkan keuntungan performa pada hard disk drive (HDD) tetapi membatasi keuntungan performa pada perangkat keras terbaru. Kami sarankan Anda menonaktifkan parameter ini.
Saran: Atur parameter ini ke none.
innodb_parallel_read_threads
Versi yang didukung: MySQL 8.0 dengan versi mesin minor 20200831 atau lebih baru.
Apakah perlu me-restart instance setelah modifikasi parameter: Tidak.
Apakah koneksi transient terjadi: Tidak.
Fungsionalitas: Parameter ini menentukan jumlah thread konkuren untuk pemindaian primary key. Namun, parameter ini memiliki bug. Kami sarankan Anda menonaktifkan parameter ini.
Saran: Atur parameter ini ke 0.
innodb_ft_cache_size
Versi yang didukung: MySQL 8.0, MySQL 5.7, dan MySQL 5.6.
Apakah perlu me-restart instance setelah modifikasi parameter: Ya.
Apakah koneksi transient terjadi: Ya. Kami sarankan Anda memodifikasi parameter selama jam sepi.
Fungsionalitas: Parameter ini menentukan ukuran memori untuk indeks teks penuh setiap tabel. Unit: byte.
Saran: Atur parameter ini ke 8.000.000.
innodb_ft_total_cache_size
Versi yang didukung: MySQL 8.0, MySQL 5.7, dan MySQL 5.6.
Apakah perlu me-restart instance setelah modifikasi parameter: Ya.
Apakah koneksi transient terjadi: Ya. Kami sarankan Anda memodifikasi parameter selama jam sepi.
Fungsionalitas: Parameter ini menentukan ukuran memori untuk indeks teks penuh instance RDS. Unit: byte.
Saran: Atur parameter ini ke 640.000.000.
innodb_ft_result_cache_limit
Versi yang didukung: MySQL 8.0, MySQL 5.7, dan MySQL 5.6.
Apakah perlu me-restart instance setelah modifikasi parameter: Tidak.
Apakah koneksi transient terjadi: Tidak.
Fungsionalitas: Parameter ini menentukan ukuran memori untuk set hasil query setiap indeks teks penuh. Unit: byte.
Saran: Atur parameter ini ke 2.000.000.000.
thread_pool_enabled
Versi yang didukung: MySQL 8.0, MySQL 5.7, dan MySQL 5.6.
Apakah perlu me-restart instance setelah modifikasi parameter: Tidak.
Apakah koneksi transient terjadi: Tidak.
Fungsionalitas: Parameter ini menentukan apakah fitur thread pool diaktifkan.
Saran: Atur parameter ini ke ON.
thread_pool_size
Versi yang didukung: MySQL 8.0 dan MySQL 5.7.
Apakah perlu me-restart instance setelah modifikasi parameter: Tidak.
Apakah koneksi transient terjadi: Tidak.
Fungsionalitas: Parameter ini menentukan jumlah grup thread dalam thread pool.
Saran: Atur parameter ini ke nilai yang diperoleh dengan menggunakan perhitungan
{LEAST(DBInstanceClassCPU × 2, 64)}.
thread_pool_oversubscribe
Versi yang didukung: MySQL 8.0, MySQL 5.7, dan MySQL 5.6.
Apakah perlu me-restart instance setelah modifikasi parameter: Tidak.
Apakah koneksi transient terjadi: Tidak.
Fungsionalitas: Parameter ini menentukan jumlah maksimum thread aktif di setiap grup thread dalam thread pool.
Saran: Atur parameter ini ke 32.
thread_stack
Versi yang didukung: MySQL 8.0, MySQL 5.7, dan MySQL 5.6.
Apakah perlu me-restart instance setelah modifikasi parameter: Ya.
Apakah koneksi transient terjadi: Ya. Kami sarankan Anda memodifikasi parameter selama jam sepi.
Fungsionalitas: Parameter ini menentukan kedalaman stack setiap thread pengguna. Jika Anda mengatur parameter ini ke nilai kecil, query SQL rekursif yang dalam mungkin gagal.
Saran: Atur parameter ini ke 1.048.576.
performance_schema
Versi yang didukung: MySQL 8.0, MySQL 5.7, dan MySQL 5.6.
Apakah perlu me-restart instance setelah modifikasi parameter: Ya.
Apakah koneksi transient terjadi:
Fungsionalitas: Parameter ini menentukan apakah fitur Performance Schema diaktifkan. Fitur ini memantau jalannya instance RDS tetapi dapat menyebabkan overhead memori dan masalah performa. Kami sarankan Anda menonaktifkan parameter ini.
Saran: Atur parameter ini ke OFF.