Bagaimana cara saya memeriksa apakah skema kinerja mysql diaktifkan?

Pos ini juga tersedia dalam bahasa berikut. Jepang, Korea


Dampak kinerja instrumen skema kinerja MySQL

Bagaimana cara saya memeriksa apakah skema kinerja mysql diaktifkan?

tom__bo 16-05-2019

Insinyur LINE

Hai, yang di sana. Saya Otsuka (tom__bo), terutama bertanggung jawab atas operasi MySQL dan pengembangan berbagai alat administrasi dan verifikasi DB. Dalam postingan ini, saya akan menulis tentang eksperimen saya tentang kinerja MySQL ketika konsumen kinerjanya, yaitu database performance_schema dan innodb_metrics tabel dari 

select * from setup_instruments limit 1;
+-------------------------------------------+---------+-------+
| NAME                                      | ENABLED | TIMED |
+-------------------------------------------+---------+-------+
| wait/synch/mutex/sql/TC_LOG_MMAP::LOCK_tc | NO      | NO    |
+-------------------------------------------+---------+-------+
 
select * from setup_consumers limit 1;
+-----------------------+---------+
| NAME                  | ENABLED |
+-----------------------+---------+
| events_stages_current | NO      |
+-----------------------+---------+
0 database, aktif dan berjalan.  

Saya belajar tentang skema_kinerja dan

select * from setup_instruments limit 1;
+-------------------------------------------+---------+-------+
| NAME                                      | ENABLED | TIMED |
+-------------------------------------------+---------+-------+
| wait/synch/mutex/sql/TC_LOG_MMAP::LOCK_tc | NO      | NO    |
+-------------------------------------------+---------+-------+
 
select * from setup_consumers limit 1;
+-----------------------+---------+
| NAME                  | ENABLED |
+-----------------------+---------+
| events_stages_current | NO      |
+-----------------------+---------+
1 dari sebuah buku berjudul 詳解MySQL5. 7 (Jepang)

Database dan tabel untuk pemantauan kinerja

Biasanya saat Anda ingin mendapatkan informasi kinerja di MySQL, Anda menggunakan instrumen Skema Kinerja atau tabel

select * from setup_instruments limit 1;
+-------------------------------------------+---------+-------+
| NAME                                      | ENABLED | TIMED |
+-------------------------------------------+---------+-------+
| wait/synch/mutex/sql/TC_LOG_MMAP::LOCK_tc | NO      | NO    |
+-------------------------------------------+---------+-------+
 
select * from setup_consumers limit 1;
+-----------------------+---------+
| NAME                  | ENABLED |
+-----------------------+---------+
| events_stages_current | NO      |
+-----------------------+---------+
1 (atau sistem. tampilan metrik dengan ringkasan tabel performa). Dengan informasi performa ini, Anda dapat memahami eksekusi internal MySQL, terutama berapa banyak peristiwa yang dihasilkan dan berapa banyak waktu yang diperlukan di mesin penyimpanan InnoDB. Selalu ada biaya untuk pemantauan kinerja — dengan kata lain, biaya overhead. Saya menjalankan tes sederhana untuk mengukur overhead tersebut

Sebelum masuk ke hasil eksperimen, izinkan saya menjelaskan secara singkat cara menggunakan database _______ 60 _______ dan tabel 

select * from setup_instruments limit 1;
+-------------------------------------------+---------+-------+
| NAME                                      | ENABLED | TIMED |
+-------------------------------------------+---------+-------+
| wait/synch/mutex/sql/TC_LOG_MMAP::LOCK_tc | NO      | NO    |
+-------------------------------------------+---------+-------+
 
select * from setup_consumers limit 1;
+-----------------------+---------+
| NAME                  | ENABLED |
+-----------------------+---------+
| events_stages_current | NO      |
+-----------------------+---------+
4. Versi MySQL untuk eksperimen ini adalah MySQL Community 5. 7. 22

tabel performance_schema

Skema Performa MySQL mungkin yang pertama kali terlintas dalam pikiran saat memantau performa MySQL. Skema Kinerja mengumpulkan data seperti berapa kali aktivitas berinstrumen dilakukan dan berapa lama waktu yang dibutuhkan. Data peristiwa tersebut dikumpulkan menggunakan "titik instrumentasi" yang ditempatkan di sana-sini dalam kode sumber MySQL. Beberapa titik instrumentasi yang sering digunakan untuk pengguna diaktifkan secara default, menyediakan data yang tersedia tanpa konfigurasi tambahan. Jika Anda ingin mengaktifkan titik instrumentasi tertentu, Anda perlu mengubah konfigurasinya. Lihat Konfigurasi Startup Skema Performa untuk informasi lebih lanjut

Dua komponen utama struktur Skema Performa adalah

  • instrumen yang mengumpulkan data dan
  • konsumen yang menyimpan data yang terkumpul.  

Tabel penyiapan Skema Performa termasuk 

select * from setup_instruments limit 1;
+-------------------------------------------+---------+-------+
| NAME                                      | ENABLED | TIMED |
+-------------------------------------------+---------+-------+
| wait/synch/mutex/sql/TC_LOG_MMAP::LOCK_tc | NO      | NO    |
+-------------------------------------------+---------+-------+
 
select * from setup_consumers limit 1;
+-----------------------+---------+
| NAME                  | ENABLED |
+-----------------------+---------+
| events_stages_current | NO      |
+-----------------------+---------+
5, ________0______6, 
select * from setup_instruments limit 1;
+-------------------------------------------+---------+-------+
| NAME                                      | ENABLED | TIMED |
+-------------------------------------------+---------+-------+
| wait/synch/mutex/sql/TC_LOG_MMAP::LOCK_tc | NO      | NO    |
+-------------------------------------------+---------+-------+
 
