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;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM