個人經驗~ 利用5.7的sys庫更好的排查問題


一 簡介:今天我們講講如何利用5.7的sys新庫進行問題的排查
二 描述
   1 Sys庫所有的數據源來自:performance_schema和information_schema。目標是把performance_schema的把復雜度降低,讓DBA能更好的閱讀這個庫里的內容。讓DBA更快的了解DB的運行情況。
  2 mysql對於系統性能和sql語句狀態的收集是非常少的,基本排查手段都要靠經驗判斷,5.7的sys特性能周期性的收集系統狀況和sql的狀態,有利於DBA更好的對問題進行判斷,集成了視圖,本身不存儲數據
三 具體sql語句應用
  一 IO相關
    1查看表訪問量前10top信息
      select table_schema,table_name,sum(io_read_requests+io_write_requests) io from schema_table_statistics group by table_schema,table_name order by io desc limit 10;
    2 查看文件訪問量前10top信息
     select file,avg_read+avg_write as avg_io from io_global_by_file_by_bytes order by avg_io desc limit 10;
   3 查看具體表的操作類型延遲統計
    select * from schema_table_statistics where table_schema ='' and table_name=''(增刪查改操作延時)
   4 慢查詢掃描全表
    select * from schema_tables_with_full_table_scans(最新的全表掃描相關信息)

  5 通過mysql線程 ID 來跟算

       1 iotop定位具體的mysql線程 獲得線程的PID

       2 select name,type,thread_id,processlst_id from performance_schema.threads where thread_os_id='PID'; ->一般用戶導致的調研的線程就是one_connections

       3 select * from sys.processlist where processlist_id='' 或者直接show processlist過濾
    小結 可以代替pt-iopfile工具,直接查詢非常方便定位IO問題
二 內存相關
    select * from innodb_buffer_stats_by_table
    select * from innodb_buffer_stats_by_schema
   1 分別從庫和表角度分析占用內存比,分析內存問題

     select event_name, SUM_NUMBER_OF_BYTES_ALLOC from  pefromance_schema.memory_summary_by_thread_by_event_name  order by SUM_NUMBER_OF_BYTES_ALLOC desc limit 20;

  2 從線程角度分析內存占用 

     event_name | SUM_NUMBER_OF_BYTES_ALLOC | 
  +-------------------------------------------+---------------------------+ 
  | memory/sql/Filesort_buffer::sort_keys | 13942381710536 | 
  | memory/memory/HP_PTRS | 5413962191080 | 
  | memory/sql/thd::main_mem_root | 1095525347280 | 
  | memory/mysys/IO_CACHE | 471119309576 | 

    注意點:1 mysql默認是無法查詢到相關內存數據的,需要打開數據收集,具體執行語句              

                 UPDATE setup_instruments SET ENABLED = 'YES',TIMED = 'YES'  where NAME like '%memory%';

              2 配置文件添加

                performance_schema=1

               performance_schema_instrument='%=on'    

  三 等待操作
  1 select * from waits_global_by_latency(事件等待)
  2 select * from innodb_lock_waits (鎖等待,未來information的相關表將被廢棄)
四 應用程序角度
   select * from  host_summary order by (file_io_latency,total_connections,current_memory)
  小結 這個視圖可以從內存 IO,sql執行延遲等角度綜合進行排查,定位具體的應用主機
五 總結
  1 定位具體的host,user,schema,table,DML操作 能幫你快速的解決大多數問題
  2 從用戶和系統內存兩方面來分析內存問題
  3 缺少cpu級別的信息收集,比較遺憾


免責聲明!

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



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