資料庫設計和查詢優化
-
Schema設計時主要考慮:標準化,資料型別,索引.
一個資料庫設計可以混合使用,一部分表格標準化,一部分表格非標準化.(非標準化表格適當冗餘)
最優的資料型別,使表在磁碟上佔據的空間儘可能小,讀寫快,佔用記憶體少.(索引也儘量建立在較小的列上)
正確索引,提高Select,Update,Delete效能.
-
不同的Sql不同的優化方案
Explain Sql檢視結果,分析查詢.
查詢使用匹配的型別.
使用long-slow-queries記錄較慢查詢,分析優化.
伺服器端優化
安裝適當的MySql版本. 如果伺服器使用Intel處理器,使用Intel C++版本可提高30 %效率
-
配置優化. 常見優化項:
charset
max_allowed_packet
max_connections
table_cache_size
query_cache_size
儲存引擎優化
-
MyISAM
-
引擎特點
不支援事務,提供高速儲存,檢索以及全文搜尋能力.
當機會破壞表.
使用的磁碟和記憶體空間小.
基於表的鎖,併發更新資料會出現嚴重效能問題.
MySql只快取索引,資料由OS快取.
-
使用情況
日誌系統.
只讀操作或者大部分讀操作.
全表掃描.
批量匯入資料.
沒有事務的低併發讀寫.
-
優化策略
NOT NULL,可以減少磁碟儲存.
Optimize Table,碎片整理,回收空閒空間.
Deleting/updating/adding大量資料的時候禁止使用index.
引數優化,key_buffer_size_variable索引快取設定.
避免併發Inset Update.
-
-
InnoDB
-
引擎特點
具有提交,回滾和崩潰恢復能力的事務安全儲存引擎.
處理巨大資料量效能卓越,它的CPU使用效率非常高.
需要更多的記憶體和磁碟儲存空間.
資料和索引都快取在記憶體中.
-
適用情況
需要事務的應用.
高併發的應用.
自動恢復.
較快速的基於主鍵的操作.
-
優化策略
儘量使用short,integer的主鍵.
使用prefix keys,因為InnoDB沒有key壓縮功能.
引數優化,innodb_buffer_pool_size,innodb_data_home_dir等等.
-
快取優化
Redis
Memcached
轉自: http://overtrue.me/articles/2014/10/mysql-performance-optimization-summary.html