select * from setup_consumers limit 1;
+-----------------------+---------+
| NAME                  | ENABLED |
+-----------------------+---------+
| events_stages_current | NO      |
+-----------------------+---------+
7, 
select * from setup_instruments limit 1;
+-------------------------------------------+---------+-------+
| NAME                                      | ENABLED | TIMED |
+-------------------------------------------+---------+-------+
| wait/synch/mutex/sql/TC_LOG_MMAP::LOCK_tc | NO      | NO    |
+-------------------------------------------+---------+-------+
 
select * from setup_consumers limit 1;
+-----------------------+---------+
| NAME                  | ENABLED |
+-----------------------+---------+
| events_stages_current | NO      |
+-----------------------+---------+
8, 
select * from setup_instruments limit 1;
+-------------------------------------------+---------+-------+
| NAME                                      | ENABLED | TIMED |
+-------------------------------------------+---------+-------+
| wait/synch/mutex/sql/TC_LOG_MMAP::LOCK_tc | NO      | NO    |
+-------------------------------------------+---------+-------+
 
select * from setup_consumers limit 1;
+-----------------------+---------+
| NAME                  | ENABLED |
+-----------------------+---------+
| events_stages_current | NO      |
+-----------------------+---------+
9 dan 
select * from innodb_metrics limit 1G
*************************** 1. row ***************************
           NAME: metadata_table_handles_opened
      SUBSYSTEM: metadata
          COUNT: 0
      MAX_COUNT: NULL
      MIN_COUNT: NULL
      AVG_COUNT: NULL
    COUNT_RESET: 0
MAX_COUNT_RESET: NULL
MIN_COUNT_RESET: NULL
AVG_COUNT_RESET: NULL
   TIME_ENABLED: NULL
  TIME_DISABLED: NULL
   TIME_ELAPSED: NULL
     TIME_RESET: NULL
         STATUS: disabled
           TYPE: counter
        COMMENT: Number of table handles opened
0 memungkinkan Anda menentukan konfigurasi untuk rekaman yang sesuai (i. e. bagaimana dan data apa yang dikumpulkan).   

Secara default, objek (mis. e. database), utas, dan aktor (i. e. pengguna klien) diaktifkan untuk pemantauan. Untuk instrumen dan konsumen, Anda dapat menggunakan 

select * from setup_instruments limit 1;
+-------------------------------------------+---------+-------+
| NAME                                      | ENABLED | TIMED |
+-------------------------------------------+---------+-------+
| wait/synch/mutex/sql/TC_LOG_MMAP::LOCK_tc | NO      | NO    |
+-------------------------------------------+---------+-------+
 
select * from setup_consumers limit 1;
+-----------------------+---------+
| NAME                  | ENABLED |
+-----------------------+---------+
| events_stages_current | NO      |
+-----------------------+---------+
5 dan 
select * from setup_instruments limit 1;
+-------------------------------------------+---------+-------+
| NAME                                      | ENABLED | TIMED |
+-------------------------------------------+---------+-------+
| wait/synch/mutex/sql/TC_LOG_MMAP::LOCK_tc | NO      | NO    |
+-------------------------------------------+---------+-------+
 
select * from setup_consumers limit 1;
+-----------------------+---------+
| NAME                  | ENABLED |
+-----------------------+---------+
| events_stages_current | NO      |
+-----------------------+---------+
7 tabel untuk mengaktifkan pemantauan instrumen atau konsumen tertentu

Data yang tersedia

Mari kita lihat kategori data kinerja apa saja yang dapat dikumpulkan dari instrumen. Anda dapat memeriksa daftar kategori dengan performance_schema. tabel setup_instrumen. Seperti yang ditampilkan di bawah, di MySQL 5. 7. Versi 22, total ada 1.032 instrumen dan kategori dibedakan menggunakan

select * from innodb_metrics limit 1G
*************************** 1. row ***************************
           NAME: metadata_table_handles_opened
      SUBSYSTEM: metadata
          COUNT: 0
      MAX_COUNT: NULL
      MIN_COUNT: NULL
      AVG_COUNT: NULL
    COUNT_RESET: 0
MAX_COUNT_RESET: NULL
MIN_COUNT_RESET: NULL
AVG_COUNT_RESET: NULL
   TIME_ENABLED: NULL
  TIME_DISABLED: NULL
   TIME_ELAPSED: NULL
     TIME_RESET: NULL
         STATUS: disabled
           TYPE: counter
        COMMENT: Number of table handles opened
3. Daftar kategori tingkat atas diwakili oleh
select * from innodb_metrics limit 1G
*************************** 1. row ***************************
           NAME: metadata_table_handles_opened
      SUBSYSTEM: metadata
          COUNT: 0
      MAX_COUNT: NULL
      MIN_COUNT: NULL
      AVG_COUNT: NULL
    COUNT_RESET: 0
MAX_COUNT_RESET: NULL
MIN_COUNT_RESET: NULL
AVG_COUNT_RESET: NULL
   TIME_ENABLED: NULL
  TIME_DISABLED: NULL
   TIME_ELAPSED: NULL
     TIME_RESET: NULL
         STATUS: disabled
           TYPE: counter
        COMMENT: Number of table handles opened
3 pertama adalah sebagai berikut

