sys notas biblioteca del sistema (c) - Caso aplicación real

En primer lugar, tomar ventaja de sql de espera para el evento lenta para averiguar dónde

El uso combinado vista sys.session performance_schema de espera para el evento.

En primer lugar que los consumidores puedan esperar a que los instrumentos y eventos relacionados

call sys.ps_setup_enable_instrument('wait');
call sys.ps_setup_enable_consumer('wait');

A continuación, utilice la vista sys.session consulta, inquietud last_wait, campo last_wait_latency

select * from session where command='query' and conn_id!=connection_id()\G;

 

En segundo lugar, para ver si hay una espera de bloqueo de transacciones

innodb_lock_wait ver por lo general debido a analizar se bloquean las transacciones (bloqueo de línea) de espera, la atención debe ser materia de espera de la vista tendrá un valor. De hecho, este punto de vista cuando se utiliza en aplicaciones descrito anteriormente performance_schema también.

MySQL versión 5.7 también se puede utilizar sys.innodb_lock_waits vista de la consulta, pero en 8.0, ver las diferentes tablas de consulta de combinación (la tabla information_schema.innodb_locks y information_schema.innodb_lock_waits utilizado para reemplazar la versión anterior en performance_schema.data_locks orden y performance_schema.data_lock_waits mesa ).

select * from sys.innodb_lock_waits\G;

*************************** 1. row ***************************
            wait_started: 2018-01-14 21:51:59
                wait_age: 00:00:11 <-- 等待时间
          wait_age_secs: 11
            locked_table: `xiaoboluo`.`t_luoxiaobo` <-- 表信息
    locked_table_schema: xiaoboluo
      locked_table_name: t_luoxiaobo
  locked_table_partition: NULL
locked_table_subpartition: NULL
            locked_index: PRIMARY <-- 主键字段
            locked_type: RECORD <-- 行锁
          waiting_trx_id: 55566
    waiting_trx_started: 2018-01-14 21:51:59
        waiting_trx_age: 00:00:11
waiting_trx_rows_locked: 1
waiting_trx_rows_modified: 0
            waiting_pid: 8 <-- 被阻塞的线程id
          waiting_query: update t_luoxiaobo set datet_time=now() where id=2  <-- 被阻塞者正执行的sql语句
        waiting_lock_id: 55566:2:4:2
      waiting_lock_mode: X <-- 锁模式
        blocking_trx_id: 55562
            blocking_pid: 7  <-- 阻塞的线程id
          blocking_query: NULL <-- 阻塞者正执行的sql语句(已经执行完了,但没提交)
        blocking_lock_id: 55562:2:4:2
      blocking_lock_mode: X
    blocking_trx_started: 2018-01-14 21:34:44
        blocking_trx_age: 00:17:26 <-- 持锁时间
blocking_trx_rows_locked: 1
blocking_trx_rows_modified: 1
sql_kill_blocking_query: KILL QUERY 7
sql_kill_blocking_connection: KILL 7  <-- kill阻塞者的语句
1 row in set (0.02 sec)

5.6 y versiones anteriores no es sys biblioteca por defecto, puede utilizar el siguiente comando en su lugar:

