MySQL效能優化小結

whis發表於2017-06-22

資料庫設計和查詢優化

  1. Schema設計時主要考慮:標準化,資料型別,索引.

    • 一個資料庫設計可以混合使用,一部分表格標準化,一部分表格非標準化.(非標準化表格適當冗餘)

    • 最優的資料型別,使表在磁碟上佔據的空間儘可能小,讀寫快,佔用記憶體少.(索引也儘量建立在較小的列上)

    • 正確索引,提高Select,Update,Delete效能.

  2. 不同的Sql不同的優化方案

    • Explain Sql檢視結果,分析查詢.

    • 查詢使用匹配的型別.

    • 使用long-slow-queries記錄較慢查詢,分析優化.

伺服器端優化

  1. 安裝適當的MySql版本. 如果伺服器使用Intel處理器,使用Intel C++版本可提高30 %效率

  2. 配置優化. 常見優化項:

    • charset

    • max_allowed_packet

    • max_connections

    • table_cache_size

    • query_cache_size

儲存引擎優化

  1. MyISAM

    1. 引擎特點

      • 不支援事務,提供高速儲存,檢索以及全文搜尋能力.

      • 當機會破壞表.

      • 使用的磁碟和記憶體空間小.

      • 基於表的鎖,併發更新資料會出現嚴重效能問題.

      • MySql只快取索引,資料由OS快取.

    2. 使用情況

      • 日誌系統.

      • 只讀操作或者大部分讀操作.

      • 全表掃描.

      • 批量匯入資料.

      • 沒有事務的低併發讀寫.

    3. 優化策略

      • NOT NULL,可以減少磁碟儲存.

      • Optimize Table,碎片整理,回收空閒空間.

      • Deleting/updating/adding大量資料的時候禁止使用index.

      • 引數優化,key_buffer_size_variable索引快取設定.

      • 避免併發Inset Update.

  2. InnoDB

    1. 引擎特點

      • 具有提交,回滾和崩潰恢復能力的事務安全儲存引擎.

      • 處理巨大資料量效能卓越,它的CPU使用效率非常高.

      • 需要更多的記憶體和磁碟儲存空間.

      • 資料和索引都快取在記憶體中.

    2. 適用情況

      • 需要事務的應用.

      • 高併發的應用.

      • 自動恢復.

      • 較快速的基於主鍵的操作.

    3. 優化策略

      • 儘量使用short,integer的主鍵.

      • 使用prefix keys,因為InnoDB沒有key壓縮功能.

      • 引數優化,innodb_buffer_pool_size,innodb_data_home_dir等等.

快取優化

  1. Redis

  2. Memcached

轉自: http://overtrue.me/articles/2014/10/mysql-performance-optimization-summary.html

相關文章