• mysql 性能定位,性能排查sql


    ##1.查询表的所属以及有多少行 
    SELECT TABLE_SCHEMA,TABLE_NAME,TABLE_ROWS FROM information_schema.`TABLES` WHERE TABLE_NAME='PRODUCT';
    
    ##2.查看当前应用连接,连接数突增排查
    
    SELECT user,SUBSTRING_INDEX(HOST,':',1) as ip, count(*) as count, db 
    FROM information_schema.`PROCESSLIST`
    WHERE `HOST` NOT IN ('localhost') AND `USER` NOT IN('replicater')
    GROUP BY ip ORDER BY count;
    
    ##3.查看表碎片,是否需要整理表释放物理空间
    SELECT TABLE_NAME,TABLE_ROWS ,concat(ROUND(DATA_LENGTH/1024/1024,2),'MB') AS size, DATA_FREE/1024/1024 AS DATA_FREE_MB
    FROM information_schema.`TABLES`
    WHERE TABLE_SCHEMA='db库名'
    ORDER BY DATA_LENGTH DESC;
    
    ##4.当前有没有锁
    SELECT * FROM information_schema.INNODB_LOCKS;
    
    ##5.当前锁堵塞情况
    SELECT * FROM information_schema.INNODB_LOCK_WAITS;
    
    ##6.当前锁等待详细信息
    select it.trx_mysql_thread_id, il.lock_id, il.lock_table, il.lock_mode, il.lock_type, it.trx_state, pl.USER||'@'||pl.HOST as user_host, pl.db, pl.command, pl.info, it.trx_started, it.trx_wait_started, now()-trx_wait_started as wait_seconds, il.lock_index, it.trx_weight, it.trx_rows_locked, it.trx_rows_modified 
    from information_schema.INNODB_TRX it,information_schema.innodb_locks il,information_schema.processlist pl 
    where it.trx_id = il.lock_trx_id and it.trx_mysql_thread_id = pl.id;
    
    ##7.最近一次死锁、未提交事物、CHECKPIONT、BUFFER POOL等
    show engine innodb status;
    
    ##8.过滤无用线程信息可用pager
    show processlist;
    
    ##9.查看当前运行的详细SQL
    SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST WHERE info is not null;
    
    ##10.查看某条sql各阶段执行时间,可开启profiling功能
    set global profiling=on;
    
    ##11.查看用户信息
    select user,host,password from mysql.user group by user;
    
    ##12.分表时批量生成sql语句
    select concat("select IP as ",TABLE_NAME," from ",TABLE_SCHEMA,".",TABLE_NAME," group by id;") 
    from information_schema.TABLES 
    where TABLE_NAME like 'table_%';
    
    ##13.查看哪些sql执行最多
    SELECT SCHEMA_NAME,DIGEST_TEXT,COUNT_STAR,SUM_ROWS_SENT,SUM_ROWS_EXAMINED,FIRST_SEEN,LAST_SEEN 
    FROM performance_schema.events_statements_summary_by_digest 
    where SCHEMA_NAME is not null and SCHEMA_NAME !='information_schema' 
    ORDER BY COUNT_STAR desc LIMIT 1;
    
    ##14.哪个SQL平均响应时间最多
    SELECT SCHEMA_NAME,DIGEST_TEXT,COUNT_STAR,AVG_TIMER_WAIT,SUM_ROWS_SENT,SUM_ROWS_EXAMINED,FIRST_SEEN,LAST_SEEN 
    FROM performance_schema.events_statements_summary_by_digest 
    where SCHEMA_NAME is not null and SCHEMA_NAME !='information_schema' 
    ORDER BY AVG_TIMER_WAIT desc LIMIT 1;
    
    ##15.哪个SQL扫描的行数最多(IO消耗)
    SELECT SCHEMA_NAME,DIGEST_TEXT,COUNT_STAR,AVG_TIMER_WAIT,SUM_ROWS_SENT,SUM_ROWS_EXAMINED,FIRST_SEEN,LAST_SEEN 
    FROM performance_schema.events_statements_summary_by_digest 
    where SCHEMA_NAME is not null and SCHEMA_NAME !='information_schema' 
    ORDER BY SUM_ROWS_EXAMINED desc LIMIT 1;
    
    ##16.哪个SQL使用的临时表最多
    SELECT SCHEMA_NAME,DIGEST_TEXT,SUM_CREATED_TMP_DISK_TABLES,SUM_CREATED_TMP_TABLES,FIRST_SEEN,LAST_SEEN 
    FROM performance_schema.events_statements_summary_by_digest 
    where SCHEMA_NAME is not null and SCHEMA_NAME !='information_schema' 
    ORDER BY SUM_CREATED_TMP_DISK_TABLES desc LIMIT 1;
    
    ##17.哪个SQL返回的结果集最多(net消耗)
    SELECT SCHEMA_NAME,DIGEST_TEXT,COUNT_STAR,SUM_ROWS_SENT,SUM_ROWS_SENT,FIRST_SEEN,LAST_SEEN 
    FROM performance_schema.events_statements_summary_by_digest 
    where SCHEMA_NAME is not null and SCHEMA_NAME !='information_schema' 
    ORDER BY SUM_ROWS_SENT desc LIMIT 1;
    
    ##18.哪个SQL排序数最多(CPU消耗)
    SELECT SCHEMA_NAME,DIGEST_TEXT,COUNT_STAR,SUM_ROWS_SENT,SUM_SORT_ROWS,FIRST_SEEN,LAST_SEEN 
    FROM performance_schema.events_statements_summary_by_digest 
    where SCHEMA_NAME is not null and SCHEMA_NAME !='information_schema' 
    ORDER BY SUM_SORT_ROWS desc LIMIT 5;
    
    #19.哪个表、文件逻辑IO最多(热数据)
    SELECT FILE_NAME,EVENT_NAME,COUNT_READ,SUM_NUMBER_OF_BYTES_READ,COUNT_WRITE,SUM_NUMBER_OF_BYTES_WRITE 
    FROM performance_schema.file_summary_by_instance 
    ORDER BY SUM_NUMBER_OF_BYTES_READ+SUM_NUMBER_OF_BYTES_WRITE DESC LIMIT 2;
    
    ##20.哪个索引使用最多
    SELECT OBJECT_NAME, INDEX_NAME, COUNT_FETCH, COUNT_INSERT, COUNT_UPDATE, COUNT_DELETE 
    FROM performance_schema.table_io_waits_summary_by_index_usage 
    ORDER BY SUM_TIMER_WAIT DESC limit 1;
    
    ##21.哪个索引没有使用过
    SELECT OBJECT_SCHEMA, OBJECT_NAME, INDEX_NAME 
    FROM performance_schema.table_io_waits_summary_by_index_usage 
    WHERE INDEX_NAME IS NOT NULL AND COUNT_STAR = 0 AND OBJECT_SCHEMA <> 'mysql' 
    ORDER BY OBJECT_SCHEMA,OBJECT_NAME;
    
    ##22.哪个等待事件消耗的时间最多
    SELECT EVENT_NAME, COUNT_STAR, SUM_TIMER_WAIT, AVG_TIMER_WAIT 
    FROM events_waits_summary_global_by_event_name 
    WHERE event_name != 'idle' 
    ORDER BY SUM_TIMER_WAIT DESC LIMIT 1;
    
    ##23.通过performance_schema库得到数据库运行的统计信息,更好分析定位问题和完善监控信息
    #打开标准的innodb监控:
    CREATE TABLE innodb_monitor (a INT) ENGINE=INNODB;
    #打开innodb的锁监控:
    CREATE TABLE innodb_lock_monitor (a INT) ENGINE=INNODB;
    #打开innodb表空间监控:
    CREATE TABLE innodb_tablespace_monitor (a INT) ENGINE=INNODB;
    #打开innodb表监控:
    CREATE TABLE innodb_table_monitor (a INT) ENGINE=INNODB;
    
    ##24.添加主键
    alter table xxx add constraint primary key(id); 
    
    ##25.删除外键
    alter table test drop foreign key FK_XXX;
    
    ##26.QPS
    SHOW GLOBAL STATUS LIKE 'Questions';
    SHOW GLOBAL STATUS LIKE 'Uptime';
    
    #@27.TPS
    SHOW GLOBAL STATUS LIKE 'Com_commit';
    SHOW GLOBAL STATUS LIKE 'Com_rollback';
    SHOW GLOBAL STATUS LIKE 'Uptime';
    (Com_commit + Com_rollback)/Uptime
    
    
    ##28.
    select table_name,table_rows,concat(round(DATA_LENGTH/1024/1024, 2), 'MB') as size,DATA_FREE/1024/1024 AS data_free_MB 
    from information_schema.TABLES 
    where table_schema='库名' 
    order by DATA_LENGTH desc;
    
    ##29.清理binlog
    PURGE BINARY LOGS TO 'XXX';
    PURGE BINARY LOGS BEFORE '2018-06-10 00:00:00'; 
    
    ##30.外键隔离级别等信息
    select @@FOREIGN_KEY_CHECKS;
    select @@global.tx_isolation,@@tx_isolation;  
    select @@character_set_database;
    select @@GLOBAL.sql_mode;
  • 相关阅读:
    协议
    创建属性、属性标签、对象序列化
    JS中generater和箭头函数
    前端forEach在Array、map、set中的使用,weakset,weakmap
    更新最大内码,金蝶开发
    ERP,还需要WEB开发吗
    可读性太低的SQL语句
    事务,视图和索引
    简单子查询
    创建表并添加约束
  • 原文地址:https://www.cnblogs.com/goodtest2018/p/9167089.html
Copyright © 2020-2023  润新知