SELECT r.trx_wait_started AS wait_started,
  TIMEDIFF(NOW(), r.trx_wait_started) AS wait_age,
  TIMESTAMPDIFF(SECOND, r.trx_wait_started, NOW()) AS wait_age_secs,
  rl.lock_table AS locked_table,
  rl.lock_index AS locked_index,
  rl.lock_type AS locked_type,
  r.trx_id AS waiting_trx_id,
  r.trx_started as waiting_trx_started,
  TIMEDIFF(NOW(), r.trx_started) AS waiting_trx_age,
  r.trx_rows_locked AS waiting_trx_rows_locked,
  r.trx_rows_modified AS waiting_trx_rows_modified,
  r.trx_mysql_thread_id AS waiting_pid,
  sys.format_statement(r.trx_query) AS waiting_query,
  rl.lock_id AS waiting_lock_id,
  rl.lock_mode AS waiting_lock_mode,
  b.trx_id AS blocking_trx_id,
  b.trx_mysql_thread_id AS blocking_pid,
  sys.format_statement(b.trx_query) AS blocking_query,
  bl.lock_id AS blocking_lock_id,
  bl.lock_mode AS blocking_lock_mode,
  b.trx_started AS blocking_trx_started,
  TIMEDIFF(NOW(), b.trx_started) AS blocking_trx_age,
  b.trx_rows_locked AS blocking_trx_rows_locked,
  b.trx_rows_modified AS blocking_trx_rows_modified,
  CONCAT('KILL QUERY ', b.trx_mysql_thread_id) AS sql_kill_blocking_query,
  CONCAT('KILL ', b.trx_mysql_thread_id) AS sql_kill_blocking_connection
FROM information_schema.innodb_lock_waits w
  INNER JOIN information_schema.innodb_trx b ON b.trx_id = w.blocking_trx_id
  INNER JOIN information_schema.innodb_trx r ON r.trx_id = w.requesting_trx_id
  INNER JOIN information_schema.innodb_locks bl ON bl.lock_id = w.blocking_lock_id
  INNER JOIN information_schema.innodb_locks rl ON rl.lock_id = w.requested_lock_id
ORDER BY r.trx_wait_started;

 

En tercer lugar, para ver si hay una espera de bloqueo MDL

MDL puede ver el hilo actual que esperar a la vista de información schema_table_lock_wait (nuevo 5.8.9), que muestra se bloquea y fuente bloqueado la sesión. Fuentes de datos hilos, metadata_locks, mesa events_statements_current bajo performance_schema, para obtener la definición de la vista correspondiente puede ver sql.

En primer lugar de todos los instrumentos pertinentes deberían permitir MDL espera

call sys.ps_setup_enable_instrument('wait/lock/metadata/sql/mdl');

schema_table_lock_wait campo vista por debajo, significado obvio, una referencia detallada  https://dev.mysql.com/doc/refman/5.7/en/sys-schema-table-lock-waits.html

desc schema_table_lock_waits;
+------------------------------+---------------------+------+-----+---------+-------+
| Field                        | Type                | Null | Key | Default | Extra |
+------------------------------+---------------------+------+-----+---------+-------+
| object_schema                | varchar(64)         | YES  |     | NULL    |       |
| object_name                  | varchar(64)         | YES  |     | NULL    |       |
| waiting_thread_id            | bigint(20) unsigned | NO   |     | NULL    |       |
| waiting_pid                  | bigint(20) unsigned | YES  |     | NULL    |       |
| waiting_account              | text                | YES  |     | NULL    |       |
| waiting_lock_type            | varchar(32)         | NO   |     | NULL    |       |
| waiting_lock_duration        | varchar(32)         | NO   |     | NULL    |       |
| waiting_query                | longtext            | YES  |     | NULL    |       |
| waiting_query_secs           | bigint(20)          | YES  |     | NULL    |       |
| waiting_query_rows_affected  | bigint(20) unsigned | YES  |     | NULL    |       |
| waiting_query_rows_examined  | bigint(20) unsigned | YES  |     | NULL    |       |
| blocking_thread_id           | bigint(20) unsigned | NO   |     | NULL    |       |
| blocking_pid                 | bigint(20) unsigned | YES  |     | NULL    |       |
| blocking_account             | text                | YES  |     | NULL    |       |
| blocking_lock_type           | varchar(32)         | NO   |     | NULL    |       |
| blocking_lock_duration       | varchar(32)         | NO   |     | NULL    |       |
| sql_kill_blocking_query      | varchar(31)         | YES  |     | NULL    |       |
| sql_kill_blocking_connection | varchar(25)         | YES  |     | NULL    |       |
+------------------------------+---------------------+------+-----+---------+-------+
18 rows in set (0.00 sec)

 

En cuarto lugar, ver la biblioteca buffer de InnoDB piscina caliente

