mysql千萬級資料大表該如何最佳化?

來源:互聯網
上載者:User

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操作可以在用代碼實現,沒必要用資料庫來實現;

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.