標籤:
mysql最佳化續:
1:show index from table_name查看索引使用方式其中cardinality基數,即value group索引區分度,當cardinality越小時需要掃描的行數越多,越大是則越小。
2:mysql評價索引掃描資料量非常大時可能會放棄使用,當使用limit時,情況可以改變,mysql會採用索引
3:針對mysql的行格式row format。innodb最新版本採用COMPACT,老版本是REDUNDANT,使用新的格式或減少20%的磁碟空間,相應的會增加cpu時間,在char類型儲存utf-8字元時,老版本都是3*N的位元組,新版本是N ~ 3*N
4:在低於8KB的欄位儲存是盡量使用varchar而不是blob,在group by 和order by可以產生暫存資料表,在沒有blob欄位的情況下暫存資料表可以使用memory 引擎。
5:在有許多並不常用的欄位表時,通常建議將這些欄位拆開到另外的表中,通過join去處理,特別是blob、text類型時。
6:optimizer_switch該參數可以查看mysql採用的一些最佳化策略,如MRR,ICP等是否開啟,都可以手動設定
7:index hints 可以使用use index ,force index, ignore index來影響mysql的所以選擇
8:innodb_buffer_pool可以儲存select、insert、update等操作資料(包括索引跟資料庫資料),來提升效能,採用LRU演算法替換相應的block,將資料區塊插入到list中間預設大概在5/8左右可以手動調整,這樣可以防止資料頻繁重新整理。
9:myisam key_cache儲存索引資料,資料庫資料則由本地的作業系統檔案系統快取,myisam也可以採用Midpoint Insertion Strategy,在key_cache不可用時(如重建)mysql會啟用本地的檔案系統快取(當然效能上會有所降低)。
mysql文檔摘要續2