select substring_index(name, '/', 1) as category, count(*) from setup_instruments group by substring_index(name, '/', 1);
+-------------+----------+
| category    | count(*) |
+-------------+----------+
| idle        |        1 |
| memory      |      379 |
| stage       |      132 |
| statement   |      193 |
| transaction |        1 |
| wait        |      326 |
+-------------+----------+
6 rows in set (0.00 sec)

Daftar 5. 2 on page 188 of the book, 詳解MySQL5. 7, menunjukkan bahwa jumlah instrumen meningkat kecuali untuk kategori idle dan transaksi. Untuk MySQL8. 0. 13, kategori kesalahan ditambahkan dengan jumlah total instrumen menjadi 1.217.  

Cara menggunakan tabel performance_schema

Tabel 

select * from setup_instruments limit 1;
+-------------------------------------------+---------+-------+
| NAME                                      | ENABLED | TIMED |
+-------------------------------------------+---------+-------+
| wait/synch/mutex/sql/TC_LOG_MMAP::LOCK_tc | NO      | NO    |
+-------------------------------------------+---------+-------+
 
select * from setup_consumers limit 1;
+-----------------------+---------+
| NAME                  | ENABLED |
+-----------------------+---------+
| events_stages_current | NO      |
+-----------------------+---------+
5 memiliki 
select * from innodb_metrics limit 1G
*************************** 1. row ***************************
           NAME: metadata_table_handles_opened
      SUBSYSTEM: metadata
          COUNT: 0
      MAX_COUNT: NULL
      MIN_COUNT: NULL
      AVG_COUNT: NULL
    COUNT_RESET: 0
MAX_COUNT_RESET: NULL
MIN_COUNT_RESET: NULL
AVG_COUNT_RESET: NULL
   TIME_ENABLED: NULL
  TIME_DISABLED: NULL
   TIME_ELAPSED: NULL
     TIME_RESET: NULL
         STATUS: disabled
           TYPE: counter
        COMMENT: Number of table handles opened
6 dan 
select * from innodb_metrics limit 1G
*************************** 1. row ***************************
           NAME: metadata_table_handles_opened
      SUBSYSTEM: metadata
          COUNT: 0
      MAX_COUNT: NULL
      MIN_COUNT: NULL
      AVG_COUNT: NULL
    COUNT_RESET: 0
MAX_COUNT_RESET: NULL
MIN_COUNT_RESET: NULL
AVG_COUNT_RESET: NULL
   TIME_ENABLED: NULL
  TIME_DISABLED: NULL
   TIME_ELAPSED: NULL
     TIME_RESET: NULL
         STATUS: disabled
           TYPE: counter
        COMMENT: Number of table handles opened
7 kolom untuk modifikasi sedangkan 
select * from setup_instruments limit 1;
+-------------------------------------------+---------+-------+
| NAME                                      | ENABLED | TIMED |
+-------------------------------------------+---------+-------+
| wait/synch/mutex/sql/TC_LOG_MMAP::LOCK_tc | NO      | NO    |
+-------------------------------------------+---------+-------+
 
select * from setup_consumers limit 1;
+-----------------------+---------+
| NAME                  | ENABLED |
+-----------------------+---------+
| events_stages_current | NO      |
+-----------------------+---------+
7 tabel memiliki 
select * from innodb_metrics limit 1G
*************************** 1. row ***************************
           NAME: metadata_table_handles_opened
      SUBSYSTEM: metadata
          COUNT: 0
      MAX_COUNT: NULL
      MIN_COUNT: NULL
      AVG_COUNT: NULL
    COUNT_RESET: 0
MAX_COUNT_RESET: NULL
MIN_COUNT_RESET: NULL
AVG_COUNT_RESET: NULL
   TIME_ENABLED: NULL
  TIME_DISABLED: NULL
   TIME_ELAPSED: NULL
     TIME_RESET: NULL
         STATUS: disabled
           TYPE: counter
        COMMENT: Number of table handles opened
6 kolom untuk modifikasi. Jika Anda memiliki hak istimewa UPDATE, Anda dapat mengubah nilai kolom ini menjadi 
SET GLOBAL innodb_monitor_enable = [counter-name|module_name|pattern|all];
SET GLOBAL innodb_monitor_disable = [counter-name|module_name|pattern|all];
SET GLOBAL innodb_monitor_reset = [counter-name|module_name|pattern|all];
0 untuk mengaktifkan atau 
SET GLOBAL innodb_monitor_enable = [counter-name|module_name|pattern|all];
SET GLOBAL innodb_monitor_disable = [counter-name|module_name|pattern|all];
SET GLOBAL innodb_monitor_reset = [counter-name|module_name|pattern|all];
1 untuk menonaktifkan

Saat nilai 

select * from innodb_metrics limit 1G
*************************** 1. row ***************************
           NAME: metadata_table_handles_opened
      SUBSYSTEM: metadata
          COUNT: 0
      MAX_COUNT: NULL
      MIN_COUNT: NULL
      AVG_COUNT: NULL
    COUNT_RESET: 0
MAX_COUNT_RESET: NULL
MIN_COUNT_RESET: NULL
AVG_COUNT_RESET: NULL
   TIME_ENABLED: NULL
  TIME_DISABLED: NULL
   TIME_ELAPSED: NULL
     TIME_RESET: NULL
         STATUS: disabled
           TYPE: counter
        COMMENT: Number of table handles opened
7 kolom 
select * from setup_instruments limit 1;
+-------------------------------------------+---------+-------+
| NAME                                      | ENABLED | TIMED |
+-------------------------------------------+---------+-------+
| wait/synch/mutex/sql/TC_LOG_MMAP::LOCK_tc | NO      | NO    |
+-------------------------------------------+---------+-------+
 
