Konsep penting untuk penyesuaian Aurora MySQL - Amazon Aurora

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

Konsep penting untuk penyesuaian Aurora MySQL

Sebelum Anda menyesuaikan basis data Aurora MySQL Anda, pastikan untuk mempelajari peristiwa tunggu dan status thread dan mengapa itu terjadi. Tinjau juga arsitektur memori dan disk dasar Aurora MySQL saat menggunakan mesin penyimpanan InnoDB. Untuk diagram arsitektur yang bermanfaat, lihat Panduan Referensi MySQL.

Peristiwa tunggu Aurora MySQL

Peristiwa tunggu menunjukkan sumber daya yang sedang ditunggu oleh sesi. Misalnya, peristiwa tunggu io/socket/sql/client_connection menunjukkan bahwa thread sedang dalam proses untuk menangani koneksi baru. Sumber daya biasa yang ditunggu oleh sesi meliputi yang berikut:

  • Akses thread tunggal ke buffer, misalnya, saat sesi mencoba memodifikasi buffer

  • Baris yang saat ini dikunci oleh sesi lain

  • Pembacaan file data

  • Penulisan file data

Misalnya, untuk memenuhi kueri, sesi mungkin melakukan pemindaian tabel lengkap. Jika data belum ada dalam memori, sesi akan menunggu I/O disk selesai. Ketika buffer dibaca ke dalam memori, sesi mungkin perlu menunggu karena sesi lain mengakses buffer yang sama. Basis data mencatat peristiwa tunggu dengan menggunakan peristiwa tunggu standar. Peristiwa tersebut dikelompokkan ke dalam kategori.

Peristiwa tunggu tidak dengan sendirinya menunjukkan masalah performa. Misalnya, jika data yang diminta tidak ada dalam memori, data perlu dibaca dari disk. Jika satu sesi mengunci baris untuk pembaruan, sesi lain akan menunggu baris tersebut dibuka sehingga dapat memperbaruinya. Commit perlu menunggu penulisan ke file log selesai. Peristiwa tunggu merupakan bagian integral dari fungsi normal basis data.

Sejumlah besar peristiwa tunggu biasanya menunjukkan masalah performa. Dalam kasus seperti itu, Anda dapat menggunakan data peristiwa tunggu untuk menentukan tempat sesi menghabiskan waktu. Misalnya, jika laporan yang biasanya berjalan dalam hitungan menit sekarang berjalan selama berjam-jam, Anda dapat mengidentifikasi peristiwa tunggu yang berkontribusi paling besar terhadap total waktu tunggu. Jika Anda dapat menentukan penyebab peristiwa tunggu teratas, terkadang Anda dapat membuat perubahan yang meningkatkan performa. Misalnya, jika sesi Anda menunggu baris yang telah dikunci oleh sesi lain, Anda dapat mengakhiri sesi penguncian ini.

Status thread Aurora MySQL

Status thread umum adalah nilai State yang terkait dengan pemrosesan kueri umum. Misalnya, status thread sending data menunjukkan bahwa thread membaca dan memfilter baris untuk kueri guna menentukan set hasil yang benar.

Anda dapat menggunakan status thread untuk menyesuaikan Aurora MySQL dengan cara yang mirip dengan cara Anda menggunakan peristiwa tunggu. Misalnya, kemunculan sending data yang sering biasanya menunjukkan bahwa kueri tidak menggunakan indeks. Untuk informasi selengkapnya tentang status thread, lihat General Thread States dalam Panduan Referensi MySQL.

Saat Anda menggunakan Wawasan Performa, salah satu kondisi berikut ini akan berlaku:

  • Skema Performa diaktifkan – Aurora MySQL menunjukkan peristiwa tunggu, bukan status thread.

  • Skema Performa tidak diaktifkan – Aurora MySQL menunjukkan status thread.

Sebaiknya konfigurasikan Skema Performa untuk manajemen otomatis. Skema Performa memberikan wawasan tambahan dan alat yang lebih baik untuk menyelidiki potensi masalah performa. Untuk informasi selengkapnya, lihat Mengaktifkan Skema Performa untuk Wawasan Performa di Aurora MySQL.

Memori Aurora MySQL

Di Aurora MySQL, area memori yang paling penting adalah pool buffer dan log buffer.

Pool buffer

Pool buffer adalah area memori bersama tempat Aurora MySQL menyimpan tabel dan data indeks. Kueri dapat mengakses data yang sering digunakan langsung dari memori tanpa membaca dari disk.

Pool buffer disusun sebagai daftar halaman yang ditautkan. Halaman dapat menyimpan beberapa baris. Aurora MySQL menggunakan algoritma least recently used (LRU) untuk mengeluarkan halaman dari pool berdasarkan umurnya.

Untuk informasi selengkapnya, lihat Buffer Pool dalam Panduan Referensi MySQL.

Proses Aurora MySQL

Aurora MySQL menggunakan model proses yang sangat berbeda dari Aurora PostgreSQL.

Server MySQL (mysqld)

Server MySQL adalah proses sistem operasi tunggal bernama mysqld. Server MySQL tidak memunculkan proses tambahan. Dengan demikian, basis data Aurora MySQL menggunakan mysqld untuk melakukan sebagian besar pekerjaannya.

Ketika server MySQL dimulai, server tersebut akan mendengarkan koneksi jaringan dari klien MySQL. Ketika klien terhubung ke basis data, mysqld membuka thread.

Thread

Thread pengelola koneksi mengaitkan setiap koneksi klien dengan thread khusus. Thread ini mengelola autentikasi, menjalankan pernyataan, dan memberikan hasil ke klien. Pengelola koneksi membuat thread baru jika diperlukan.

Cache thread adalah kumpulan thread yang tersedia. Ketika koneksi berakhir, MySQL mengembalikan thread ke cache thread jika cache tidak penuh. Variabel sistem thread_cache_size menentukan ukuran cache thread.

Pool thread

Pool thread terdiri dari sejumlah grup thread. Setiap grup mengelola satu set koneksi klien. Ketika klien terhubung ke basis data, pool thread menetapkan koneksi ke grup thread dengan cara round-robin. Pool thread memisahkan koneksi dan thread. Tidak ada relasi tetap antara koneksi dan thread yang menjalankan pernyataan yang diterima dari koneksi tersebut.