Menyetel performa dan memelihara database di Azure Database for MySQL - Server Fleksibel menggunakan sys_schema

BERLAKU UNTUK: Azure Database for MySQL - Server Tunggal Database Azure untuk MySQL - Server Fleksibel

Penting

Server tunggal Azure Database for MySQL berada di jalur penghentian. Kami sangat menyarankan Agar Anda meningkatkan ke server fleksibel Azure Database for MySQL. Untuk informasi selengkapnya tentang migrasi ke server fleksibel Azure Database for MySQL, lihat Apa yang terjadi pada Server Tunggal Azure Database for MySQL?

MySQL performance_schema, pertama kali tersedia di MySQL 5.5, menyediakan instrumentasi untuk banyak sumber daya server penting seperti alokasi memori, program tersimpan, penguncian metadata, dll. Namun, performance_schema berisi lebih dari 80 tabel, dan untuk mendapatkan informasi yang diperlukan sering memerlukan tabel gabungan dalam performance_schema, serta tabel dari information_schema. Dibangun di performance_schema dan information_schema, sys_schema menyediakan koleksi tampilan yang mudah digunakan yang kuat dalam database baca-saja dan sepenuhnya diaktifkan di Server fleksibel Azure Database for MySQL versi 5.7.

Views of sys_schema.

Ada 52 tampilan dalam sys_schema, dan setiap tampilan memiliki salah satu awalan berikut:

  • Host_summary atau IO: I/O terkait latensi.
  • InnoDB: Status dan kunci buffer innoDB.
  • Memori: Penggunaan memori oleh host dan pengguna.
  • Skema: Informasi terkait skema, seperti kenaikan otomatis, indeks, dll.
  • Statement: Informasi tentang pernyataan SQL; bisa berupa pernyataan yang menghasilkan pemindaian tabel penuh, atau waktu kueri yang lama.
  • Pengguna: Sumber daya yang digunakan dan dikelompokkan berdasarkan pengguna. Contohnya adalah file I/O, koneksi, dan memori.
  • Wait: Aktivitas tunggu yang dikelompokkan berdasarkan host atau pengguna.

Sekarang, mari lihat beberapa pola penggunaan umum dari sys_schema. Untuk memulainya, kita akan mengelompokkan pola penggunaan ke dalam dua kategori: Penyetelan performa dan Pemeliharaan database.

Penyetelan performa

sys.user_summary_by_file_io

IO adalah operasi termahal dalam database. Kita dapat mengetahui latensi IO rata-rata dengan mengkueri tampilan sys.user_summary_by_file_io. Dengan penyimpanan default 125 GB yang disediakan, latensi IO sekitar 15 detik.

IO latency: 125 GB.

Karena server fleksibel Azure Database for MySQL menskalakan IO sehubungan dengan penyimpanan, setelah meningkatkan penyimpanan yang disediakan menjadi 1 TB, latensi IO saya berkurang menjadi 571 mdtk.

IO latency: 1TB.

sys.schema_tables_with_full_table_scans

Terlepas dari perencanaan yang matang, banyak kueri masih dapat menghasilkan pemindaian tabel penuh. Untuk informasi selengkapnya tentang jenis indeks dan cara mengoptimalkannya, Anda bisa merujuk ke artikel ini: Cara memecahkan masalah performa kueri. Pemindaian tabel penuh membutuhkan banyak sumber daya dan menurunkan performa database Anda. Cara tercepat untuk menemukan tabel dengan pemindaian tabel penuh adalah dengan mengkueri tampilan sys.schema_tables_with_full_table_scans.

Full table scans.

sys.user_summary_by_statement_type

Untuk memecahkan masalah performa database, ada baiknya untuk mengidentifikasi aktivitas yang terjadi di dalam database Anda, dan menggunakan tampilan sys.user_summary_by_statement_type mungkin bisa membantu.

Summary by statement.

Dalam contoh ini, server fleksibel Azure Database for MySQL menghabiskan waktu 53 menit untuk membersihkan log kueri lambat 44579 kali. Waktu yang lama dan IO yang banyak. Anda dapat mengurangi aktivitas ini dengan menonaktifkan log kueri Anda yang lambat atau mengurangi frekuensi login kueri yang lambat pada portal Microsoft Azure.

Pemeliharaan database

sys.innodb_buffer_stats_by_table

[!PENTING]

Mengkueri tampilan ini bisa memengaruhi performa. Disarankan untuk melakukan pemecahan masalah ini selama jam kerja di luar jam sibuk.

Buffer cache InnoDB berada dalam memori dan merupakan mekanisme cache utama antara DBMS dan penyimpanan. Ukuran buffer cache InnoDB terikat dengan tingkat performa dan tidak dapat diubah kecuali SKU produk yang berbeda dipilih. Seperti halnya memori dalam sistem operasi, halaman lama akan diganti untuk memberikan ruang bagi data baru. Untuk mengetahui tabel mana yang menggunakan sebagian besar memori kumpulan buffer InnoDB, Anda dapat mengkueri tampilan sys.innodb_buffer_stats_by_table.

InnoDB buffer status.

Pada grafik di atas, terlihat bahwa selain tabel dan tampilan sistem, setiap tabel dalam database mysqldatabase033, yang menghosting salah satu situs WordPress saya, menempati 16 KB, atau 1 halaman, data dalam memori.

Sys.schema_unused_indexes &sys.schema_redundant_indexes

Indeks adalah alat yang bagus untuk meningkatkan performa baca, tetapi ada biaya tambahan untuk penyisipan dan penyimpanan. Sys.schema_unused_indexes dan sys.schema_redundant_indexes memberikan wawasan tentang indeks yang tidak digunakan atau duplikat.

Unused indexes.

Redundant indexes.

Kesimpulan

Singkatnya, sys_schema adalah alat yang berguna untuk penyetelan performa dan pemeliharaan database. Pastikan untuk memanfaatkan fitur ini di instans server fleksibel Azure Database for MySQL Anda.

Langkah berikutnya

  • Untuk menemukan jawaban sepasang atas pertanyaan Anda yang paling penting atau memposting pertanyaan/jawaban baru, KunjungiStack Overflow.