Usar Ver innodb_buffer_stats_by_schema estadísticas de acuerdo con el esquema de agrupación consulta InnoDB grupo de búfer

select * from innodb_buffer_stats_by_schema;
+---------------+------------+-----------+-------+--------------+-----------+-------------+
| object_schema | allocated | data | pages | pages_hashed | pages_old | rows_cached |
+---------------+------------+-----------+-------+--------------+-----------+-------------+
| InnoDB System | 23.73 MiB | 21.76 MiB | 1519 | 0 | 24 | 21474 |
| mysql | 240.00 KiB | 14.57 KiB | 15 | 0 | 15 | 179 |
| xiaoboluo | 128.00 KiB | 38.93 KiB | 8 | 0 | 5 | 982 |
| sys | 16.00 KiB | 354 bytes | 1 | 0 | 1 | 6 |
| 小萝卜 | 16.00 KiB | 135 bytes | 1 | 0 | 1 | 3 |
+---------------+------------+-----------+-------+--------------+-----------+-------------+

Ver más campos tienen los siguientes significados:

  • object_schema: donde el esquema de objeto, si la tabla pertenece a motor de almacenamiento InnoDB, este campo se muestra como Sistema InnoDB, si el otro motor, este campo muestra para cada nombre de esquema (nombre db).
  • El número de actualmente asignado al esquema del total de bytes de memoria: asignado
  • datos: la cantidad de memoria asignada a la sección de datos de bytes mediante el esquema
  • páginas: esquema actualmente asignada al número total de páginas de memoria
  • El número total de páginas índice hash adaptativo actualmente asignado al esquema: pages_hashed
  • pages_old: página total antigua actualmente asignados al esquema (en la sub-lista en el bloque de edad en las páginas de la lista LRU)
  • búfer de grupo de búfer para el número total de filas de esquema de datos: rows_cached

 

En quinto lugar, el índice de vista de la redundancia

Utilizar el nuevo MySQL 5.7.9 sys.schema_redundant_indexes ver, la fuente de datos por $ schema_flattened_keys sys.x.

Campo Significado Referencia  https://www.docs4dev.com/docs/zh/mysql/5.7/reference/sys-schema-redundant-indexes.html

select * from schema_redundant_indexes;

 

En sexto lugar, el índice de ver sin usar

schema_unused_indexes vista puede ver el índice no utilizada, la fuente de datos para performance_schema.table_io_waits_summary_by_index_usage. La vista en la base de datos para ejecutar el tiempo suficiente después de que los datos tienen un valor de referencia, antes de eliminar el índice debe mantenerse al día con la parte comercial para confirmar.

Campo Significado Referencia  https://www.docs4dev.com/docs/zh/mysql/5.7/reference/sys-schema-unused-indexes.html

select * from schema_unused_indexes;

 

Siete, véase la Tabla IO y estadísticas que requieren mucho tiempo

Ver schema_table_statistics_with_buffer puede ver en la tabla, borrar, cambiar, verificar la cantidad de datos, IO consume mucho tiempo, así como información estadística, que incluyen piscina ocupación de memoria intermedia en InnoDB.

select * from schema_table_statistics_with_buffer;

Campo Significado Referencia  https://dev.mysql.com/doc/refman/5.7/en/sys-schema-table-statistics-with-buffer.html

 

Ocho, el tráfico y el disco de lectura y escritura de archivos de disco Vista generada proporcional

io_global_by_file_by_bytes pueden ver el nombre de la (nombre de archivo de disco), que agrupa a ver el número total de bytes IO por la ruta del archivo, el archivo de lectura y escritura estadísticas IO para el número de eventos por defecto en orden descendente de acuerdo con el número total de bytes de lectura y escritura IO.

select * from io_global_by_file_by_bytes;

nombre del campo

significado

Archivo

Nombre del archivo que se está operado

Count_read

Hay muchas veces leído

Total_read

Un total de bytes leídos

Avg_read

