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