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