El número promedio de bytes leídos cada

Count_write

¿Cuántas veces en siniestro total

Total_written

Escribió un total de cuántos bytes

Avg_write

de escritura media de bytes cada uno

Total

Un total de IO leer y escribir

Write_pct

Escribir en el porcentaje asignado para IO

Campo Significado Referencia  https://dev.mysql.com/doc/refman/5.7/en/sys-io-global-by-file-by-bytes.html

 

Nueve, para ver qué instrucciones utilizan un escaneo completo de tabla

statements_with_full_table_scans ver el escaneo completo de tabla o el índice no se utiliza para una declaración óptima (después de la conversión texto de la sentencia normalizada), el número de exploración predeterminado de acuerdo con el porcentaje medio de tiempo total de retardo y los estados (tiempo de ejecución) en orden descendente. Fuente: performance_schema.events_statements_summary_by_digest

select * from statements_with_full_table_scans limit 1\G;

*************************** 1. row ***************************
              query: SELECT `performance_schema` .  ... ance` . `SUM_TIMER_WAIT` DESC 
                  db: sys
          exec_count: 1
      total_latency: 938.45 us
no_index_used_count: 1
no_good_index_used_count: 0
  no_index_used_pct: 100
          rows_sent: 3
      rows_examined: 318
      rows_sent_avg: 3
  rows_examined_avg: 318
          first_seen: 2017-09-07 09:34:12
          last_seen: 2017-09-07 09:34:12
              digest: 5b5b4e15a8703769d9b9e23e9e92d499
1 row in set (0.01 sec)

Ver más campos tienen los siguientes significados:

  • consulta: estandarizada conversión de la serie de la sentencia
  • DB: declaración correspondiente base de datos por defecto, si no hay una base de datos predeterminada, el campo es NULL
  • exec_count: número total de declaraciones ejecutado
  • total_latency: El tiempo de retardo total de ejecución de sentencia (tiempo de ejecución)
  • El número total de instrucciones ejecutadas sin el uso de una tabla de índices de exploración (pero el uso de escaneo completo de tabla) de: no_index_used_count
  • no_good_index_used_count: ejecución de la sentencia no se utiliza para mejor el número total de índice de la tabla de barrido
  • declaración del porcentaje se ejecuta no utiliza una tabla de índices de exploración (pero el uso de escaneo completo de tabla) y el número total de ejecución de la declaración: no_index_used_pct
  • la ejecución vuelve comunicado de la tabla con el número total de filas de datos del cliente: rows_sent
  • rows_examined: el número total de filas de datos de los cheques de motor de almacenamiento se ejecuta la instrucción
  • rows_sent_avg: Devuelve el número de clientes de la mesa se ejecuta la fila de datos promedio para cada declaración
  • rows_examined_avg: el número medio de filas de datos de cada declaración lee desde el motor de ejecución de la memoria
  • first_seen: tiempo hasta la primera aparición de la declaración
  • last_seen: última vez que la declaración apareció
  • digerir: MD5 cálculo del valor hash del estado resumido

Campo Significado Referencia  https://dev.mysql.com/doc/refman/5.7/en/sys-statements-with-full-table-scans.html

 

Diez, para ver qué declaraciones utilizar el archivo de clasificación

statements_with_sorting vista para ver el documento ordenando la sentencia de ejecución, en orden descendente según el comunicado del tiempo total de demora (tiempo de ejecución) De manera predeterminada, las fuentes de datos: performance_schema.events_statements_summary_by_digest

select * from statements_with_sorting limit 1\G;

*************************** 1. row ***************************
        query: SELECT IF ( ( `locate` ( ? , ` ...  . `COMPRESSED_SIZE` ) ) DESC 
          db: sys
  exec_count: 4
total_latency: 46.53 s
sort_merge_passes: 48
avg_sort_merges: 12
sorts_using_scans: 16
sort_using_range: 0
  rows_sorted: 415391