select * from setup_consumers limit 1;
+-----------------------+---------+
| NAME                  | ENABLED |
+-----------------------+---------+
| events_stages_current | NO      |
+-----------------------+---------+
5 tabel disetel ke 
SET GLOBAL innodb_monitor_enable = [counter-name|module_name|pattern|all];
SET GLOBAL innodb_monitor_disable = [counter-name|module_name|pattern|all];
SET GLOBAL innodb_monitor_reset = [counter-name|module_name|pattern|all];
0, instrumen akan diatur waktunya. Untuk instrumen memori, kolom 
select * from innodb_metrics limit 1G
*************************** 1. row ***************************
           NAME: metadata_table_handles_opened
      SUBSYSTEM: metadata
          COUNT: 0
      MAX_COUNT: NULL
      MIN_COUNT: NULL
      AVG_COUNT: NULL
    COUNT_RESET: 0
MAX_COUNT_RESET: NULL
MIN_COUNT_RESET: NULL
AVG_COUNT_RESET: NULL
   TIME_ENABLED: NULL
  TIME_DISABLED: NULL
   TIME_ELAPSED: NULL
     TIME_RESET: NULL
         STATUS: disabled
           TYPE: counter
        COMMENT: Number of table handles opened
7 di 
select * from setup_instruments limit 1;
+-------------------------------------------+---------+-------+
| NAME                                      | ENABLED | TIMED |
+-------------------------------------------+---------+-------+
| wait/synch/mutex/sql/TC_LOG_MMAP::LOCK_tc | NO      | NO    |
+-------------------------------------------+---------+-------+
 
select * from setup_consumers limit 1;
+-----------------------+---------+
| NAME                  | ENABLED |
+-----------------------+---------+
| events_stages_current | NO      |
+-----------------------+---------+
5 tabel diabaikan karena operasi memori tidak diatur waktunya. Dengan kata lain, jika kolom 
select * from innodb_metrics limit 1G
*************************** 1. row ***************************
           NAME: metadata_table_handles_opened
      SUBSYSTEM: metadata
          COUNT: 0
      MAX_COUNT: NULL
      MIN_COUNT: NULL
      AVG_COUNT: NULL
    COUNT_RESET: 0
MAX_COUNT_RESET: NULL
MIN_COUNT_RESET: NULL
AVG_COUNT_RESET: NULL
   TIME_ENABLED: NULL
  TIME_DISABLED: NULL
   TIME_ELAPSED: NULL
     TIME_RESET: NULL
         STATUS: disabled
           TYPE: counter
        COMMENT: Number of table handles opened
_7 disetel ke 
SET GLOBAL innodb_monitor_enable = [counter-name|module_name|pattern|all];
SET GLOBAL innodb_monitor_disable = [counter-name|module_name|pattern|all];
SET GLOBAL innodb_monitor_reset = [counter-name|module_name|pattern|all];
0 untuk instrumen memori, kueri akan berhasil tetapi nilai rekaman akan menyatakan TIDAK

Anda dapat merujuk ke contoh berikut dari setiap tabel

select * from setup_instruments limit 1;
+-------------------------------------------+---------+-------+
| NAME                                      | ENABLED | TIMED |
+-------------------------------------------+---------+-------+
| wait/synch/mutex/sql/TC_LOG_MMAP::LOCK_tc | NO      | NO    |
+-------------------------------------------+---------+-------+
 
select * from setup_consumers limit 1;
+-----------------------+---------+
| NAME                  | ENABLED |
+-----------------------+---------+
| events_stages_current | NO      |
+-----------------------+---------+

INFORMASI_SCHEMA. INNODB_METRIK

Informasi mesin penyimpanan InnoDB yang dikumpulkan oleh innodb_monitor disimpan di 

select * from setup_instruments limit 1;
+-------------------------------------------+---------+-------+
| NAME                                      | ENABLED | TIMED |
+-------------------------------------------+---------+-------+
| wait/synch/mutex/sql/TC_LOG_MMAP::LOCK_tc | NO      | NO    |
+-------------------------------------------+---------+-------+
 
select * from setup_consumers limit 1;
+-----------------------+---------+
| NAME                  | ENABLED |
+-----------------------+---------+
| events_stages_current | NO      |
+-----------------------+---------+
4 tabel. Anda dapat mengumpulkan informasi yang tidak dicantumkan oleh performance_schema dan 
SET GLOBAL innodb_monitor_enable = module_index;
1. Tabel  
select * from setup_instruments limit 1;
+-------------------------------------------+---------+-------+
| NAME                                      | ENABLED | TIMED |
+-------------------------------------------+---------+-------+
| wait/synch/mutex/sql/TC_LOG_MMAP::LOCK_tc | NO      | NO    |
+-------------------------------------------+---------+-------+
 
select * from setup_consumers limit 1;
+-----------------------+---------+
| NAME                  | ENABLED |
+-----------------------+---------+
| events_stages_current | NO      |
+-----------------------+---------+
4 memiliki kolom 
SET GLOBAL innodb_monitor_enable = module_index;
3 untuk nama unik penghitung, 
SET GLOBAL innodb_monitor_enable = module_index;
4 kolom untuk kategori penghitung dan penghitung lainnya untuk diagnosis performa. Anda dapat menemukan deskripsi untuk setiap penghitung di kolom 
SET GLOBAL innodb_monitor_enable = module_index;
5

Berikut adalah contoh tabel innodb_metrics .  

