久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

SQL中怎么實現(xiàn)分庫分表

165次閱讀
沒有評論

共計 1508 個字符,預(yù)計需要花費 4 分鐘才能閱讀完成。

本篇文章為大家展示了 SQL 中怎么實現(xiàn)分庫分表,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

SQL 怎樣進行分庫分表

方案 1:

通過提升服務(wù)器硬件能力來提高數(shù)據(jù)處理能力,比如增加存儲容量、CPU 等,這種方案成本很高,并且如果瓶頸在

MySQL 本身那么提高硬件也是有很的。

方案 2:

把數(shù)據(jù)分散在不同的數(shù)據(jù)庫中,使得單一數(shù)據(jù)庫的數(shù)據(jù)量變小來緩解單一數(shù)據(jù)庫的性能問題,從而達到提升數(shù)據(jù)庫性能的目的,如下圖: 將電商數(shù)據(jù)庫拆分為若干獨立的數(shù)據(jù)庫,并且對于大表也拆分為若干小表,通過這種數(shù)據(jù)庫拆分的方法來解決數(shù)據(jù)庫的性能問題。

分庫分表就是為了解決由于數(shù)據(jù)量過大而導(dǎo)致數(shù)據(jù)庫性能降低的問題,將原來獨立的數(shù)據(jù)庫拆分成若干數(shù)據(jù)庫組成,將數(shù)據(jù)大表分成若干數(shù)據(jù)表組成,使得單一數(shù)據(jù)庫、單一數(shù)據(jù)表的數(shù)據(jù)量變小,從而達到提升數(shù)據(jù)庫性能的目的。

分庫分表的方式

分庫分表包括分庫和分表兩個部分,在生產(chǎn)中通常包括:垂直分庫、水平分庫、垂直分表、水平分表四種方式。

垂直分表

下邊通過一個商品查詢的案例來垂直分表:

通常在商品列表中是不是顯示商品詳情信息的。

用戶在瀏覽商品列表時,只有對某商品感興趣時才會查看商品的詳細描述。因此,商品信息中商品描述字段訪問頻次較低,且該字段存儲占用空間較大,訪問單個數(shù)據(jù) IO 時間較長;商品信息中商品名稱、商品圖片、商品價格等其他字段數(shù)據(jù)訪問頻次較高。

由于這兩種數(shù)據(jù)的特性不一樣,因此他考慮將商品信息表拆分如下:

將訪問頻次低的商品描述信息單獨存放在一張表中,訪問頻次較高的商品基本信息單獨放在一張表中。

商品列表可采用以下 sql:

SELECTp.*,r.[地理區(qū)域名稱],s.[店鋪名稱],s.[信譽]FROM[商品信息]p

LEFTJOIN[地理區(qū)域]rONp.[產(chǎn)地]=r.[地理區(qū)域編碼]LEFTJOIN[店鋪信息]sONp.id=s.[所屬店鋪]WHERE…ORDERBY…LIMIT…

需要獲取商品描述時,再通過以下 sql 獲取:

SELECT*

FROM[商品描述]WHERE[商品 ID]=?

小明進行的這一步優(yōu)化,就叫垂直分表。

垂直分表定義:將一個表按照字段分成多表,每個表存儲其中一部分字段。

它帶來的提升是:

1. 為了避免 IO 爭搶并減少鎖表的幾率,查看詳情的用戶與商品信息瀏覽互不影響。

2. 充分發(fā)揮熱門數(shù)據(jù)的操作效率,商品信息的操作的高效率不會被商品描述的低效率所拖累。

注意:

為什么大字段 IO 效率低:

第一是由于數(shù)據(jù)量本身大,需要更長的讀取時間;

第二是跨頁,頁是數(shù)據(jù)庫存儲單位,很多查找及定位操作都是以頁為單位,單頁內(nèi)的數(shù)據(jù)行越多數(shù)據(jù)庫整體性能越好,而大字段占用空間大,單頁內(nèi)存儲行數(shù)少,因此 IO 效率較低。

第三,數(shù)據(jù)庫以行為單位將數(shù)據(jù)加載到內(nèi)存中,這樣表中字段長度較短且訪問頻率較高,內(nèi)存能加載更多的數(shù)據(jù),命中率更高,減少來磁盤 IO,從而提升來數(shù)據(jù)庫性能。

一般來說,某業(yè)務(wù)實體中的各個數(shù)據(jù)項的訪問頻次是不一樣的,部分數(shù)據(jù)項可能是占用存儲空間比較大的 BLOB 或是 TEXT。例如上例中的商品描述。所以,當表數(shù)據(jù)量很大時,可以將表按字段切開,將熱門字段、冷門字段分開放置在不同庫中,這些庫可以放在不同的存儲設(shè)置上,避免 IO 爭搶。垂直切分帶來的性能提升主要集中在熱門數(shù)據(jù)的操作效率上,而且磁盤爭用情況減少。

通常我們按以下原則進行垂直拆分:

1、把不常用的字段單獨放在一張表;

2、把 text,blob 等大字段拆分出來放在附表中;

3、經(jīng)常組合查詢的列放在一張表中;

上述內(nèi)容就是 SQL 中怎么實現(xiàn)分庫分表,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道。

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-08-03發(fā)表,共計1508字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 吉安县| 威宁| 博野县| 文昌市| 右玉县| 洛川县| 乳源| 潮州市| 广南县| 绥棱县| 牟定县| 类乌齐县| 天全县| 韶山市| 朝阳区| 运城市| 上杭县| 福泉市| 哈密市| 北安市| 吉林市| 青川县| 隆昌县| 洛川县| 丘北县| 古浪县| 西乡县| 基隆市| 革吉县| 化州市| 大田县| 颍上县| 乐清市| 汝阳县| 长海县| 普兰县| 永吉县| 潮州市| 墨玉县| 东至县| 西充县|