MySQL效能調優"經驗"
找出瓶頸:
儲存容量
Network(IOPS/吞吐量)
DRAM
CPU
IO(IOPS/吞吐量)【oltp:iops
olap:吞吐量
>60% 瓶頸在IO
】
以前DB大多效能在IO層面,現在CPU也可能會成為瓶頸,因是
排序和重複讀取過多導致;
方法及誤區:
DISK:【
oltp:小容量 高轉速
olap:大容量低轉速
磁碟數量儘可能多
】
Raid Card:
【
Cache只供寫使用,Direct讀取
oltp Raid10 參考DB
olap Raid5
關注Raid卡重放點帶來的Cache失效
預讀只對連續讀有效,oltp關閉預讀
】
CPU:
【
提高CPU運算能力
縮短CPU訪問資料路徑(緩村?)
】
優化目標:
減少IO次數,
IO最容易瓶頸地方,同時>90%的時間是IO操作所佔用,
減少IO次數是SQL優先考慮;
減低CPU計算:
除IO瓶頸之外,SQL優化中就是CPU運算量,order by,
group by,distinct 都是消耗CPU大戶
優化方法:
改變SQL執行計劃
讓他 少走彎路,儘量通過各種 "捷徑" 來找到我們需要資料,
以達到 "減少IO次數" 和 "減低CPU計算"的目標
解釋:
count(column) 和 count(*) 是一樣的
count(column)是結果集中有多少個不為空記錄的column欄位;
count(*) 是表示整個結果集有多少條記錄
select a,b from xx 比 select a,b,c from .. 可以讓資料庫訪問
更少的資料量
資料庫的儲存原理:
關係型DB是按照行(row)的方式"儲存",而資料"存取"操作是以一個固定
大小的IO單元(block 或 page)為單位,一般4KB,8KB ...,每個IO單元儲存多行,每行是儲存了該行的所有欄位。
所以,我們提取一個欄位還是多個欄位,實際上DB在表中訪問資料量其實是一樣的;
例外,我們這個查詢在index中就可以完成,也就是說只取a,b兩個欄位,
不需要回表,而c這個欄位不在使用index中,需要回表取其資料,在此情況下,二者IO量有較大差異.
order by 一定需要排序操作
index資料實際是有序的,如果我們需要資料和某個index的順序一致,
而且我們的查詢又通過這個index來執行,那麼DB一般會省去排序操作,而直接將資料返回,因為DB知道資料已經滿足我們的排序需求啦;
基本原則:
儘量少join,
儘量少排序,排序操作會消耗較多CPU資源,所以減少排序可以快取命中率高等IO能力,對SQL響應時間也有較大影響;
儘量避免select *
多數不會影響IO量,但是我們存在order by 網路傳輸資料時
select子句中欄位多少會再很大程度上影響排序效率
儘量用union all(union)替代 or
union 和 union all差異主要是前者將2個或更多結果集合並後再進行唯一性過濾,會涉及排序,增加大量CPU運算,資源消耗及延遲,所以,
多用union all 而不是union
儘量早過濾
可能多的減少必要IO操作,大大節省IO操作所消耗時間。
摘自網路
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26855487/viewspace-742933/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL效能優化的最佳21條經驗MySql優化
- MySQL效能優化的21條最佳經驗MySql優化
- MySQL 效能調優技巧MySql
- PHP MySQL效能優化的最佳16條經驗PHPMySql優化
- MySQL 效能優化的最佳 20+ 條經驗MySql優化
- MySQL效能優化的最佳20+條經驗MySql優化
- Mysql 效能調優 一 1MySql
- Mysql 效能調優 一 2MySql
- Mysql 效能調優 一 3MySql
- Mysql 效能調優 二 1MySql
- Mysql 效能調優 二 2MySql
- MySQL 企業常用架構與調優經驗分享MySql架構
- MySQL資料庫效能優化的21條經驗MySql資料庫優化
- MySQL入門--效能調優概述MySql
- mysql 效能調優五種方式MySql
- MySQL效能診斷與調優MySql
- 全棧必備——MySQL效能調優全棧MySql
- MySQL 效能調優的10個方法MySql
- MySQL調優效能監控之show profileMySql
- MySQL調優效能監控之performance schemaMySqlORM
- mysql效能的檢查和調優方法MySql
- MySQL效能調優my.cnf詳解MySql
- MySql(七):MySQL效能調優——鎖定機制與鎖優化分析MySql優化
- 技術更新!10個MySQL效能調優技巧MySql
- Spark 效能調優--資源調優Spark
- Spark 效能調優--Shuffle調優 SortShuffleManagerSpark
- 【效能調優】效能測試、分析與調優基礎
- 詳解SQL效能優化十條經驗SQL優化
- (轉)例項分析:MySQL優化經驗MySql優化
- ElasticSearch效能調優Elasticsearch
- Nginx 效能調優Nginx
- iOS效能調優iOS
- php效能調優PHP
- Java效能調優Java
- Spark效能調優Spark
- oracle效能調優Oracle
- MySQL調優MySql
- 記一次 Laravel 應用效能調優經歷Laravel