提問:如何設計或優化千萬級別的大表?此外無其餘信息,我的以爲這個話題有點範,就只好簡單說下該如何作,對於一個存儲設計,必須考慮業務特色,收集的信息以下:
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
更多信息參見:
MySQL數據庫服務器端核心參數詳解和推薦配置
http://www.mysqlops.com/2011/10/26/mysql-variables-one.htmlhtml