一.數(shù)據(jù)庫設(shè)計和查詢優(yōu)化
Schema設(shè)計時主要考慮:標準化,數(shù)據(jù)類型,索引.
一個數(shù)據(jù)庫設(shè)計可以混合使用,一部分表格標準化,一部分表格非標準化.(非標準化表格適當冗余)
最優(yōu)的數(shù)據(jù)類型,使表在磁盤上占據(jù)的空間盡可能小,讀寫快,占用內(nèi)存少.(索引也盡量建立在較小的列上)
正確索引,提高Select,Update,Delete性能.
不同的Sql不同的優(yōu)化方案
Explain Sql查看結(jié)果,分析查詢.
查詢使用匹配的類型.
使用long-slow-queries記錄較慢查詢,分析優(yōu)化.
二.服務(wù)器端優(yōu)化
安裝適當?shù)腗ySql版本. 如果服務(wù)器使用Intel處理器,使用Intel C++版本可提高30 %效率
配置優(yōu)化. 常見優(yōu)化項:
charset
max_allowed_packet
max_connections
table_cache_size
query_cache_size
三.存儲引擎優(yōu)化
MyISAM
NOT NULL,可以減少磁盤存儲.
Optimize Table,碎片整理,回收空閑空間.
Deleting/updating/adding大量數(shù)據(jù)的時候禁止使用index.
參數(shù)優(yōu)化,key_buffer_size_variable索引緩存設(shè)置.
避免并發(fā)Inset Update.
日志系統(tǒng).
只讀操作或者大部分讀操作.
全表掃描.
批量導入數(shù)據(jù).
沒有事務(wù)的低并發(fā)讀寫.
不支持事務(wù),提供高速存儲,檢索以及全文搜索能力.
宕機會破壞表.
使用的磁盤和內(nèi)存空間小.
基于表的鎖,并發(fā)更新數(shù)據(jù)會出現(xiàn)嚴重性能問題.
MySql只緩存索引,數(shù)據(jù)由OS緩存.
引擎特點
適用情況
優(yōu)化策略
InnoDB
盡量使用short,integer的主鍵.
使用prefix keys,因為InnoDB沒有key壓縮功能.
參數(shù)優(yōu)化,innodb_buffer_pool_size,innodb_data_home_dir等等.
需要事務(wù)的應(yīng)用.
高并發(fā)的應(yīng)用.
自動恢復.
較快速的基于主鍵的操作.
具有提交,回滾和崩潰恢復能力的事務(wù)安全存儲引擎.
處理巨大數(shù)據(jù)量性能卓越,它的CPU使用效率非常高.
需要更多的內(nèi)存和磁盤存儲空間.
數(shù)據(jù)和索引都緩存在內(nèi)存中.
引擎特點
適用情況
優(yōu)化策略
三. 緩存優(yōu)化
Memcached
Redis
轉(zhuǎn)自: http://allensuiverson.blog.163.com/blog/static/133648269201310119491437/