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