avg_rows_sorted: 103848
  first_seen: 2017-09-07 12:36:58
    last_seen: 2017-09-07 12:38:37
      digest: 59abe341d11b5307fbd8419b0b9a7bc3
1 row in set (0.00 sec)

Ver más campos tienen los siguientes significados:

  • consulta: estandarizada conversión de la serie de la sentencia
  • DB: declaración correspondiente base de datos por defecto, si no hay una base de datos predeterminada, el campo es NULL
  • exec_count: número total de declaraciones ejecutado
  • total_latency: El tiempo de retardo total de ejecución de sentencia (tiempo de ejecución)
  • sort_merge_passes: El número total de declaraciones se produce la ejecución de sentencias de pedidos consolidada
  • avg_sort_merges: Declaración del número medio de SUM_SORT_MERGE_PASSES sort-merge / COUNT_STAR
  • sorts_using_scans: declaración de ordenar la puesta en práctica del número total de escaneos completos de tabla
  • sort_using_range: el número total de declaraciones para realizar el tipo de exploración de distancia
  • rows_sorted: número de instrucciones que realizan el tipo de datos se produjo total fila
  • avg_rows_sorted: Declaración del número medio de filas de datos a SUM_SORT_ROWS especie / COUNT_STAR
  • first_seen: tiempo hasta la primera aparición de la declaración
  • last_seen: última vez que la declaración apareció
  • digerir: MD5 cálculo del valor hash del estado resumido

Campo Significado Referencia  https://dev.mysql.com/doc/refman/5.7/en/sys-statements-with-sorting.html

 

XI, ver qué estados utilizan una tabla temporal

tatements_with_temp_tables vista utiliza una tabla temporal de los estados, en orden descendente de acuerdo con el número de tablas temporales del disco y memoria cantidades de tabla temporales por defecto. Fuente: performance_schema.events_statements_summary_by_digest

select * from statements_with_temp_tables limit 1\G;

*************************** 1. row ***************************
              query: SELECT `performance_schema` .  ... name` . `SUM_TIMER_WAIT` DESC 
                  db: sys
          exec_count: 2
      total_latency: 1.53 s
  memory_tmp_tables: 458
    disk_tmp_tables: 38
avg_tmp_tables_per_query: 229
tmp_tables_to_disk_pct: 8
          first_seen: 2017-09-07 11:18:31
          last_seen: 2017-09-07 11:19:43
              digest: 6f58edd9cee71845f592cf5347f8ecd7
1 row in set (0.00 sec)

Ver más campos tienen los siguientes significados:

  • consulta: estandarizada conversión de la serie de la sentencia
  • DB: declaración correspondiente base de datos por defecto, si no hay una base de datos predeterminada, el campo es NULL
  • exec_count: número total de declaraciones ejecutado
  • total_latency: El tiempo de retardo total de ejecución de sentencia (tiempo de ejecución)
  • memory_tmp_tables: El número total de memoria interna para crear una tabla temporal cuando se ejecuta la instrucción
  • El número total de tablas temporales en disco internas se crean al ejecutar la instrucción: disk_tmp_tables
  • avg_tmp_tables_per_query: declaración sobre el número medio de tablas temporales de memoria SUM_CREATED_TMP_TABLES / COUNT_STAR
  • tmp_tables_to_disk_pct: el número total de porcentaje de la cantidad total de las tablas de memoria y de disco temporal tablas indican que la tasa de conversión SUM_CREATED_TMP_DISK_TABLES temporales en disco tablas / SUM_CREATED_TMP_TABLES
  • first_seen: tiempo hasta la primera aparición de la declaración
  • last_seen: última vez que la declaración apareció
  • digerir: MD5 cálculo del valor hash del estado resumido

Campo Significado Referencia  https://dev.mysql.com/doc/refman/5.7/en/sys-statements-with-temp-tables.html

Publicados 295 artículos originales · ganado elogios 35 · Vistas a 80000 +

Supongo que te gusta

Origin blog.csdn.net/Hehuyi_In/article/details/105316448
Recomendado
Clasificación