有一個大數據表,有30個字段,int
varchar
text
字段都有,1000W+數據,每天都會增加,經常搜尋的字段有10個,這個怎麼優化?
請教了一個人,才得到差不多的答案,感覺這種問題有點假,現實中基本上不會出這種問題吧?
優化方案:
主從同步+讀寫分離:
這個表在有設備條件的情況下,讀寫分離,這樣能減少很多壓力,而且資料穩定性也能提高
縱向分錶:
根據原則,每個表最多不要超過5個索引,縱向分割字段,將部分字段拆到一個新表
通常我們會依照以下原則進行垂直拆分:(先區分這個表中的冷熱資料欄位)
把不常用的欄位單獨放在一張表;
把text
,blob
等大字段拆分出來放在附表中;
經常組合查詢的列放在一張表中;
缺點是:很多邏輯需要重寫,帶來很大的工作量。
利用表格分割區:
這個是推薦的一個解決方案,不會帶來重寫邏輯等,可以根據時間來進行表格分割區,相當於在同一個磁碟上,表格的資料存在不同的資料夾內,能夠大幅的提高查詢速度。
橫向分錶:
1000W條資料不少的,會帶來一些運維壓力,備份的時候,單表備份所需時間會很長,所以可以根據伺服器硬體條件進行水平分錶,每個表有多少資料為準。
有不好的地方,請指點一下,謝謝。
以上是介紹幾種Mysql多字段大表的最佳化方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!