1. 程式人生 > >mysql資料庫執行效能檢查指令碼

mysql資料庫執行效能檢查指令碼

只針對mysql 5.6.8以上版本
select version();
use information_schema;
#查詢所有資料庫引數
show VARIABLES;

#查詢資料庫最大連線數
show variables like '%max_connections%';

#查詢當前資料庫連線數
show full processlist;

#單表記錄數超過1000W的資料庫查詢
select table_schema,table_name,table_rows
from information_schema.tables where table_rows >=10000000 ;

#檢視資料庫所有索引
SELECT * FROM mysql.`innodb_index_stats` a WHERE a.`database_name` = 'uum';

#檢視某一表索引
SELECT * FROM mysql.`innodb_index_stats` a WHERE a.`database_name` = 'uum' and a.table_name like '%t_sys_base_user%';
SELECT * FROM mysql.`innodb_index_stats` a WHERE a.`database_name` = 'uum' and a.table_name ='t_sys_base_user';

#資料庫表空間大於1T檢查
SELECT table_schema as 'Database',
       table_name,
    CONCAT(ROUND(data_length/(1024*1024*1024),6),' G') AS 'Data Size',   
    CONCAT(ROUND(index_length/(1024*1024*1024),6),' G') AS 'Index Size' ,   
    CONCAT(ROUND((data_length+index_length)/(1024*1024*1024),6),' G') AS'Total'  
FROM information_schema.TABLES;

#資料檔案存放路徑
show variables like 'datadir';

#資料庫檔案佔用磁碟空間檢查
du -h /data/mysql/data/

#告警 mysql錯誤日誌存放路徑
show variables where variable_name = 'log_error';


#mysql資料庫監控:
#慢查詢日誌
show variables WHERE  variable_name = 'slow_query_log_file';
 
#查詢寫入慢查詢日誌的時間閾值
show variables WHERE  variable_name = 'long_query_time';
 
#查詢哪個sql消耗資源情況
select Id,User,Host,db,Time,Info from information_schema.`PROCESSLIST` where info is not null;

#查詢是否鎖表
show OPEN TABLES where In_use > 0;

#檢視正在等待鎖的事務
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;

#查詢所有資料的大小
select concat(round(sum(data_length/1024/1024),2),'MB') as data from tables;

#檢視指定資料庫的大小
select concat(round(sum(data_length/1024/1024),2),'MB') as data from tables where table_schema='uum';

#檢視指定資料庫的某個表的大小
select concat(round(sum(data_length/1024/1024),2),'MB') as data from tables where table_schema='uum' and table_name='t_sys_base_user';


Linux下命令:free –m    系統實際記憶體
•used=total-free 即 total=used+free
•實際記憶體佔用:used-buffers-cached 即 total-free-buffers-cached
•實際可用記憶體:buffers+cached+free
•total 記憶體總數: 128
•used 已經使用的記憶體數: 119
•free 空閒的記憶體數: 8
•shared 當前已經廢棄不用,總是0
•buffers Buffer Cache記憶體數: 1
•cached Page Cache記憶體數: 22
•-buffers/cache 的記憶體數:95 (等於第1行的 used - buffers - cached)
•+buffers/cache 的記憶體數: 32 (等於第1行的 free + buffers + cached)
•SWAP 虛擬記憶體

Linux下命令:iostat 1 1   IO使用情況
avg-cpu: 總體cpu使用情況統計資訊,對於多核cpu,這裡為所有cpu的平均值
Device: 各磁碟裝置的IO統計資訊
Device: 以sdX形式顯示的裝置名稱
•tps: 每秒程序下發的IO讀、寫請求數量
•KB_read/s: 每秒讀扇區數量(一扇區為512bytes)
•KB_wrtn/s: 每秒寫扇區數量
•KB_read: 取樣時間間隔內讀扇區總數量
•KB_wrtn: 取樣時間間隔內寫扇區總數量

Linux下命令:vmstat 2 2000    虛擬記憶體
Procs(程序):
r: 執行佇列中程序數量
b: 等待IO的程序數量
Memory(記憶體):
swpd: 使用虛擬記憶體大小
free: 可用記憶體大小
buff: 用作緩衝的記憶體大小
cache: 用作快取的記憶體大小
Swap:
si: 每秒從交換區寫到記憶體的大小
so: 每秒寫入交換區的記憶體大小
IO:(現在的Linux版本塊的大小為1024bytes)
bi: 每秒讀取的塊數
bo: 每秒寫入的塊數
 系統:
in: 每秒中斷數,包括時鐘中斷。
cs: 每秒上下文切換數。
CPU(以百分比表示):
us: 使用者程序執行時間(user time)
sy: 系統程序執行時間(system time)
id: 空閒時間(包括IO等待時間)
wa: 等待IO時間
   
Linux下  命令:top      cpu使用情況   
PID — 程序id
USER — 程序所有者
PR — 程序優先順序
NI — nice值。負值表示高優先順序,正值表示低優先順序
VIRT — 程序使用的虛擬記憶體總量,單位kb。VIRT=SWAP+RES
RES — 程序使用的、未被換出的實體記憶體大小,單位kb。RES=CODE+DATA
SHR — 共享記憶體大小,單位kb
S — 程序狀態。D=不可中斷的睡眠狀態 R=執行 S=睡眠 T=跟蹤/停止 Z=殭屍程序
%CPU — 上次更新到現在的CPU時間佔用百分比
%MEM — 程序使用的實體記憶體百分比
TIME+ — 程序使用的CPU時間總計,單位1/100秒
COMMAND — 程序名稱(命令名/命令列)