Meningkatkan performa kueri RDS for MySQL dengan Amazon RDS Optimized Reads - Layanan Basis Data Relasional Amazon

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Meningkatkan performa kueri RDS for MySQL dengan Amazon RDS Optimized Reads

Anda dapat mempercepat pemrosesan kueri untuk RDS for MySQL dengan Amazon RDS Optimized Reads. Instans DB RDS for MySQL atau klaster DB Multi-AZ yang menggunakan RDS Optimized Reads dapat memproses kueri hingga 2x lebih cepat dibandingkan dengan instans atau klaster DB yang tidak menggunakannya.

Ikhtisar RDS Optimized Reads

Saat Anda menggunakan instans DB RDS for MySQL atau klaster DB Multi-AZ yang mengaktifkan RDS Optimized Reads, performa kueri akan lebih cepat melalui penggunaan penyimpanan instans. Penyimpanan instans menyediakan penyimpanan tingkat blok sementara untuk instans BD atau klaster DB Multi-AZ Anda. Penyimpanan terletak pada solid state drive (SSD) Non-Volatile Memory Express (NVMe) yang secara fisik terpasang ke server host. Penyimpanan ini dioptimalkan untuk latensi rendah, performa I/O acak tinggi, dan throughput baca berurutan tinggi.

RDS Optimized Reads diaktifkan secara default ketika instans DB atau klaster DB Multi-AZ menggunakan kelas instans DB dengan penyimpanan instans, seperti db.m5d atau db.m6gd. Dengan RDS Optimized Reads, beberapa objek sementara disimpan di penyimpanan instans. Objek sementara ini termasuk file sementara internal, tabel sementara internal pada disk, file peta memori, dan file cache log biner (binlog). Untuk informasi selengkapnya tentang penyimpanan instans, lihat Penyimpanan instans Amazon EC2 dalam Panduan Pengguna Amazon Elastic Compute Cloud untuk Instans Linux.

Beban kerja yang menghasilkan objek sementara di MySQL untuk pemrosesan kueri dapat memanfaatkan penyimpanan instans untuk mempercepat pemrosesan kueri. Jenis beban kerja ini mencakup kueri yang melibatkan pengurutan, agregasi hash, penggabungan dengan beban tinggi, Ekspresi Tabel Umum (CTE), dan kueri pada kolom yang tidak diindeks. Volume penyimpanan instans ini memberikan IOPS dan performa yang lebih tinggi, terlepas dari konfigurasi penyimpanan yang digunakan untuk penyimpanan Amazon EBS secara persisten. Karena RDS Optimized Reads memindahkan beban operasi pada objek sementara ke penyimpanan instans, operasi input/output per detik (IOPS) atau throughput penyimpanan persisten (Amazon EBS) kini dapat digunakan untuk operasi pada objek persisten. Operasi ini mencakup pembacaan dan penulisan file data biasa, dan operasi mesin latar belakang, seperti flushing dan penggabungan buffer sisipan.

catatan

Snapshot RDS manual dan otomatis hanya berisi file mesin untuk objek persisten. Objek sementara yang dibuat di penyimpanan instans tidak disertakan dalam snapshot RDS.

Kasus penggunaan RDS Optimized Reads

Jika Anda memiliki beban kerja yang sangat bergantung pada objek sementara, seperti tabel atau file internal, untuk eksekusi kueri, Anda dapat memperoleh manfaat dengan mengaktifkan RDS Optimized Reads. Kasus penggunaan berikut ini adalah kandidat untuk RDS Optimized Reads:

  • Aplikasi yang menjalankan kueri analitis dengan ekspresi tabel umum (CTE) yang kompleks, tabel turunan, dan operasi pengelompokan

  • Replika baca yang melayani lalu lintas baca padat dengan kueri yang tidak dioptimalkan

  • Aplikasi yang menjalankan kueri pelaporan berdasarkan permintaan atau dinamis yang melibatkan operasi yang kompleks, seperti kueri dengan klausa GROUP BY dan ORDER BY

  • Beban kerja yang menggunakan tabel sementara internal untuk pemrosesan kueri

    Anda dapat memantau variabel status mesin created_tmp_disk_tables untuk menentukan jumlah tabel sementara berbasis disk yang dibuat pada instans DB Anda.

  • Aplikasi yang membuat tabel sementara dalam jumlah besar, baik secara langsung maupun dalam prosedur, untuk menyimpan hasil sementara

  • Kueri basis data yang melakukan pengelompokan atau pengurutan pada kolom yang tidak diindeks

Praktik terbaik RDS Optimized Reads

Gunakan praktik terbaik RDS Optimized Reads berikut:

  • Tambahkan logika coba lagi untuk kueri hanya baca jika terjadi kegagalan karena penyimpanan instans penuh selama eksekusi.

  • Pantau ruang penyimpanan yang tersedia di penyimpanan instans dengan metrik CloudWatch FreeLocalStorage. Jika penyimpanan instans hampir penuh karena beban kerja pada instans DB, modifikasi instans DB untuk menggunakan kelas instans DB yang lebih besar.

  • Jika memori instans DB atau klaster DB Multi-AZ Anda sudah memadai tetapi masih mencapai batas penyimpanan pada penyimpanan instans, tingkatkan nilai binlog_cache_size untuk mempertahankan entri binlog khusus sesi dalam memori. Konfigurasi ini akan mencegah penulisan entri binlog ke file cache binlog sementara pada disk.

    Parameter binlog_cache_size dibuat per sesi. Anda dapat mengubah nilai untuk setiap sesi baru. Pengaturan untuk parameter ini dapat meningkatkan pemanfaatan memori pada instans DB selama beban kerja mencapai puncaknya. Oleh karena itu, pertimbangkan untuk meningkatkan nilai parameter berdasarkan pola beban kerja aplikasi Anda dan memori yang tersedia pada instans DB.

  • Gunakan nilai default MIXED untuk binlog_format. Tergantung ukuran transaksi, mengatur binlog_format ke ROW dapat menghasilkan file cache binlog berukuran besar pada penyimpanan instans.

  • Atur parameter internal_tmp_mem_storage_engine ke TempTable, sesuaikan parameter temptable_max_mmap dengan ukuran penyimpanan yang tersedia pada penyimpanan instans.

  • Jangan melakukan perubahan besar-besaran dalam satu transaksi. Transaksi seperti ini dapat menghasilkan file cache binlog berukuran besar pada penyimpanan instans dan dapat menyebabkan masalah ketika penyimpanan instans penuh. Pertimbangkan untuk membagi penulisan menjadi beberapa transaksi kecil guna meminimalkan penggunaan penyimpanan untuk file cache binlog.

  • Gunakan nilai default ABORT_SERVER untuk parameter binlog_error_action. Hal ini dapat mencegah masalah pencatatan log biner pada instans DB yang mengaktifkan pencadangan.

Menggunakan RDS Optimized Reads

Saat Anda menyediakan instans DB RDS for MySQL dengan salah satu kelas instans DB berikut dalam deployment instans DB Satu AZ, deployment instans DB Multi-AZ, atau deployment klaster DB Multi-AZ, instans DB akan otomatis menggunakan RDS Optimized Reads.

Untuk mengaktifkan RDS Optimized Reads, lakukan salah satu tindakan berikut:

  • Buat instans DB RDS for MySQL atau klaster DB Multi-AZ menggunakan salah satu kelas instans DB berikut. Untuk informasi selengkapnya, lihat Membuat instans DB Amazon RDS.

  • Modifikasi instans DB RDS for MySQL atau klaster DB Multi-AZ yang sudah ada untuk menggunakan salah satu kelas instans DB berikut. Untuk informasi selengkapnya, lihat Memodifikasi instans DB Amazon RDS.

RDS Optimized Reads tersedia di semua Wilayah AWS RDS yang mendukung satu atau beberapa kelas instans DB dengan penyimpanan SSD NVMe lokal. Untuk informasi tentang kelas instans DB, lihat DB.

Ketersediaan kelas instans DB untuk Wilayah AWS berbeda-beda. Untuk mengetahui dukungan kelas instans DB pada suatu Wilayah AWS, lihat Menentukan dukungan kelas instans DB di Wilayah AWS.

Jika Anda tidak ingin menggunakan RDS Optimized Reads, modifikasi instans DB atau klaster DB Multi-AZ Anda agar tidak menggunakan kelas instans DB yang mendukung fitur tersebut.

Memantau instans DB yang menggunakan RDS Optimized Reads

Anda dapat memantau instans DB yang menggunakan RDS Optimized Reads dengan metrik CloudWatch berikut:

  • FreeLocalStorage

  • ReadIOPSLocalStorage

  • ReadLatencyLocalStorage

  • ReadThroughputLocalStorage

  • WriteIOPSLocalStorage

  • WriteLatencyLocalStorage

  • WriteThroughputLocalStorage

Metrik ini menyediakan data tentang penyimpanan instans, IOPS, dan throughput yang tersedia. Untuk informasi selengkapnya tentang metrik ini, lihat Metrik CloudWatch tingkat instans Amazon untuk Amazon RDS.

Batasan RDS Optimized Reads

Batasan berikut berlaku untuk RDS Optimized Reads:

  • RDS Optimalkan Reads didukung untuk RDS for MySQL versi 8.0.28 dan yang lebih tinggi. Untuk informasi tentang versi RDS for MySQL, lihat RDSVersi saya SQL di Amazon.

  • Anda tidak dapat mengubah lokasi objek sementara ke penyimpanan persisten (Amazon EBS) pada kelas instans DB yang mendukung RDS Optimized Reads.

  • Saat pencatatan log biner pada instans DB diaktifkan, ukuran transaksi maksimum dibatasi oleh ukuran penyimpanan instans. Pada MySQL, setiap sesi yang membutuhkan penyimpanan lebih banyak daripada nilai binlog_cache_size transaksi penulisan akan berubah menjadi file cache binlog sementara, yang dibuat pada penyimpanan instans.

  • Transaksi dapat gagal ketika penyimpanan instans penuh.