Sei sulla pagina 1di 27

MySQL Madrid Users Group

Resumen performance_schema
Simon J Mudd | 20/02/2014

Qu es performance_schema?

Motor de MySQL especial


Muestra el estado interno de MySQL: actual y pasado
Disponible desde MySQL 5.5, interesante desde 5.6
Ofrece metricas de bajo nivel: puede ser complicado
comprender los datos
En su configuracin predeterminada no colecciona todo
Tener P_S da un overhead adicional pero sin ello ests
ciego
2

Cmo se configura?
Est habilitado cuando MySQL arranca a travs de la
siguiente opcin en /etc/my.cnf
performance_schema = 1

Hay 2 tablas principales de configuracin:


setup_instruments (546 rows) determina que que cosas estn medidas
setup_consumers (12 rows) - determina que se hace con estas medidas

Tambin existe de 3 tablas menos utilizadas:


setup_actors
setup_objects
setup_timers

setup_consumers
mysql> SELECT * FROM setup_consumers;
+--------------------------------+---------+
| NAME
| ENABLED |
+--------------------------------+---------+
| events_stages_current
| YES
|
| events_stages_history
| YES
|
| events_stages_history_long
| NO
|
| events_statements_current
| YES
|
| events_statements_history
| NO
|
| events_statements_history_long | NO
|
| events_waits_current
| YES
|
| events_waits_history
| YES
|
| events_waits_history_long
| NO
|
| global_instrumentation
| YES
|
| thread_instrumentation
| YES
|
| statements_digest
| YES
|
+--------------------------------+---------+
12 rows in set (0.00 sec)

setup_consumers
Stages
Representa las diferentes etapas durante el procesamiento de
un query

Statements
Informacin sobre diferentes comandos SQL que se est
procesando

Waits

Dnde mysqld espera a un evento durante sus distintas tareas

Global_instrumentation
Informacin global
5

setup_instruments
mysql> SELECT * FROM setup_instruments;
+-----------------------------------------------+---------+-------+
| NAME
| ENABLED | TIMED |
+-----------------------------------------------+---------+-------+
| wait/synch/mutex/sql/PAGE::lock
| NO
| NO
|
| wait/synch/mutex/sql/TC_LOG_MMAP::LOCK_sync
| NO
| NO
|
| wait/synch/mutex/sql/TC_LOG_MMAP::LOCK_active | NO
| NO
|
| wait/synch/mutex/sql/TC_LOG_MMAP::LOCK_pool
| NO
| NO
|
| wait/synch/mutex/sql/LOCK_des_key_file
| NO
| NO
|

+-----------------------------------------------+---------+-------+

setup_instruments
Hay entradas para cada etapa del procesamiento de un
query y aqu se determina si se mide la informacin o
no.
Por ejemplo:

wait/synch/mutex/innodb/trx_mutex
wait/synch/mutex/innodb/os_mutex
wait/synch/rwlock/innodb/fil_space_latch
wait/io/file/sql/binlog
wait/io/file/sql/FRM
.
7

P_S tables
MySQL 5.6 tiene 52 tablas divididas entre:

events_stages (8 tablas: informacin sobre etapas de un query)


events_statements (9 tablas: informacin sobre statements)
events_waits (9 tablas: informacin sobre donde MySQL espera)
file_* (3 tablas: informacin sobre los archivos gestiondos por
MySQL)
host_* (refiere a hosts o clientes de MySQL)
socket_* (refiere al uso de sockets por MySQL)
table_ (refiere a tablas de MySQL)
.
8

Menos teria, alugunos ejemplos


Y ahora unos ejemplos

hosts
Los hosts que han conectado a MySQL:

10

host_cache
Informacin sobre los hosts que han conectado a
MySQL

11

host_cache
Information on hosts connecting to MySQL

12

host_cache
Me di cuenta que el tamao del cache era demasiado
pequeo y esto provoca ms peticiones DNS para
resolver el nombre de la direccin ip
As que hay que configurar the host_cache_size en 5.6
en algunos sistemas. Antes de MySQL 5.6 el valor era
determinado al compilar MySQL.
Relacionado: http://bugs.mysql.com/71382

13

table_io_waits_summary_by_table
El tiempo que se espera al leer o escribir a una tabla

14

file_io_summary_by_instance
El tiempo que se espera para el acceso a un archivo

15

events_waits_history
Dnde est esperando MySQL para su siguiente paso?

16

events_waits_history
Quiz no sorprende:
1 Esperando para un COMMIT (escritura a los archivos
ib_logfile)
2 Esperando para un checkpointing (escritura a archivos .ibd
files)
3r- Esperando para el procesamiento de comandos SQL

17

events_stages_history
Su configuracin no est habilitada de manera
predeterminada
Se configura as:

18

events_stages_history
Dnde est esperando durante el procesamiento SQL?

19

P_S sizing

20

P_S sizing
Las tablas que contienen informacin histrica contiene
los ltimos 10 eventos, las tablas history_long contiene
los ltimos 10,000 eventos
En algunos casos puede ser necesario ajustar estos
parametros.

21

events_statements
Lo que queremos ver todos: lo que hacen los
desarrolladores y buscar los queries malos.
Su configuracin requiere:

22

events_statements

23

ps_helper
Mark Leith desarroll un schema que llam ps_helper.
Contiene una serie de vistas sobre P_S

24

ps_helper
Ahorra tiempo porque simplifica los SELECTs que tienes
que realizar
No tiene coste: son VIEWs
Hay 2 tipos de VIEW: las bonitas con los datos
formateados y otras con la informacin sin ordenar, til
para manipulacin posterior si es necsario.
ps_helper estar incluido en MySQL 5.7 (con el nombre
de schema sys)
25

Resumen
Ha sido un resumen muy breve
P_S contiene mucha informacin muy til
MySQL 5.7 contiene ms tablas
Sobre la utilizacin de memoria
Sobre replicacin y la actividades de los distintos threads

Hay que comprender la informacin que contiene y compartirla con


los desarrolladores, y as permite que pueden optimizar sus queries

26

Referencias
Algunas referencias:
performance_schema
http://dev.mysql.com/doc/refman/5.6/en/performanceschema.html

dba_helper / mysql-sys
https://github.com/MarkLeith/dbahelper/
https://github.com/MarkLeith/mysql-sys/

27

Potrebbero piacerti anche