sys Remarques Bibliothèque du système (a) - Introduction et démarrage rapide

Série d'articles faisant référence à « Performance MySQL loi Pyramide d'optimisation », a supprimé le livre et l'explication répétée est trop complexe quelques explications, s'il vous plaît se référer à la version complète du livre original.

Devant une série de notes présentées performance_schema le système de bibliothèque, il mis devant l' une des raisons est parce qu'il est la source des bibliothèques système de données. Cette série est basée sur MySQL finition version 5.7.18

 

A, prémisse de la bibliothèque système SYS

Avant d'utiliser les bibliothèques système sys, nous devons veiller à ce que l'environnement de base de données répond aux conditions suivantes:

Version 1) MySQL 5.6 ou supérieur

2) 启用 performance_schema (performance_schema = on)

3) Pour avoir un accès complet aux bibliothèques système sys, les utilisateurs doivent avoir les droits suivants:

  • l'autorisation SELECT sur toutes les tables et vues sys
  • A privilèges Sys EXECUTE à toutes les procédures stockées et fonctions
  • Have INSERT, UPDATE autorisations sur la table sys_config
  • système pour certaines bibliothèques Sys procédures et fonctions stockées nécessite des privilèges supplémentaires, tels que la procédure stockée ps_setup_save () nécessite une table temporaire des droits voisins

4) ont été associés à l'objet pour effectuer une des autorisations d'accès de bibliothèque de système SYS

  • Toute table performance_schema est la bibliothèque du système d'accès doit avoir le privilège SELECT; Pour utiliser les bibliothèques système sys pour les tables liées à performance_schema pour effectuer la mise à jour, vous devez tableau concernant performance_schema Les autorisations UPDATE
  • PROCESSUS privilège table INFORMATION_SCHEMA.INNODB_BUFFER_PAGE

5) Pour utiliser les bibliothèques système de toutes les fonctionnalités, vous devez activer certains performance_schema des instruments et des consommateurs:

  • Tous les instruments d'attente
  • Tous les instruments de scène
  • Tous les instruments de déclaration
  • Pour les instruments a permis le type d'événement, vous devez également activer le type de consommateurs correspondant (xxx_current et xxx_history_long)

Vous pouvez utiliser les bibliothèques système sys pour permettre à tous les instruments et les consommateurs ont besoin (détails des procédures stockées peuvent montrer create procedure, voir la déclaration):

  • 启用 所有 attendre instruments: CALL sys.ps_setup_enable_instrument ( 'attente');
  • Activer tous les instruments de scène: CALL sys.ps_setup_enable_instrument ( 'scène');
  • Activer tous les instruments de déclaration: CALL sys.ps_setup_enable_instrument ( 'déclaration');
  • Activer tous les types de table en cours d'événements: CALL sys.ps_setup_enable_consumer ( 'courant');
  • Activer table tous les types d'événements: CALL le sys.ps_setup_enable_consumer ( 'history_long');

Remarque:

La configuration par défaut performance_schema pour répondre à la plupart des bibliothèques de système de collecte de données. Tous les instruments et la performance permettront aux consommateurs mentionnées ci-dessus ont un impact, il est préférable de permettre que la configuration requise. Vous pouvez utiliser CALL sys.ps_setup_reset_to_default (TRUE), revenir rapidement à la configuration par défaut de performance_schema.

Pour connaître les exigences d'autorisation plus complexes, vous pouvez généralement créer un compte avec des privilèges d'administrateur, bien sûr, si vous avez une demande claire, qui est une autre question, mais les bibliothèques du système sys sont généralement fournis au DBA à utiliser pour résoudre certains problèmes, sous l'enquête en cause plus ou moins aura un impact sur la performance (principalement reflété dans les fonctions performance_schema généraux de performance mis en œuvre), dans le cas de la demande inconnue, pas recommandé d'ouvrir ces capacités à utiliser comme un moyen de routine de surveillance.

 

Deux, bibliothèque système sys première expérience

Vous pouvez passer à la vue sous les bibliothèques système de demandes de renseignements directes, comme une table de recherche dans une bibliothèque comme suit:

# version视图可以查看sys 系统库和mysql server的版本号
mysql> USE sys;
mysql> SELECT * FROM version;
+ ------------- + ----------------- +
| sys_version | mysql_version |
+ ------------- + ----------------- +
| 1.5.0 | 5.7.9-debug-log |
+ ------------- + ----------------- +

sys contient beaucoup considèrent le système de bibliothèque, la polymérisation est calculée de diverses manières à afficher table performance_schema. Dont la plupart sont par paires, deux vues du même nom, mais le préfixe de caractère « x $ » en vue, par exemple: host_summary_by_file_io et x $ host_summary_by_file_io, statistiques sommaires au nom de l'hôte conformément au dossier de données de performance E / S, deux l' accès à une vue de source de données est la même, mais la vue create, la vue sans x $ est la valeur des données de corrélation soumises à la conversion de l' unité réaffichage, x $ préfixe avec vue montre les données brutes (picosecondes).

# 输出信息经过单位换算,可读性更高
mysql> SELECT * FROM host_summary_by_file_io;
+------------+-------+------------+
| host      | ios  | io_latency |
+------------+-------+------------+
| localhost  | 67570 | 5.38 s    |
| background |  3468 | 4.18 s    |
+------------+-------+------------+

# 带x$的视图显示原始的皮秒单位数值,对于程序或工具获取使用更易于数据处理
mysql> SELECT * FROM x$host_summary_by_file_io;
+------------+-------+---------------+
| host      | ios  | io_latency    |
+------------+-------+---------------+
| localhost  | 67574 | 5380678125144 |
| background |  3474 | 4758696829416 |
+------------+-------+---------------+

