En "Vista de estadísticas de eficiencia estadística | Una comprensión completa de la biblioteca del sistema sys" , presentamos una vista rápida de la eficiencia de ejecución de las sentencias de consulta utilizando la biblioteca del sistema sys. Este número le presentará algunas vistas mixtas clasificadas de manera inconveniente. El último artículo de la serie que presenta las vistas.
PD: Debido a la particularidad de la función de vista mencionada en este artículo (DBA puede necesitar consultar alguna información para algunos análisis de datos en el trabajo diario), el texto de la declaración de selección en algunas vistas se enumerará a continuación, para que todos puedan ser más intuitivos. Aprender.
01
métrica
Indicadores de recuento de servidores, incluidas algunas métricas internas en Innodb, variables de estado global y hora actual del sistema, ordenadas por tipo de variable y nombre de forma predeterminada. Fuente de datos: global_status, memory_summary_global_by_event_name, information_schema.innodb_metrics, NOW () y UNIX_TIMESTAMP () funciones de performance_schema
La vista contiene las siguientes partes de información
* de los nombres de las variables de estado global y sus valores estadísticos en la tabla performance_schema.global_status
* de las variables indicadoras innodb y los valores estadísticos en la tabla information_schema.innodb_metrics
* de la suma de las asignaciones actuales en la supervisión de la memoria performance_schema Las estadísticas históricas totales de memoria asignada
* provienen de la hora actual del sistema (usando marcas de tiempo Unix en un formato legible)
* PD: hay algunas estadísticas duplicadas entre la tabla global_status y la tabla innodb_metrics, deduplicación en la vista de métricasEsta vista se agregó en MySQL 5.7.9
Echemos un vistazo a los resultados devueltos por la consulta usando esta vista
admin@localhost : sys 10:49:59> select * from metrics where type='global status' limit 5;
+----------------------------+----------------+---------------+---------+
| Variable_name | Variable_value | Type | Enabled |
+----------------------------+----------------+---------------+---------+
| aborted_clients | 0 | Global Status | YES |
| aborted_connects | 0 | Global Status | YES |
| binlog_cache_disk_use | 0 | Global Status | YES |
| binlog_cache_use | 1159 | Global Status | YES |
| binlog_stmt_cache_disk_use | 0 | Global Status | YES |
+----------------------------+----------------+---------------+---------+
5 rows in set (0.17 sec)
admin@localhost : sys 11:04:01> select * from metrics where type='InnoDB Metrics - transaction' limit 5;
+---------------------------+----------------+------------------------------+---------+
| Variable_name | Variable_value | Type | Enabled |
+---------------------------+----------------+------------------------------+---------+
| trx_active_transactions | 0 | InnoDB Metrics - transaction | NO |
| trx_commits_insert_update | 0 | InnoDB Metrics - transaction | NO |
| trx_nl_ro_commits | 0 | InnoDB Metrics - transaction | NO |
| trx_rollbacks | 0 | InnoDB Metrics - transaction | NO |
| trx_rollbacks_savepoint | 0 | InnoDB Metrics - transaction | NO |
+---------------------------+----------------+------------------------------+---------+
5 rows in set (0.02 sec)
Los significados de los campos de vista son los siguientes:
Variable_name: el nombre de la variable métrica, el tipo de la variable métrica determina la fuente de los datos
* Para las variables de estado global, este valor de campo corresponde a la columna VARIABLE_NAME de la tabla performance_schema.global_status
* Para la variable indicadora innodb, este valor de campo corresponde a la columna NAME de la tabla information_schema.innodb_metrics
* Para las métricas de monitoreo de memoria de performance_schema, use memory_current_allocated proporcionada por la vista de métricas para representar el uso de memoria actual, y memory_total_allocated para representar la asignación de memoria histórica total.
* Para métricas de marca de tiempo del sistema, use unix generado por now () y unix_timestamp (ahora ()) Formato de hora y marca de tiempoVariable_value: valor de la variable de medida. El tipo de variable métrica determina la fuente de los datos:
* Para variables de estado global: este campo corresponde a la columna VARIABLE_VALUE de la tabla performance_schema.global_status
* Para variables indicadoras InnoDB: este campo corresponde a la columna COUNT de la tabla information_schema.INNODB_METRICS
* Para la memoria de performance_schema Indicadores de monitoreo, uso de memoria actual y asignación de memoria histórica total, respectivamente, para sumar CURRENT_NUMBER_OF_BYTES_USED y SUM_NUMBER_OF_BYTES_ALLOC en la tabla performance_schema.memory_summary_global_by_event_name
* Para el valor de tiempo actual: use ahora () y unix (marca de tiempo) para generar Y marca de tiempoTipo: tipo de variable métrica:
* Para variables de estado global: el valor de esta columna es 'Estado global'
* Para métricas InnoDB: el valor de esta columna es 'Métricas de InnoDB-%', donde el signo% usa información_esquema al generar los indicadores de variables métricas correspondientes El valor de la columna SUBSYSTEM de la tabla .INNODB_METRICS se reemplaza y se genera la salida (función de conversión: CONCAT ('InnoDB Metrics-', SUBSYSTEM) AS Type)
* Para los indicadores de memoria monitoreados en performance_schema: el valor de la columna es 'Performance Schema'
* Para la hora actual del sistema: El valor de la columna es 'System Time'Habilitado: si la variable de medición está habilitada
* Para las variables de estado global: el valor de la columna siempre se muestra como 'Sí'
* Para los indicadores InnoDB: Si la columna ESTADO de la tabla information_schema.INNODB_METRICS está habilitada, el valor de la columna se muestra como 'Sí', de lo contrario es 'No'
* Para medición de memoria: los valores posibles de esta columna son NO, YES, PARTIAL (actualmente, PARTIAL solo se usa para indicadores de memoria, lo que significa que todos los indicadores de monitoreo de memoria no están habilitados. Todos los indicadores de monitoreo de memoria que comienzan con performance_schema están habilitados por defecto). No se puede cerrar)
* Para la hora actual del sistema: el valor de esta columna siempre se muestra como 'Sí'
PD: con respecto a la vista de métricas, se trata de una tabla innodb_metrics en information_schema, que registra algunas unidades de medida detalladas del motor Innodb, la mayoría de las cuales están desactivadas de forma predeterminada. Puede usar innodb_monitor_disable, innodb_monitor_enable, innodb_monitor_reset, innodball_monitor_reset_reset, innodball_monitor_reset_ , Cerrar, restablecer el recuento y otras operaciones, consulte el enlace para obtener más detalles:
https://dev.mysql.com/doc/refman/5.7/en/innodb-metrics-table.html
https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_monitor_reset
02
ps_check_lost_instrumentation
El usuario consulta el valor de la variable de estado correspondiente al instrumento que ha perdido la monitorización. Si se encuentra un valor no nulo, significa que hay datos de estado de ejecución que no pueden ser monitorizados por performance_schema. Fuente de datos: performance_schema.global_status
Ver texto de consulta
SELECT variable_name, variable_value
FROM performance_schema.global_status
WHERE variable_name LIKE 'perf%lost'
AND variable_value > 0;
Echemos un vistazo a los resultados devueltos por la consulta usando esta vista
# 默认设置值可能很难出现监控丢失的情况,如果你需要查看到该视图输出结果,你可以通过调整相关系统变量阀值来实现
admin@localhost : sys 11:11:20> select * from ps_check_lost_instrumentation;
+----------------------------------------+----------------+
| variable_name | variable_value |
+----------------------------------------+----------------+
| Performance_schema_rwlock_classes_lost | 1 |
+----------------------------------------+----------------+
1 row in set (0.00 sec)
Los significados de los campos de vista son los siguientes:
variable_name: el nombre de la variable de estado de "performance_schema" para mostrar qué tipo de monitorización del instrumento se pierde
variable_value: el valor correspondiente al nombre de la variable de estado que ha perdido la monitorización del instrumento
03
session_ssl_status
Ver información de estado del enlace SSL (mostrar la versión SSL, la contraseña y el recuento de la sesión SSL reutilizada), fuente de datos: performance_schema.status_by_thread
Esta vista se agregó en MySQL 5.7.9
Ver texto de consulta
SELECT sslver.thread_id,
sslver.variable_value ssl_version,
sslcip.variable_value ssl_cipher,
sslreuse.variable_value ssl_sessions_reused
FROM performance_schema.status_by_thread sslver
LEFT JOIN performance_schema.status_by_thread sslcip
ON (sslcip.thread_id=sslver.thread_id and sslcip.variable_name='Ssl_cipher')
LEFT JOIN performance_schema.status_by_thread sslreuse
ON (sslreuse.thread_id=sslver.thread_id and sslreuse.variable_name='Ssl_sessions_reused')
WHERE sslver.variable_name='Ssl_version';
Echemos un vistazo a los resultados devueltos por la consulta usando esta vista
admin@localhost : sys 12:45:27> select * from session_ssl_status;
+-----------+-------------+------------+---------------------+
| thread_id | ssl_version | ssl_cipher | ssl_sessions_reused |
+-----------+-------------+------------+---------------------+
| 45 | | | 0 |
| 46 | | | 0 |
| 47 | | | 0 |
| 48 | | | 0 |
| 49 | | | 0 |
+-----------+-------------+------------+---------------------+
5 rows in set (0.00 sec)
Los significados de los campos de vista son los siguientes:
thread_id: el ID del hilo de la conexión
SSL_VERSION: versión SSL utilizada para la conexión
ssl_cipher: el cifrado SSL utilizado para la conexión. Si el cliente usa una conexión SSL, el nivel de sesión consultado por la conexión tiene un valor de cadena similar a 'DHE-RSA-AES128-GCM-SHA256'
ssl_sessions_reused: el número de sesiones SSL reutilizadas por la conexión (las conexiones ssl pueden ser almacenadas en caché y reutilizadas por otros clientes que admiten conexiones ssl)
04
versión
Ver la biblioteca del sistema sys actual y la versión del servidor MySQL, fuente de datos: valor fijo de selección similar '1.5.1' y salida de función de versión () en la declaración de definición de vista
Ver texto de consulta
SELECT '1.5.1' AS sys_version,
version() AS mysql_version;
Echemos un vistazo a los resultados devueltos por la consulta usando esta vista
admin@localhost : sys 12:57:53> select * from version;
+-------------+---------------+
| sys_version | mysql_version |
+-------------+---------------+
| 1.5.1 | 5.7.18-log |
+-------------+---------------+
1 row in set (0.00 sec)
El significado de los campos de vista es el siguiente
sys_version: versión de la biblioteca del sistema sys
mysql_version: versión del servidor MySQL
05
x $ ps_digest_95th_percentile_by_avg_us
La vista de ayuda (intento de asistente) calcula el valor de distribución del tiempo de ejecución promedio del 95% de la declaración, y la vista de declaraciones de ayuda_con_runtimes_in_95th_percentile genera la información estadística de la declaración cuyo tiempo de ejecución promedio es superior al 95% del valor de distribución promedio, ordenada por el valor porcentual del histograma de forma predeterminada. Fuente de datos: performance_schema.events_statements_summary_by_digest, sys.x $ ps_digest_avg_latency_distribution
Echemos un vistazo a los resultados devueltos por la consulta usando esta vista
admin@localhost : sys 12:59:57> select * from x$ps_digest_95th_percentile_by_avg_us;
+--------+------------+
| avg_us | percentile |
+--------+------------+
| 450384 | 0.9528 |
+--------+------------+
1 row in set (0.02 sec)
El significado de los campos de vista es el siguiente
avg_us: el tiempo medio de ejecución de la declaración (en microsegundos)
percentil: el valor porcentual del histograma, que representa un intervalo de distribución del tiempo de ejecución promedio de la declaración
06
x $ ps_digest_avg_latency_distribution
Vista de ayuda (intento asistido), utilizada para ayudar a x $ ps_digest_95th_percentile_by_avg_us vista para generar el 95% del valor de distribución del tiempo de ejecución promedio de las declaraciones, fuente de datos: performance_schema.events_statements_summary_by_digest
Echemos un vistazo a los resultados devueltos por la consulta usando esta vista
admin@localhost : sys 01:00:38> select * from x$ps_digest_avg_latency_distribution limit 3;
+-----+--------+
| cnt | avg_us |
+-----+--------+
| 2 | 38 |
| 1 | 43 |
| 1 | 57 |
+-----+--------+
3 rows in set (0.00 sec)
Los significados de los campos de vista son los siguientes:
cnt: el valor del recuento de agrupaciones según el tiempo medio de ejecución de la declaración
avg_us: el tiempo medio de ejecución de la declaración (en microsegundos)
07
x $ ps_schema_table_statistics_io
Vista de ayuda (intento de asistencia), utilizada para ayudar a schema_table_statistics, x $ schema_table_statistics, schema_table_statistics_with_buffer, x $ schema_table_statistics_with_buffer vista de estadísticas de tabla para generar estadísticas de tabla, fuente de datos: performance_schema.file_summary_by_instance
Echemos un vistazo a los resultados devueltos por la consulta usando esta vista
admin@localhost : sys 01:00:42> select * from x$ps_schema_table_statistics_io limit 3;
+-----------------+-----------------+------------+--------------------------+----------------+-------------+---------------------------+-----------------+------------+----------------+
| table_schema | table_name | count_read | sum_number_of_bytes_read | sum_timer_read | count_write | sum_number_of_bytes_write | sum_timer_write | count_misc | sum_timer_misc |
+-----------------+-----------------+------------+--------------------------+----------------+-------------+---------------------------+-----------------+------------+----------------+
| @5c0f@841d@535c | @5c0f@841d@535c | 11 | 115897 | 40409405625 | 0 | 0 | 0 | 11 | 6395506125 |
| binlog | mysql-bin | 279 | 411513 | 4898542125 | 459 | 408800 | 9443458500 | 455 | 2049668827875 |
| charsets | Index | 1 | 18710 | 16713311625 | 0 | 0 | 0 | 2 | 83737125 |
+-----------------+-----------------+------------+--------------------------+----------------+-------------+---------------------------+-----------------+------------+----------------+
3 rows in set (0.01 sec)
Los significados de los campos de vista son los siguientes:
table_schema: el nombre del esquema que contiene table_name
table_name: nombre de la tabla
count_read: el número total de ocurrencias de eventos de E / S de lectura de archivo de la tabla correspondiente
sum_number_of_bytes_read: el número total de bytes de eventos de E / S de lectura de archivo correspondientes a la tabla
sum_timer_read: El tiempo de retardo total (tiempo de ejecución) del evento de E / S de lectura de archivo de la tabla correspondiente
count_write: el número total de ocurrencias de eventos de E / S de escritura de archivo correspondientes a la tabla
sum_number_of_bytes_write: el número total de bytes de eventos de E / S de escritura de archivo correspondientes a la tabla
sum_timer_write: El tiempo de retardo total (tiempo de ejecución) del evento de E / S de escritura de archivo de la tabla correspondiente
count_misc: el número total de ocurrencias de eventos de E / S varios de archivo en la tabla correspondiente
sum_timer_misc: El tiempo de retardo total (tiempo de ejecución) del evento de E / S varios de archivo de la tabla correspondiente
08
x $ schema_flattened_keys
Vista de ayuda, utilizada para ayudar a schema_redundant_indexes a ver información de índice redundante de salida, fuente de datos: INFORMATION_SCHEMA.STATISTICS
Echemos un vistazo a los resultados devueltos por la consulta usando esta vista
admin@localhost : sys 01:01:20> select * from x$schema_flattened_keys limit 3;
+--------------+-------------+-------------------+------------+----------------+---------------+
| table_schema | table_name | index_name | non_unique | subpart_exists | index_columns |
+--------------+-------------+-------------------+------------+----------------+---------------+
| luoxiaobo | public_num | PRIMARY | 0 | 0 | id |
| luoxiaobo | public_num | public_name_index | 0 | 0 | public_name |
| luoxiaobo | t_luoxiaobo | PRIMARY | 0 | 0 | id |
+--------------+-------------+-------------------+------------+----------------+---------------+
3 rows in set (0.00 sec)
Los significados de los campos de vista son los siguientes:
TABLE_SCHEMA: el nombre del esquema que contiene la tabla de índice
TABLE_NAME: el nombre de la tabla que contiene el índice
INDEX_NAME: nombre del índice
NON_UNIQUE: el número de columnas no únicas en el índice
subpart_exists: si el índice es un índice de prefijo
index_columns: nombres de columna en el índice
El contenido de este número se presenta aquí, y el enlace de referencia para el contenido de este número es el siguiente:
https://dev.mysql.com/doc/refman/5.7/en/sys-metrics.html
https://dev.mysql.com/doc/refman/5.7/en/sys-ps-check-lost-instrumentation.html
https://dev.mysql.com/doc/refman/5.7/en/sys-session-ssl-status.html
https://dev.mysql.com/doc/refman/5.7/en/sys-version.html
| Sobre el autor
Luo Xiaobo · Experto en tecnología de bases de datos
Uno de los autores de "A Thousand Golden Recipes-MySQL Performance Optimization Pyramid Rule", "Data Ecology: MySQL Replication Technology and Production Practice". Familiarizado con la arquitectura MySQL, bueno en el ajuste general de bases de datos, me gusta especializarse en tecnología de código abierto y interesado en la promoción de la tecnología de código abierto, ha compartido muchos temas de bases de datos públicas en línea y fuera de línea, y ha publicado casi 100 artículos de investigación relacionados con bases de datos.
Se acabó el texto completo.
Disfruta MySQL :)
La clase "MySQL Core Optimization" de Teacher Ye se ha actualizado a MySQL 8.0, escanee el código para comenzar el viaje de la práctica de MySQL 8.0