《MYSQL教程mysql千萬級(jí)數(shù)據(jù)大表該如何優(yōu)化?》要點(diǎn):
本文介紹了MYSQL教程mysql千萬級(jí)數(shù)據(jù)大表該如何優(yōu)化?,希望對(duì)您有用。如果有疑問,可以聯(lián)系我們。
1.數(shù)據(jù)的容量:1-3年內(nèi)會(huì)大概多少條數(shù)據(jù),每條數(shù)據(jù)大概多少字節(jié);
2.數(shù)據(jù)項(xiàng):是否有大字段,那些字段的值是否經(jīng)常被更新;
3.數(shù)據(jù)查詢SQL條件:哪些數(shù)據(jù)項(xiàng)的列名稱經(jīng)常出現(xiàn)在WHERE、GROUP BY、ORDER BY子句中等;
4.數(shù)據(jù)更新類SQL條件:有多少列經(jīng)常出現(xiàn)UPDATE或DELETE 的WHERE子句中;
5.SQL量的統(tǒng)計(jì)比,如:SELECT:UPDATE+DELETE:INSERT=多少?
6.預(yù)計(jì)大表及相關(guān)聯(lián)的SQL,每天總的執(zhí)行量在何數(shù)量級(jí)?
7.表中的數(shù)據(jù):更新為主的業(yè)務(wù) 還是 查詢?yōu)橹鞯臉I(yè)務(wù)
8.打算采用什么數(shù)據(jù)庫(kù)物理服務(wù)器,以及數(shù)據(jù)庫(kù)服務(wù)器架構(gòu)?
9.并發(fā)如何?
10.存儲(chǔ)引擎選擇InnoDB還是MyISAM?
大致明白以上10個(gè)問題,至于如何設(shè)計(jì)此類的大表,應(yīng)該什么都清楚了!
至于優(yōu)化若是指創(chuàng)建好的表,不能變動(dòng)表結(jié)構(gòu)的話,那建議InnoDB引擎,多利用點(diǎn)內(nèi)存,減輕磁盤IO負(fù)載,因?yàn)镮O往往是數(shù)據(jù)庫(kù)服務(wù)器的瓶頸
另外對(duì)優(yōu)化索引結(jié)構(gòu)去解決性能問題的話,建議優(yōu)先考慮修改類SQL語(yǔ)句,使他們更快些,不得已只靠索引組織結(jié)構(gòu)的方式,當(dāng)然此話前提是,
索引已經(jīng)創(chuàng)建的非常好,若是讀為主,可以考慮打開query_cache,
以及調(diào)整一些參數(shù)值:sort_buffer_size,read_buffer_size,read_rnd_buffer_size,join_buffer_size
其他人建議:
1. 索引, 避免掃描,基于主鍵的查找,上億數(shù)據(jù)也是很快的;
2. 反范式化設(shè)計(jì),以空間換時(shí)間,避免join,有些join操作可以在用代碼實(shí)現(xiàn),沒必要用數(shù)據(jù)庫(kù)來實(shí)現(xiàn);
轉(zhuǎn)載請(qǐng)注明本頁(yè)網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/4974.html