mysql千萬級數(shù)據(jù)大表該如何優(yōu)化?
更新時間:2011年08月06日 23:12:55 作者:
如何設計或優(yōu)化千萬級別的大表?此外無其他信息,個人覺得這個話題有點范,就只好簡單說下該如何做,對于一個存儲設計,必須考慮業(yè)務特點,收集的信息如下
1.數(shù)據(jù)的容量:1-3年內會大概多少條數(shù)據(jù),每條數(shù)據(jù)大概多少字節(jié);
2.數(shù)據(jù)項:是否有大字段,那些字段的值是否經常被更新;
3.數(shù)據(jù)查詢SQL條件:哪些數(shù)據(jù)項的列名稱經常出現(xiàn)在WHERE、GROUP BY、ORDER BY子句中等;
4.數(shù)據(jù)更新類SQL條件:有多少列經常出現(xiàn)UPDATE或DELETE 的WHERE子句中;
5.SQL量的統(tǒng)計比,如:SELECT:UPDATE+DELETE:INSERT=多少?
6.預計大表及相關聯(lián)的SQL,每天總的執(zhí)行量在何數(shù)量級?
7.表中的數(shù)據(jù):更新為主的業(yè)務 還是 查詢?yōu)橹鞯臉I(yè)務
8.打算采用什么數(shù)據(jù)庫物理服務器,以及數(shù)據(jù)庫服務器架構?
9.并發(fā)如何?
10.存儲引擎選擇InnoDB還是MyISAM?
大致明白以上10個問題,至于如何設計此類的大表,應該什么都清楚了!
至于優(yōu)化若是指創(chuàng)建好的表,不能變動表結構的話,那建議InnoDB引擎,多利用點內存,減輕磁盤IO負載,因為IO往往是數(shù)據(jù)庫服務器的瓶頸
另外對優(yōu)化索引結構去解決性能問題的話,建議優(yōu)先考慮修改類SQL語句,使他們更快些,不得已只靠索引組織結構的方式,當然此話前提是,
索引已經創(chuàng)建的非常好,若是讀為主,可以考慮打開query_cache,
以及調整一些參數(shù)值:sort_buffer_size,read_buffer_size,read_rnd_buffer_size,join_buffer_size
其他人建議:
1. 索引, 避免掃描,基于主鍵的查找,上億數(shù)據(jù)也是很快的;
2. 反范式化設計,以空間換時間,避免join,有些join操作可以在用代碼實現(xiàn),沒必要用數(shù)據(jù)庫來實現(xiàn);
2.數(shù)據(jù)項:是否有大字段,那些字段的值是否經常被更新;
3.數(shù)據(jù)查詢SQL條件:哪些數(shù)據(jù)項的列名稱經常出現(xiàn)在WHERE、GROUP BY、ORDER BY子句中等;
4.數(shù)據(jù)更新類SQL條件:有多少列經常出現(xiàn)UPDATE或DELETE 的WHERE子句中;
5.SQL量的統(tǒng)計比,如:SELECT:UPDATE+DELETE:INSERT=多少?
6.預計大表及相關聯(lián)的SQL,每天總的執(zhí)行量在何數(shù)量級?
7.表中的數(shù)據(jù):更新為主的業(yè)務 還是 查詢?yōu)橹鞯臉I(yè)務
8.打算采用什么數(shù)據(jù)庫物理服務器,以及數(shù)據(jù)庫服務器架構?
9.并發(fā)如何?
10.存儲引擎選擇InnoDB還是MyISAM?
大致明白以上10個問題,至于如何設計此類的大表,應該什么都清楚了!
至于優(yōu)化若是指創(chuàng)建好的表,不能變動表結構的話,那建議InnoDB引擎,多利用點內存,減輕磁盤IO負載,因為IO往往是數(shù)據(jù)庫服務器的瓶頸
另外對優(yōu)化索引結構去解決性能問題的話,建議優(yōu)先考慮修改類SQL語句,使他們更快些,不得已只靠索引組織結構的方式,當然此話前提是,
索引已經創(chuàng)建的非常好,若是讀為主,可以考慮打開query_cache,
以及調整一些參數(shù)值:sort_buffer_size,read_buffer_size,read_rnd_buffer_size,join_buffer_size
其他人建議:
1. 索引, 避免掃描,基于主鍵的查找,上億數(shù)據(jù)也是很快的;
2. 反范式化設計,以空間換時間,避免join,有些join操作可以在用代碼實現(xiàn),沒必要用數(shù)據(jù)庫來實現(xiàn);
相關文章
如何用mysql自帶的定時器定時執(zhí)行sql(每天0點執(zhí)行與間隔分/時執(zhí)行)
在開發(fā)過程中經常會遇到這樣一個問題,每天或者每月必須定時去執(zhí)行一條sql語句或更新或刪除或執(zhí)行特定的sql語句,下面這篇文章主要給大家介紹了關于如何用mysql自帶的定時器定時執(zhí)行sql(每天0點執(zhí)行與間隔分/時執(zhí)行)的相關資料,需要的朋友可以參考下2023-03-03
mysql千萬級數(shù)據(jù)分頁查詢性能優(yōu)化
本文給大家分享的是作者在使用mysql進行千萬級數(shù)據(jù)量分頁查詢的時候進行性能優(yōu)化的方法,非常不錯的一篇文章,對我們學習mysql性能優(yōu)化非常有幫助2017-11-11
mysql 設置自動創(chuàng)建時間及修改時間的方法示例
這篇文章主要介紹了mysql 設置自動創(chuàng)建時間及修改時間的方法,結合實例形式分析了mysql針對創(chuàng)建時間及修改時間相關操作技巧,需要的朋友可以參考下2019-09-09
CenOS6.7下mysql 8.0.22 安裝配置方法圖文教程
這篇文章主要為大家詳細介紹了CenOS6.7下mysql 8.0.22 安裝配置方法圖文教程,文中安裝步驟介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-11-11
MYSQL ERROR 1045 (28000): Access denied for user (using pass
Mysql中添加用戶之后可能出現(xiàn)登錄時提示ERROR 1045 (28000): Access denied for user的錯誤.2009-07-07

