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 

更多信息參見:
MySQL數據庫服務器端核心參數詳解和推薦配置
html

相關文章
相關標籤/搜索