Pour voir la déclaration de définition d'objet bibliothèque système sys, vous pouvez utiliser l'instruction SHOW approprié ou des requêtes INFORMATION_SCHEMA.

mysql> SHOW CREATE VIEW session;
mysql> SHOW CREATE FUNCTION format_bytes;

Pour voir les déclarations plus de définition de l'objet de format lisible, vous pouvez accéder aux fichiers sur divers site Web du système de développement de base de données Sql https://github.com/mysql/mysql-sys, ou utiliser l'outil mysqldump pour exporter et bibliothèque par défaut de mysqlpump , mysqldump et mysqlpump ne sont pas exportés bibliothèques système sys. Pour générer un fichier d'exportation contient le système de bibliothèque sys, la commande suivante peut être utilisée pour spécifier explicitement bibliothèque système sys. Bien que vous pouvez exporter la définition de la vue, mais par rapport à la déclaration de définition initiale est toujours manquant une grande partie du contenu, la lisibilité est mieux que simplement montrer directement créer vue:

mysqldump --databases --routines sys> sys_dump.sql
mysqlpump sys> sys_dump.sql
# 如果要重新导入sys 系统库,可以使用如下命令:
mysql < sys_dump.sql

 

En troisième lieu, les progrès de la déclaration des transactions

À partir 5.7.9 MySQL, vue bibliothèque système sys fournit un rapport d'étape sur les transactions longues et vu par session et vue processlist x $ préfixe, qui contient fond processlist et fil de premier plan d'informations d'événement en cours, la session ne sont pas inclus fil de fond démon de fil et commande, comme suit:

processlist
session
x$processlist
x$session

vue de la session appeler directement vue processlist et filtrer la commande de fil d'arrière-plan fil Daemon.

fil processlist reliant les fils de la requête, events_waits_current, events_stages_current, events_statements_current, events_transactions_current, sys.x memory_by_thread_by_current_bytes de $, table session_connect_attrs, donc besoin d'ouvrir les instruments appropriés et les consommateurs, qui, autrement, n'ont pas ouvert un champ d'information correspondant à la colonne qui est NULL, le champ trx_state à fil ACTIVE, le progrès sortie peut les informations de progression en pourcentage, mais seulement pour soutenir les progrès de l'événement sera compté et imprimé.

-- 查看当前正在执行的语句进度信息
select * from session where conn_id!=connection_id() and trx_state='ACTIVE'\G;

*************************** 1. row ***************************
            thd_id: 47
          conn_id: 5
              user: admin@localhost
                db: sbtest
          command: Query
            state: alter table (merge sort)
              time: 29
current_statement: alter table sbtest1 add index i_c(c)
statement_latency: 29.34 s
          progress: 49.70  ------ 进度
      lock_latency: 4.34 ms
    rows_examined: 0
        rows_sent: 0
    rows_affected: 0
        tmp_tables: 0
  tmp_disk_tables: 0
        full_scan: NO
    last_statement: NULL
last_statement_latency: NULL
    current_memory: 4.52 KiB
        last_wait: wait/io/file/innodb/innodb_temp_file
last_wait_latency: 369.52 us
            source: os0file.ic:470
      trx_latency: 29.45 s
        trx_state: ACTIVE
    trx_autocommit: YES
              pid: 4667
      program_name: mysql
1 row in set (0.12 sec)


-- 查看已经执行完的语句相关统计信息
select * from session where conn_id!=connection_id() and trx_state='COMMITTED'\G;

*************************** 1. row ***************************
            thd_id: 47
          conn_id: 5
              user: admin@localhost
                db: sbtest
          command: Sleep
            state: NULL
              time: 372
current_statement: NULL
statement_latency: NULL
          progress: NULL ------ 已执行完、未启用、不支持进度显示的为null
      lock_latency: 4.34 ms
    rows_examined: 0
        rows_sent: 0
    rows_affected: 0
        tmp_tables: 0
  tmp_disk_tables: 0
        full_scan: NO
    last_statement: alter table sbtest1 add index i_c(c)
last_statement_latency: 1.61 m
    current_memory: 4.52 KiB
        last_wait: idle
last_wait_latency: Still Waiting
            source: socket_connection.cc:69
      trx_latency: 1.61 m
        trx_state: COMMITTED
    trx_autocommit: YES
              pid: 4667
      program_name: mysql
1 row in set (0.12 sec)

Pour les événements scéniques progresser les exigences de déclaration doit être permis aux consommateurs de events_stages_current, ont besoin d'être activé pour voir les progrès des instruments pertinents. Par exemple:

stage/sql/Copying to tmp table
stage/innodb/alter table (end)
stage/innodb/alter table (flush)
stage/innodb/alter table (insert)
stage/innodb/alter table (log apply index)
stage/innodb/alter table (log apply table)
stage/innodb/alter table (merge sort)
stage/innodb/alter table (read PK and internal sort)
stage/innodb/buffer pool load

Pour connaître l'horaire des événements de la scène ne sont pas pris en charge ou a permis aux instruments nécessaires ou les consommateurs, l'affichage de la colonne correspondant à NULL les informations de progression.

 

plus de Référence

https://dev.mysql.com/doc/refman/5.7/en/sys-schema-progress-reporting.html

https://dev.mysql.com/doc/refman/5.7/en/sys-schema-prerequisites.html

https://dev.mysql.com/doc/refman/5.7/en/sys-schema-usage.html

Publié 295 articles originaux · louange gagné 35 · vues 80000 +

Je suppose que tu aimes

Origine blog.csdn.net/Hehuyi_In/article/details/105314757
conseillé
Classement