mysql千萬級數據大表該如何優化?

如何設計或優化千萬級別的大表?此外無其他信息,個人覺得這個話題有點范,就只好簡單說下該如何做,對于一個存儲設計,必須考慮業務特點,收集的信息如下

1.數據的容量:1-3年內會大概多少條數據,每條數據大概多少字節;

2.數據項:是否有大字段,那些字段的值是否經常被更新;
3.數據查詢SQL條件:哪些數據項的列名稱經常出現在WHERE、GROUP BY、ORDER BY子句中等;
4.數據更新類SQL條件:有多少列經常出現UPDATE或DELETE 的WHERE子句中;
5.SQL量的統計比,如:SELECT:UPDATE+DELETE:INSERT=多少?

6.預計大表及相關聯的SQL,每天總的執行量在何數量級?
7.表中的數據:更新為主的業務 還是 查詢為主的業務
8.打算采用什么數據庫物理服務器,以及數據庫服務器架構?
9.并發如何?
10.存儲引擎選擇InnoDB還是MyISAM?

大致明白以上10個問題,至于如何設計此類的大表,應該什么都清楚了!

至于優化若是指創建好的表,不能變動表結構的話,那建議InnoDB引擎,多利用點內存,減輕磁盤IO負載,因為IO往往是數據庫服務器的瓶頸

另外對優化索引結構去解決性能問題的話,建議優先考慮修改類SQL語句,使他們更快些,不得已只靠索引組織結構的方式,當然此話前提是,
索引已經創建的非常好,若是讀為主,可以考慮打開query_cache,

以及調整一些參數值:sort_buffer_size,read_buffer_size,read_rnd_buffer_size,join_buffer_size

其他人建議:

1. 索引, 避免掃描,基于主鍵的查找,上億數據也是很快的;
2. 反范式化設計,以空間換時間,避免join,有些join操作可以在用代碼實現,沒必要用數據庫來實現;

? 版權聲明
THE END
喜歡就支持一下吧
點贊5 分享