select * from innodb_metrics limit 1G
*************************** 1. row ***************************
           NAME: metadata_table_handles_opened
      SUBSYSTEM: metadata
          COUNT: 0
      MAX_COUNT: NULL
      MIN_COUNT: NULL
      AVG_COUNT: NULL
    COUNT_RESET: 0
MAX_COUNT_RESET: NULL
MIN_COUNT_RESET: NULL
AVG_COUNT_RESET: NULL
   TIME_ENABLED: NULL
  TIME_DISABLED: NULL
   TIME_ELAPSED: NULL
     TIME_RESET: NULL
         STATUS: disabled
           TYPE: counter
        COMMENT: Number of table handles opened
_

Data yang tersedia

MySQL5. 7. 22 memiliki total 235 loket yang dikelompokkan menjadi 17 subsistem. Seperti dijelaskan di atas, setiap subsistem memungkinkan Anda mengumpulkan data statistik untuk setiap penghitung seperti status, hasil pemantauan, dan data gabungan.  

Tabel berikut menunjukkan jumlah penghitung untuk setiap subsistem. Anda dapat melihat kolom Nama Modul pada tabel di bawah ini. Nama modul dapat digunakan untuk mengaktifkan, menonaktifkan, atau mengatur ulang semua penghitung untuk subsistem tertentu. Saya tidak mengerti semua detailnya, tetapi Anda perlu menentukan nama modul saat Anda ingin mengaktifkan penghitung di tingkat subsistem.  

Silakan merujuk ke referensi berikut untuk informasi lebih lanjut

  • Ikhtisar INFORMATION_SCHEMA. Tabel INNODB_METRICS
  • Deskripsi setiap kolom
Module nameSubsystem nameCountmodule_metadatametadata3module_locklock16module_bufferbuffer75module_buf_pagebuffer_page_io32module_osos9module_trxtransaction12module_purgepurge7module_compresscompression4module_filefile_system1module_indexindex6module_adaptive_hashadaptive_hash_index8module_ibuf_systemchange_buffer8module_srvserver25module_ddlddl6module_dmldml4module_logrecovery15module_icpicp4

Cara Penggunaan

Anda dapat mengaktifkan, menonaktifkan, dan mengatur ulang penghitung menggunakan variabel berikut. Dan, Anda dapat menggunakan salah satu opsi konfigurasi berikut untuk menetapkan penghitung.

SET GLOBAL innodb_monitor_enable = module_index;
7, 
SET GLOBAL innodb_monitor_enable = module_index;
8 (subsistem), 
SET GLOBAL innodb_monitor_enable = module_index;
9 (ekspresi string) atau 
select type, count(*) from sys.metrics group by type;
+--------------------------------------+----------+
| type                                 | count(*) |
+--------------------------------------+----------+
| Global Status                        |      221 |
| InnoDB Metrics - adaptive_hash_index |        8 |
| InnoDB Metrics - buffer              |       57 |
| InnoDB Metrics - buffer_page_io      |       32 |
| InnoDB Metrics - change_buffer       |        8 |
| InnoDB Metrics - compression         |        4 |
| InnoDB Metrics - ddl                 |        6 |
| InnoDB Metrics - dml                 |        4 |
| InnoDB Metrics - icp                 |        4 |
| InnoDB Metrics - index               |        6 |
| InnoDB Metrics - lock                |       12 |
| InnoDB Metrics - metadata            |        3 |
| InnoDB Metrics - os                  |        5 |
| InnoDB Metrics - purge               |        7 |
| InnoDB Metrics - recovery            |       12 |
| InnoDB Metrics - server              |       22 |
| InnoDB Metrics - transaction         |       12 |
| Performance Schema                   |        2 |
| System Time                          |        2 |
+--------------------------------------+----------+
19 rows in set (0.01 sec)
0.  

SET GLOBAL innodb_monitor_enable = [counter-name|module_name|pattern|all];
SET GLOBAL innodb_monitor_disable = [counter-name|module_name|pattern|all];
SET GLOBAL innodb_monitor_reset = [counter-name|module_name|pattern|all];

Misalnya, Anda dapat mengaktifkan subsistem indeks dengan kueri berikut

SET GLOBAL innodb_monitor_enable = module_index;

SYS. TAMPILAN METRIK

MySQL5. 7. 7 dan versi yang lebih tinggi menyertakan skema sistem, yang memberikan tampilan yang meringkas informasi berikut.  

  • Variabel status global dari 
    select type, count(*) from sys.metrics group by type;
    +--------------------------------------+----------+
    | type                                 | count(*) |
    +--------------------------------------+----------+
    | Global Status                        |      221 |
    | InnoDB Metrics - adaptive_hash_index |        8 |
    | InnoDB Metrics - buffer              |       57 |
    | InnoDB Metrics - buffer_page_io      |       32 |
    | InnoDB Metrics - change_buffer       |        8 |
    | InnoDB Metrics - compression         |        4 |
    | InnoDB Metrics - ddl                 |        6 |
    | InnoDB Metrics - dml                 |        4 |
    | InnoDB Metrics - icp                 |        4 |
    | InnoDB Metrics - index               |        6 |
    | InnoDB Metrics - lock                |       12 |
    | InnoDB Metrics - metadata            |        3 |
    | InnoDB Metrics - os                  |        5 |
    | InnoDB Metrics - purge               |        7 |
    | InnoDB Metrics - recovery            |       12 |
    | InnoDB Metrics - server              |       22 |
    | InnoDB Metrics - transaction         |       12 |
    | Performance Schema                   |        2 |
    | System Time                          |        2 |
    +--------------------------------------+----------+
    19 rows in set (0.01 sec)
    1 tabel
  • Metrik InnoDB dari 
    select * from setup_instruments limit 1;
    +-------------------------------------------+---------+-------+
    | NAME                                      | ENABLED | TIMED |
    +-------------------------------------------+---------+-------+
    | wait/synch/mutex/sql/TC_LOG_MMAP::LOCK_tc | NO      | NO    |
    +-------------------------------------------+---------+-------+
     
    select * from setup_consumers limit 1;
    +-----------------------+---------+
    | NAME                  | ENABLED |
    +-----------------------+---------+
    | events_stages_current | NO      |
    +-----------------------+---------+
    1 tabel
  • Alokasi memori saat ini dan total berdasarkan pada performance_schema instrumentasi memori

