原發布:http://river0314.lofter.com/p…
有一個大資料表,有30個欄位,int
varchar
text
欄位都有,1000W+資料,每天都會增加,經常搜尋的欄位有10個,這個怎麼優化?
請教了一個人,才得到差不多的答案,感覺這種問題有點假,現實中基本不會出這種問題吧?
優化方案:
主從同步+讀寫分離:
這個表在有裝置條件的情況下,讀寫分離,這樣能減少很多壓力,而且資料穩定性也能提高
縱向分表:
根據原則,每個表最多不要超過5個索引,縱向拆分欄位,將部分欄位拆到一個新表
通常我們按以下原則進行垂直拆分:(先區分這個表中的冷熱資料欄位)
把不常用的欄位單獨放在一張表;
把text
,blob
等大欄位拆分出來放在附表中;
經常組合查詢的列放在一張表中;
缺點是:很多邏輯需要重寫,帶來很大的工作量。
利用表分割槽:
參考:https://my.oschina.net/ydsaky…
這個是推薦的一個解決方案,不會帶來重寫邏輯等,可以根據時間來進行表分割槽,相當於在同一個磁碟上,表的資料存在不同的資料夾內,能夠極大的提高查詢速度。
橫向分表:
1000W條資料不少的,會帶來一些運維壓力,備份的時候,單表備份所需時間會很長,所以可以根據伺服器硬體條件進行水平分表,每個表有多少資料為準。
有不好的地方,請指點一下,謝謝。