MySQL性能優化小結

數據庫設計和查詢優化

  1. Schema設計時主要考慮:標準化,數據類型,索引.html

    • 一個數據庫設計能夠混合使用,一部分表格標準化,一部分表格非標準化.(非標準化表格適當冗餘)mysql

    • 最優的數據類型,使表在磁盤上佔據的空間儘量小,讀寫快,佔用內存少.(索引也儘可能創建在較小的列上)sql

    • 正確索引,提升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

相關文章
相關標籤/搜索