Parameter innodb_buffer_pool_size menentukan ukuran kolam buffer InnoDB. Anda dapat menyesuaikan parameter ini untuk meningkatkan kinerja instans ApsaraDB RDS for MySQL Anda.
Prasyarat
Topik ini berlaku untuk edisi instans berikut:
-
RDS High-availability Edition
-
RDS Basic Edition
-
RDS Cluster Edition
Batasan
-
Anda tidak dapat memodifikasi secara manual parameter
innodb_buffer_pool_sizeuntuk instans ApsaraDB RDS for MySQL Serverless. Instans tersebut secara otomatis menyesuaikan ukuran kolam buffer InnoDB saat spesifikasi instansnya berubah. -
Jika parameter
innodb_buffer_pool_sizeuntuk instans ApsaraDB RDS for MySQL diatur terlalu tinggi, hal ini dapat menyebabkan error out of memory (OOM) dan memicu failover. Untuk mencegah hal ini, konfigurasikan ukuran kolam buffer sesuai dengan nilai maksimum yang direkomendasikan dalam topik ini.
Kasus penggunaan
Kecuali jika memori terbatas, tingkatkan parameter ini untuk mengoptimalkan kinerja database.
-
Tingkatkan ukuran: Jika server memiliki memori yang cukup, peningkatan
innodb_buffer_pool_sizedapat secara signifikan mengurangi I/O disk. Jika data yang dikueri dapat disimpan sepenuhnya atau sebagian besar di memori, CPU lebih sedikit menunggu I/O disk, sehingga mengurangi pemanfaatan CPU secara keseluruhan. Sebagai contoh, untuk pernyataan UPDATE yang sering dieksekusi, kolam buffer yang lebih besar mengurangi ketergantungan pada disk dan meringankan kontensi kunci baris. Hal ini meningkatkan kinerja pembaruan data, terutama untuk batch catatan dalam jumlah besar. -
Kurangi ukuran: Jika memori terbatas atau aplikasi lain memerlukan memori dalam jumlah besar, kurangi nilai
innodb_buffer_pool_size.
Ukuran kolam buffer InnoDB
Anda dapat menyesuaikan ukuran kolam buffer InnoDB dengan mengatur parameter innodb_buffer_pool_size menggunakan rumus berikut:
{DBInstanceClassMemory*X/Y}
# Contoh: {DBInstanceClassMemory*7/10}
-
DBInstanceClassMemoryadalah memori dari spesifikasi instans RDS (variabel sistem), danX/Ymerepresentasikan rasio ukuran Buffer Pool terhadap memori instans. -
Kisaran yang dapat disesuaikan adalah dari 128 MB hingga 90% dari total memori instans (
DBInstanceClassMemory * 9 / 10).
Ukuran default kolam buffer InnoDB
Instans disk lokal berkinerja tinggi
Untuk spesifikasi berikut, ukuran default Buffer Pool adalah 80% hingga 90% dari memori instans. Untuk spesifikasi lainnya, ukuran default adalah 75% dari memori instans (memori instans * 3 / 4).
|
Instance family |
Tipe instans |
CPU dan memori |
Nilai default (MB) dan persentase |
|
General purpose |
rds.mysql.s3.large |
4 core, 8 GB |
7372 (90%) |
|
rds.mysql.m1.medium |
4 core, 16 GB |
14745 (90%) |
|
|
rds.mysql.c1.large |
8 core, 16 GB |
13107 (80%) |
|
|
rds.mysql.c1.xlarge |
8 core, 32 GB |
27852 (85%) |
|
|
rds.mysql.c2.xlarge |
16 core, 64 GB |
52428 (80%) |
|
|
rds.mysql.c2.xlp2 |
16 core, 96 GB |
78643 (80%) |
|
|
Dedicated |
mysql.x4.large.2 |
4 core, 16 GB |
14745 (90%) |
|
mysql.x8.large.2 |
4 core, 32 GB |
29491 (90%) |
|
|
mysql.x4.xlarge.2 |
8 core, 32 GB |
27852 (85%) |
|
|
mysql.x8.xlarge.2 |
8 core, 64 GB |
55705 (85%) |
|
|
mysql.x4.2xlarge.2 |
16 core, 64 GB |
52428 (80%) |
|
|
mysql.x8.2xlarge.2 |
16 core, 128 GB |
104857 (80%) |
Instans disk cloud
Spesifikasi tujuan umum
Ukuran default Buffer Pool adalah 75% dari memori instans (memori instans * 3 / 4).
Spesifikasi khusus
-
Ukuran default Buffer Pool:
(memori instans - memori yang dicadangkan sistem) * 3 / 4 -
Rumus untuk menghitung memori yang dicadangkan sistem adalah:
min{Memori Instans / 2, 2048} + max{CPU Instans * 64, Memori Instans / 64} + (Memori Instans / 64) + 285, dengan satuan memori instans dalam MB.
Tabel berikut mencantumkan ukuran default dan ukuran maksimum yang direkomendasikan untuk kolam buffer pada spesifikasi instans khusus.
|
Inti CPU |
Memori instans (MB) |
Ukuran kolam buffer |
|
|
Nilai default (MB) |
Nilai maksimum yang direkomendasikan (MB) |
||
|
2 |
4096 |
1024 |
1024 |
|
2 |
8192 |
4096 |
4096 |
|
2 |
16384 |
9216 |
10240 |
|
4 |
8192 |
4096 |
4096 |
|
4 |
16384 |
9216 |
10240 |
|
4 |
32768 |
21504 |
22528 |
|
8 |
16384 |
9216 |
10240 |
|
8 |
32768 |
21504 |
22528 |
|
8 |
65536 |
45056 |
48128 |
|
12 |
24576 |
15360 |
16384 |
|
12 |
49152 |
33792 |
35840 |
|
12 |
98304 |
69632 |
73728 |
|
16 |
32768 |
21504 |
22528 |
|
16 |
65536 |
45056 |
48128 |
|
16 |
131072 |
93184 |
99328 |
|
24 |
49152 |
32768 |
34816 |
|
24 |
98304 |
69632 |
73728 |
|
24 |
196608 |
140288 |
149504 |
|
32 |
65536 |
45056 |
47104 |
|
32 |
131072 |
93184 |
99328 |
|
32 |
262144 |
188416 |
200704 |
|
52 |
98304 |
67584 |
72704 |
|
52 |
196608 |
140288 |
149504 |
|
52 |
393216 |
283648 |
302080 |
|
64 |
262144 |
188416 |
200704 |
|
64 |
524288 |
378880 |
403456 |
|
102 |
786432 |
569344 |
607232 |
|
104 |
196608 |
138240 |
147456 |
|
104 |
393216 |
282624 |
302080 |
Ukuran kolam buffer InnoDB selalu merupakan kelipatan dari innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances:
-
innodb_buffer_pool_chunk_sizetetap pada 32 MB, tetapi nilai ini bisa jadi 128 MB untuk instans yang dibuat sebelumnya. -
Jika nilai yang Anda atur untuk
innodb_buffer_pool_sizebukan kelipatan, sistem secara otomatis membulatkannya ke atas ke kelipatan bilangan bulat terdekat.
Sebagai contoh, ketika innodb_buffer_pool_chunk_size adalah 1 GB dan innodb_buffer_pool_instances adalah 1, jika Anda mengatur innodb_buffer_pool_size menjadi 1,5 GB, nilai tersebut sebenarnya disesuaikan menjadi 2 GB.
Menyesuaikan kolam buffer untuk satu instans
Buka halaman Instances. Di bilah navigasi atas, pilih wilayah tempat instans RDS berada. Lalu, temukan instans RDS tersebut dan klik ID instansnya.
-
Di panel navigasi sebelah kiri, klik Parameters.
-
Temukan parameter innodb_buffer_pool_size, klik ikon
di kolom Actions untuk mengubah nilainya, lalu klik OK. -
Klik Apply Changes. Di kotak dialog yang muncul, klik OK.
CatatanModifikasi parameter
innodb_buffer_pool_sizememerlukan restart untuk RDS for MySQL 5.6, tetapi tidak memerlukan restart untuk RDS for MySQL 5.7 dan 8.0.
Menyesuaikan dengan templat parameter
Anda dapat membuat templat parameter baru untuk mengubah innodb_buffer_pool_size, lalu menerapkan templat tersebut ke instans target. Jika Anda sudah memiliki templat parameter, Anda dapat memodifikasinya lalu menerapkannya ke instans target. Untuk informasi lebih lanjut, lihat Menggunakan templat parameter.
Atur Running Value menjadi {DBInstanceClassMemory*7/10}. Setelah menerapkan templat, Anda harus melakukan restart instans ApsaraDB RDS for MySQL 5.6 agar perubahan diterapkan. Tidak diperlukan restart untuk versi 5.7 dan 8.0.
Dokumen terkait
Anda juga dapat menggunakan data Pemantauan instans dan analisis log kueri lambat untuk menganalisis dan menyelesaikan masalah penggunaan memori untuk ApsaraDB RDS for MySQL.