Silakan lihat dokumen sys-metrics untuk informasi lebih lanjut.  

Berikut ini adalah ringkasan tampilan metrik menurut setiap kategori (kolom 

select type, count(*) from sys.metrics group by type;
+--------------------------------------+----------+
| type                                 | count(*) |
+--------------------------------------+----------+
| Global Status                        |      221 |
| InnoDB Metrics - adaptive_hash_index |        8 |
| InnoDB Metrics - buffer              |       57 |
| InnoDB Metrics - buffer_page_io      |       32 |
| InnoDB Metrics - change_buffer       |        8 |
| InnoDB Metrics - compression         |        4 |
| InnoDB Metrics - ddl                 |        6 |
| InnoDB Metrics - dml                 |        4 |
| InnoDB Metrics - icp                 |        4 |
| InnoDB Metrics - index               |        6 |
| InnoDB Metrics - lock                |       12 |
| InnoDB Metrics - metadata            |        3 |
| InnoDB Metrics - os                  |        5 |
| InnoDB Metrics - purge               |        7 |
| InnoDB Metrics - recovery            |       12 |
| InnoDB Metrics - server              |       22 |
| InnoDB Metrics - transaction         |       12 |
| Performance Schema                   |        2 |
| System Time                          |        2 |
+--------------------------------------+----------+
19 rows in set (0.01 sec)
4).  

select type, count(*) from sys.metrics group by type;
+--------------------------------------+----------+
| type                                 | count(*) |
+--------------------------------------+----------+
| Global Status                        |      221 |
| InnoDB Metrics - adaptive_hash_index |        8 |
| InnoDB Metrics - buffer              |       57 |
| InnoDB Metrics - buffer_page_io      |       32 |
| InnoDB Metrics - change_buffer       |        8 |
| InnoDB Metrics - compression         |        4 |
| InnoDB Metrics - ddl                 |        6 |
| InnoDB Metrics - dml                 |        4 |
| InnoDB Metrics - icp                 |        4 |
| InnoDB Metrics - index               |        6 |
| InnoDB Metrics - lock                |       12 |
| InnoDB Metrics - metadata            |        3 |
| InnoDB Metrics - os                  |        5 |
| InnoDB Metrics - purge               |        7 |
| InnoDB Metrics - recovery            |       12 |
| InnoDB Metrics - server              |       22 |
| InnoDB Metrics - transaction         |       12 |
| Performance Schema                   |        2 |
| System Time                          |        2 |
+--------------------------------------+----------+
19 rows in set (0.01 sec)

Perhatikan bahwa angka untuk "Metrik InnoDB -. " pada tabel di atas sama dengan atau lebih kecil dari angka dari 

select * from setup_instruments limit 1;
+-------------------------------------------+---------+-------+
| NAME                                      | ENABLED | TIMED |
+-------------------------------------------+---------+-------+
| wait/synch/mutex/sql/TC_LOG_MMAP::LOCK_tc | NO      | NO    |
+-------------------------------------------+---------+-------+
 
select * from setup_consumers limit 1;
+-----------------------+---------+
| NAME                  | ENABLED |
+-----------------------+---------+
| events_stages_current | NO      |
+-----------------------+---------+
4 tabel. Tampilan metrik menyediakan akses mudah ke angka kasarnya, tetapi terbatas pada 
select type, count(*) from sys.metrics group by type;
+--------------------------------------+----------+
| type                                 | count(*) |
+--------------------------------------+----------+
| Global Status                        |      221 |
| InnoDB Metrics - adaptive_hash_index |        8 |
| InnoDB Metrics - buffer              |       57 |
| InnoDB Metrics - buffer_page_io      |       32 |
| InnoDB Metrics - change_buffer       |        8 |
| InnoDB Metrics - compression         |        4 |
| InnoDB Metrics - ddl                 |        6 |
| InnoDB Metrics - dml                 |        4 |
| InnoDB Metrics - icp                 |        4 |
| InnoDB Metrics - index               |        6 |
| InnoDB Metrics - lock                |       12 |
| InnoDB Metrics - metadata            |        3 |
| InnoDB Metrics - os                  |        5 |
| InnoDB Metrics - purge               |        7 |
| InnoDB Metrics - recovery            |       12 |
| InnoDB Metrics - server              |       22 |
| InnoDB Metrics - transaction         |       12 |
| Performance Schema                   |        2 |
| System Time                          |        2 |
+--------------------------------------+----------+
19 rows in set (0.01 sec)
6 dan 
select type, count(*) from sys.metrics group by type;
+--------------------------------------+----------+
| type                                 | count(*) |
+--------------------------------------+----------+
| Global Status                        |      221 |
| InnoDB Metrics - adaptive_hash_index |        8 |
| InnoDB Metrics - buffer              |       57 |
| InnoDB Metrics - buffer_page_io      |       32 |
| InnoDB Metrics - change_buffer       |        8 |
| InnoDB Metrics - compression         |        4 |
| InnoDB Metrics - ddl                 |        6 |
| InnoDB Metrics - dml                 |        4 |
| InnoDB Metrics - icp                 |        4 |
| InnoDB Metrics - index               |        6 |
| InnoDB Metrics - lock                |       12 |
| InnoDB Metrics - metadata            |        3 |
| InnoDB Metrics - os                  |        5 |
| InnoDB Metrics - purge               |        7 |
| InnoDB Metrics - recovery            |       12 |
| InnoDB Metrics - server              |       22 |
| InnoDB Metrics - transaction         |       12 |
| Performance Schema                   |        2 |
| System Time                          |        2 |
+--------------------------------------+----------+
19 rows in set (0.01 sec)
7. Tidak menambah banyak nilai hanya untuk memiliki informasi parsial. Di sini, saya akan lebih fokus pada ________0______1 tabel

