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