原發布:
有乙個大資料表,有30個字段,int
varchar
text
欄位都有,1000w+資料,每天都會增加,經常搜尋的字段有10個,這個怎麼優化?
請教了乙個人,才得到差不多的答案,感覺這種問題有點假,現實中基本不會出這種問題吧?
優化方案:
主從同步+讀寫分離:
這個表在有裝置條件的情況下,讀寫分離,這樣能減少很多壓力,而且資料穩定性也能提高
縱向分表:
根據原則,每個表最多不要超過5個索引,縱向拆分字段,將部分欄位拆到乙個新錶
通常我們按以下原則進行垂直拆分:(先區分這個表中的冷熱資料字段)
把不常用的字段單獨放在一張表;
把text
,blob
等大字段拆分出來放在附表中;
經常組合查詢的列放在一張表中;
缺點是:很多邏輯需要重寫,帶來很大的工作量。
利用表分割槽:
參考:這個是推薦的乙個解決方案,不會帶來重寫邏輯等,可以根據時間來進行表分割槽,相當於在同乙個磁碟上,表的資料存在不同的資料夾內,能夠極大的提高查詢速度。
橫向分表:
1000w條資料不少的,會帶來一些運維壓力,備份的時候,單錶備份所需時間會很長,所以可以根據伺服器硬體條件進行水平分表,每個表有多少資料為準。
有不好的地方,請指點一下,謝謝。
MySQL單錶多字段模糊查詢
在最近的乙個專案需要實現在單錶中對多字段進行多個關鍵字的模糊查詢,但這數個關鍵字並不一定都存在於某個字段。例如現有table表,其中有 title,tag,description三個字段,分別記錄一條資料的標題,標籤和介紹。然後根據使用者輸入的查詢請求,將輸入的字串通過空格分割為多 個關鍵字,再在這...
單錶多字段MySQL模糊查詢的實現
mysql模糊查詢是我們經常會遇到的,下面就為您介紹 mysql模糊查詢的實現方法,希望對您學習mysql模糊查詢方面能夠有所幫助。在最近的乙個專案需要實現在單錶中對多字段進行多個關鍵字的mysql模糊查詢,但這數個關鍵字並不一定都存在於某個字段 例如現有table表,其中有title,tag,de...
MySQL大表優化方案
cubrid 但其工業品質和mysql尚有差距,且需要較大的運維投入,如果想將原始的mysql遷移到可水平擴充套件的新資料庫中,可以考慮一些雲資料庫 阿里雲petadata 阿里雲oceanbase nosql 在mysql上做sharding是一種戴著鐐銬的跳舞,事實上很多大表本身對mysql這種...