Eksperimen Saya

Mempersiapkan

Inilah lingkungan yang telah saya siapkan untuk eksperimen saya

  • MySQL. 5. 7. 22 (komunitas)
  • buffer_pool_size. 10 GB

Detail konfigurasi dan informasi perangkat keras yang tidak berdampak material pada pemantauan kinerja tidak disediakan di sini.  

Detail eksperimen

Saya menyiapkan skenario sysbench oltp_read_write dengan opsi berikut dan menjalankan benchmark untuk membandingkan performa setiap konfigurasi berdasarkan jumlah transaksi (i. e. TPS, Transaksi Per Detik). Ukuran database, yang diberikan dengan 

select type, count(*) from sys.metrics group by type;
+--------------------------------------+----------+
| type                                 | count(*) |
+--------------------------------------+----------+
| Global Status                        |      221 |
| InnoDB Metrics - adaptive_hash_index |        8 |
| InnoDB Metrics - buffer              |       57 |
| InnoDB Metrics - buffer_page_io      |       32 |
| InnoDB Metrics - change_buffer       |        8 |
| InnoDB Metrics - compression         |        4 |
| InnoDB Metrics - ddl                 |        6 |
| InnoDB Metrics - dml                 |        4 |
| InnoDB Metrics - icp                 |        4 |
| InnoDB Metrics - index               |        6 |
| InnoDB Metrics - lock                |       12 |
| InnoDB Metrics - metadata            |        3 |
| InnoDB Metrics - os                  |        5 |
| InnoDB Metrics - purge               |        7 |
| InnoDB Metrics - recovery            |       12 |
| InnoDB Metrics - server              |       22 |
| InnoDB Metrics - transaction         |       12 |
| Performance Schema                   |        2 |
| System Time                          |        2 |
+--------------------------------------+----------+
19 rows in set (0.01 sec)
9 perintah sysbench, kira-kira. 2. 4 GB. Saya menjalankan skenario oltp_read_write sebagai berikut.  

sysbench /usr/share/sysbench/oltp_read_write.lua 
 --db-driver=mysql 
 --table-size=1000000 
 --tables=10 
 --mysql-host=xxx 
 --mysql-port=3306 
 --mysql-user=sysbench 
 --mysql-password=sysbench 
 --mysql-db=sysbench 
 --time=600 
 --threads=10 
 run

Saya menambahkan konfigurasi berikut ke 

sysbench /usr/share/sysbench/oltp_read_write.lua 
 --db-driver=mysql 
 --table-size=1000000 
 --tables=10 
 --mysql-host=xxx 
 --mysql-port=3306 
 --mysql-user=sysbench 
 --mysql-password=sysbench 
 --mysql-db=sysbench 
 --time=600 
 --threads=10 
 run
0 file dan memutar ulang 
sysbench /usr/share/sysbench/oltp_read_write.lua 
 --db-driver=mysql 
 --table-size=1000000 
 --tables=10 
 --mysql-host=xxx 
 --mysql-port=3306 
 --mysql-user=sysbench 
 --mysql-password=sysbench 
 --mysql-db=sysbench 
 --time=600 
 --threads=10 
 run
1tidak membaca 
sysbench /usr/share/sysbench/oltp_read_write.lua 
 --db-driver=mysql 
 --table-size=1000000 
 --tables=10 
 --mysql-host=xxx 
 --mysql-port=3306 
 --mysql-user=sysbench 
 --mysql-password=sysbench 
 --mysql-db=sysbench 
 --time=600 
 --threads=10 
 run
2di putaran berikutnya

innodb_buffer_pool_dump_at_shutdown = OFF
innodb_buffer_pool_load_at_startup  = OFF

Hasil Eksperimen

Dengan menggunakan opsi di atas, saya menjalankan serangkaian eksperimen untuk membandingkan transaksi per detik (TPS) dari kombinasi yang berbeda dari semua 

select * from innodb_metrics limit 1G
*************************** 1. row ***************************
           NAME: metadata_table_handles_opened
      SUBSYSTEM: metadata
          COUNT: 0
      MAX_COUNT: NULL
      MIN_COUNT: NULL
      AVG_COUNT: NULL
    COUNT_RESET: 0
MAX_COUNT_RESET: NULL
MIN_COUNT_RESET: NULL
AVG_COUNT_RESET: NULL
   TIME_ENABLED: NULL
  TIME_DISABLED: NULL
   TIME_ELAPSED: NULL
     TIME_RESET: NULL
         STATUS: disabled
           TYPE: counter
        COMMENT: Number of table handles opened
