通常情況下,MySQL在單表數據超過100萬,執行效率開始變慢,需要根據業務量進行硬件升級和數據庫優化,而數據庫優化主要包括:表結構優化、索引優化、SQL語句優化、分區儲存、分表存儲等等,本文專門來介紹數據庫優化之一的分表儲存優化。
分表儲存,如果一張表中的數據可以分為多種不同的類型,并且對不同類型的數據同時操作的場景不多時,可以考慮把不同類型的數據保存在不同的表中。或者可以將一個大表拆分成多個小表,從而減小鎖的粒度。比如某個表的訪問頻率很高,某個寫操作只更改個別列的數據,而其他未被修改的列可能被別的查詢請求訪問,這時就可以通過分表來提高查詢效率。
大部分cms程序都會把內容數據壓縮到一張表中,如下圖結構:
所有的內容都儲存在這種表中,當數據量達到上百萬以后,查詢速度就會延遲。
分表儲存方案
一、按內容模塊儲存數據
迅睿內容模塊原理是按不同類型的數據創建,比如文章模塊、圖集模塊、商品模塊,這些模塊的內容表都是分開儲存的,如下圖結構:
這樣可以將網站的數據合理的按儲存類別進行規劃創建模塊,獨立模塊更加有利于大數據儲存。
二、按欄目進行主表分表儲存(VIP支持)
按欄目作為分表,比如網站數據量有100w,按5個欄目分表,平均每個欄目儲存20w數據,前端查詢時在20w數據就比查詢100w數據快很多。
配合(一)多模塊+欄目分表可以大大提示儲存效率。
三、內容附表無限分表
模塊附表字段儲存,通常情況下會把一些不用于列表顯示的字段儲存到data表,這樣可以減輕查詢表的字段負擔,data表將按10w數據基數進行無限分表儲存。
上一篇:自定義后臺UI界面
下一篇:沒有了