• ADADADADAD

    mysql 5.7中崭新的 mysql sys schema[ mysql数据库 ]

    mysql数据库 时间:2024-12-03 10:31:22

    作者:文/会员上传

    简介:

    mysql 5.7中崭新的 mysql sys schema 声明:本文内容来自于《MySQL运维内参》,笔者读后整理的笔记,仅供学习使用。 以下内容都是MySQL 5.7的新功能 一、 Performance Schema的

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    mysql 5.7中崭新的 mysql sys schema 声明:本文内容来自于《MySQL运维内参》,笔者读后整理的笔记,仅供学习使用。
    以下内容都是MySQL 5.7的新功能 一、 Performance Schema的改进 1、元数据库锁 select * from performance_schema.metadata_locks;
    通过该表可以看到: a)、哪些会话拥有元数据锁; b)、哪些会话正在等待元数据锁; c)、哪些请求由于死锁被杀掉,或者锁等待超时而被丢弃。
    2、进程跟踪 select * from performance_schema.events_stages_current;
    通过该表可以跟踪长时间操作的进度(比如ALTER TABLE): 备注:stages是阶段的意思。 3、查看未提交事务
     从mysql 5.7开始,新增events_transactions_current表,通过该表查看当前线上的事务的状态,如果线上数据库遇到undo log大量增长,数据库性能急剧下降,可以通过该表查看当前是否存在处于未提交状态的事务。如果发现的确有大量的事务的state处于active状态,这时可以确定数据库的事务未提交。 

    二、SYS库的介绍
    performation schema使用起来不方便,mysql 5.7用sys库来解决这个问题。 mysql sys库本身不采集和存储什么信息,而是将performance schema和infomation schema的数据以更加容易理解的方式总结归档出的视图。 在sys库中,没有x$前缀的视图提供了更加友好且易读的数据;x$前缀的视图提供了原始数据,需要加工才好看。
    1)、主机相关信息:以host_summary开头的视图,从主机、文件时间类型、语句类型角度展示文件IO延迟的信息; 2)、innodb buffer pool和锁的相关信息:以innodb开头的视图,汇总了innodb buffer page信息和事务等待锁的信息; 3)、io使用情况:以io开头的视图,总结了io使用者的信息,包括等待io的情况、io使用量情况; 4)、 内存使用情况:以memory开头的视图,从主机、线程、用户、事件的角度展示了内存使用情况; 5)、连接与会话信息:processlist和session总结了连接与会话信息; 6)、表相关信息:以schema_table开头的视图,从全表扫描、innodb缓冲池等方面展示了表统计信息; 7)、索引信息:其中包含index的视图,统计了索引使用情况,以及重复索引和未使用索引情况; 8)、语句相关信息:以statement开头的视图,统计的规范化后的语句使用情况,包括错误数、警告数、执行全表扫描的、使用临时表、执行排序等信息; 9)、用户的相关信息:以user开头的视图,统计了用户使用文件IO、执行的语句统计信息等; 10)、等待事件相关信息:以wait开头的视图,从主机和事件角度展示等待事件的延迟情况; 11)、锁信息:innodb_lock_waits和schema_table_lock_waits展示了锁信息


    三、重点视图与应用场景 1、查看表访问量 场景:查看每张表的读写次数
     +--------------+----------------------+---------------+
    | table_schema | table_name | io_to_request |
    +--------------+----------------------+---------------+
    | oa_2016| form_trigger_record| | oa_2016| form_log | | oa_2016| ctp_content_all| | oa_2016| org_relationship |


    2、冗余索引和未使用的索引
    通过sys库中的schema_index_statistics 和schema_redundant_indexes两个视图,可以看到哪些索引没有被使用过或者使用率低。
    3、表自增id监控 场景:知道哪张表有自增主键,并且监控自增主键是否快要超过阈值 (root@localhost)[sys]> *************************** table_schema: oa_2016
    table_name: ctp_content_all
     column_name: id
     data_type:column_type:is_signed:is_unsigned:max_value: auto_increment: auto_increment_ratio:



    4、查看实例消耗的磁盘IO
    (root@localhost)[sys]> +------------------------------------------------+--------+
    | file | avg_io |
    +------------------------------------------------+--------+
    | @@datadir/oa_2016/portal_link_space| @@datadir/oa_2016/pro_eipusercustomsort| @@datadir/oa_2016/ctp_dr_url_map| @@datadir/oa_2016/office_auto_applyinfo| @@datadir/oa_2016/edoc_exchange_turn_rec| @@datadir/oa_2016/portal_portlet_property| @@datadir/oa_2016/showpost_info| @@datadir/oa_2016/cip_agent| @@datadir/oa_2016/thirdparty_portal_config| @@datadir/oa_2016/portal_link_option+------------------------------------------------+--------+
     DBA可以通过该查询大致的了解磁盘IO消耗在哪里,哪些文件消耗的最多。DBA可以根据这些信息,针对某表,某库进行优化。 
    5、监控全表扫描的sql语句 通过sys.statements_with_full_table_scans来看全表扫描的sql语句:root@localhost)[sys]> *************************** query:db: oa_2016
    exec_count:total_latency:no_index_used_count: no_good_index_used_count:no_index_used_pct:rows_sent:rows_examined:rows_sent_avg:rows_examined_avg: first_seen:last_seen: digest:
    通过上面可以看到,该sql语句总共执行了5次,有5次都没有使用索引,总共消耗了997.89 us。
    6、操作风险 sys库的视图来源于performace_schema和information_schema,我们知道performace_schema开启后,数据库会有10%性能下降: (root@localhost)[sys]> show variables +----------------------------------------------------------+-------+
    | Variable_name| Value |
    +----------------------------------------------------------+-------+
    | performance_schema | ON|

    所以,我们查询sys或者performance_schema时,要谨慎操作。
    7参考 参考《mysql运维内参》一书
    mysql 5.7中崭新的 mysql sys schema.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: mysqlschemasys