6 dan 
select * from innodb_metrics limit 1G
*************************** 1. row ***************************
           NAME: metadata_table_handles_opened
      SUBSYSTEM: metadata
          COUNT: 0
      MAX_COUNT: NULL
      MIN_COUNT: NULL
      AVG_COUNT: NULL
    COUNT_RESET: 0
MAX_COUNT_RESET: NULL
MIN_COUNT_RESET: NULL
AVG_COUNT_RESET: NULL
   TIME_ENABLED: NULL
  TIME_DISABLED: NULL
   TIME_ELAPSED: NULL
     TIME_RESET: NULL
         STATUS: disabled
           TYPE: counter
        COMMENT: Number of table handles opened
7 kolom instrumen/konsumen dari performance_schema dan innodb_metrics versus setelan default. Hasilnya ditunjukkan pada tabel di bawah ini

SETUP_INSTRUMENTS ALL 'ENABLED' COLUMNSETUP_INSTRUMENTS ALL 'TIMED' COLUMNALL INNODB_METRICSTPSTPS rasio vs DEFAULTAVERAGE LATENCYCOMMENTNONODISABLED3506. 251. 0312. 28Semua DINONAKTIFKAN untuk performance_schema dan innodb_metricsNONODEFAULT3496. 401. 0292. 29Semua DINONAKTIFKAN untuk instrumen performance_schemaDEFAULTDEFAULTDISABLED3391. 850. 9982. 36Semua DINONAKTIFKAN untuk innodb_metricsDEFAULTDEFAULTDEFAULT3399. 321. 002. 35DEFAULTDEFAULTDEFAULTENABLED3389. 690. 9972. 36Semua DIAKTIFKAN untuk innodb_metricsYESDEFAULTDEFAULT2906. 150. 8552. 75All ENABLED untuk instrumen performance_schemaYESYESDEFAULT2837. 440. 8352. 82All ENABLED untuk instrumen performance_schema termasuk TIMEDYESDEFAULTENABLED2908. 340. 8562. 75All ENABLED untuk performance_schema dan innodb_metricsYESYESENABLED2825. 310. 8312. 83All ENABLED untuk performance_schema dan innodb_metrics termasuk TIMED

Mari kita analisis hasil untuk setiap skenario, menggunakan TPS dan rasio TPS vs DEFAULT. Tidak mungkin instrumen akan dinonaktifkan secara default di dunia nyata, tetapi ini pasti mempercepat kinerjanya. Konfigurasi innodb_metrics tidak banyak memengaruhi TPS terlepas dari statusnya, AKTIF atau NONAKTIF. Di sisi lain, menyalakan semua instrumen performance_schema menyebabkan TPS mampir sekitar. 15% meskipun mengaktifkan atau menonaktifkan semua instrumen jarang terjadi. Saya akui eksperimen ini dilakukan dengan skenario sederhana seperti skenario oltp_read_write sysbench dan dalam lingkungan sementara dengan buffer_pool overflow dengan data DB. Namun demikian, hasil eksperimen ini menunjukkan bahwa akan lebih efisien jika menghindari pengaktifan semua instrumen performance_schema dan mengambil pendekatan selektif sementara innodb_metrics berdampak kecil pada performa. Anda dapat membuat pilihan karena nilai ini dapat diubah saat runtime

Kesimpulan

Saya menjelaskan tentang Apa dan Bagaimana tentang Skema Performa dan tabel 

innodb_buffer_pool_dump_at_shutdown = OFF
innodb_buffer_pool_load_at_startup  = OFF
1 dan membagikan hasil pembandingan berdasarkan skenario oltp_read_write sysbench untuk berbagai kombinasi penonaktifan atau pengaktifan semua nilai. Ketika semua hal diaktifkan, kinerja turun sekitar 15%. Seperti yang saya katakan sebelumnya, percobaan ini didasarkan pada skenario sederhana (query) tanpa overhead yang signifikan. Jadi, di dunia nyata, Anda perlu mengatur konfigurasi dengan cerdas, mengingat situasi Anda. Saya harap percobaan kecil saya di sini bisa menjadi petunjuk Anda saat Anda perlu membuat pilihan

Bagaimana cara mengaktifkan skema kinerja di MySQL?

Untuk mengaktifkan semua instrumen Skema Kinerja yang tersedia, jeda perangkat penunjuk Anda di atas Diaktifkan Sepenuhnya dan klik lingkaran pada bilah geser . Skema SYS dibundel dengan MySQL Server 5. 7 ke atas, dan MySQL Workbench menggunakan versi itu.

Bagaimana cara menonaktifkan skema kinerja di MySQL?

Variabel performance_schema AKTIF atau NONAKTIF untuk menunjukkan apakah Skema Performa diaktifkan atau dinonaktifkan. .
OFF , FALSE , atau 0. Nonaktifkan instrumen
AKTIF , BENAR , atau 1. Aktifkan dan atur waktu instrumen
TERHITUNG. Aktifkan dan hitung (bukan waktu) instrumen

Apa skema kinerja di MySQL?

Skema Kinerja MySQL adalah fitur untuk memantau eksekusi MySQL Server pada level rendah. Skema Kinerja memiliki karakteristik ini. Skema Kinerja menyediakan cara untuk memeriksa eksekusi internal server saat runtime

Bagaimana cara mengaktifkan skema kinerja di RDS MySQL?

Mengonfigurasi Skema Performa untuk pengelolaan otomatis .
Pilih Grup parameter
Pilih nama grup parameter untuk instans DB atau klaster DB Multi-AZ Anda
Masukkan performance_schema di bilah pencarian
Pilih parameter performance_schema
Pilih Edit parameter
Pilih parameter performance_schema