Schema設計時主要考慮:標準化,數據類型,索引.html
一個數據庫設計能夠混合使用,一部分表格標準化,一部分表格非標準化.(非標準化表格適當冗餘)mysql
最優的數據類型,使表在磁盤上佔據的空間儘量小,讀寫快,佔用內存少.(索引也儘可能創建在較小的列上)sql
正確索引,提升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