国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

MySQL數據切分的相關概念和原理詳解

數據庫 MySQL
本文我們主要就介紹了MySQL數據切分的相關概念和原理的相關知識,包括什么是數據切分、為什么要數據切分和怎樣使用數據切分的相關內容,希望能夠對您有所幫助。

對于數據切分,我們可能還不是很熟悉,但是它對于MySQL數據庫來說也是相當重要的一門技術,本文我們就詳細介紹一下MySQL數據庫的數據切分的相關知識,接下來就讓我們一起來了解一下這部分內容。

什么是數據切分

"Shard" 這個詞英文的意思是"碎片",而作為數據庫相關的技術用語,似乎最早見于大型多人在線角色扮演游戲中。"Sharding" 姑且稱之為"分片"。Sharding 不是一門新技術,而是一個相對簡樸的軟件理念。眾所周知,MySQL 5 之后才有了數據表分區功能,那么在此之前,很多MySQL的潛在用戶都對MySQL的擴展性有所顧慮,而是否具備分區功能就成了衡量一個數據庫可擴展性與否的一個關鍵指標(當然不是唯一指標)。

數據庫擴展性是一個永恒的話題,MySQL 的推廣者經常會被問到:如在單一數據庫上處理應用數據捉襟見肘而需要進行分區化之類的處理,是如何辦到的呢? 答案是:Sharding。  Sharding 不是一個某個特定數據庫軟件附屬的功能,而是在具體技術細節之上的抽象處理,是水平擴展(Scale Out,亦或橫向擴展、向外擴展)的解決方案,其主要目的是為突破單節點數據庫服務器的 I/O 能力限制,解決數據庫擴展性問題。

通過一系列的切分規則將數據水平分布到不同的DB或table中,在通過相應的DB路由 或者 table路由規則找到需要查詢的具體的DB或者table,以進行Query操作。這里所說的“sharding”通常是指“水平切分”, 這也是本文討 論的重點。具體將有什么樣的切分方式呢和路由方式呢?行文至此,讀者難免有所疑問,接下來舉個簡單的例子:我們針對一個Blog應用中的日志來說明, 比如日志文章(article)表有如下字段:article_id(int),title(varchar(128)),content(varchar(1024)),user_id(int).

 

面對這樣的一個表,我們怎樣切分呢?怎樣將這樣的數據分布到不同的數據庫中的表中去呢?其實 分析blog的應用,我們不難得出這樣的結論:blog的應用中,用戶分為兩種:瀏覽者和blog的主人。瀏覽者瀏覽某個blog,實際上是在一個特定的 用戶的blog下進行瀏覽的,而blog的主人管理自己的blog,也同樣是在特定的用戶blog下進行操作的(在自己的空間下)。所謂的特定的用戶,用數據庫的字段表示就是“user_id”。就是這個“user_id”,它就是我們需要的分庫的依據和規則的基礎。我們可以這樣做,將user_id為 1~10000的所有的文章信息放入DB1中的article表中,將user_id為10001~20000的所有文章信息放入DB2中的 article表中,以此類推,一直到DBn。 

這樣一來,文章數據就很自然的被分到了各個數據庫中,達到了數據切分的目的。接下來要解決的問題就是怎樣找 到具體的數據庫呢?其實問題也是簡單明顯的,既然分庫的時候我們用到了區分字段user_id,那么很自然,數據庫路由的過程當然還是少不了 user_id的。考慮一下我們剛才呈現的blog應用,不管是訪問別人的blog還是管理自己的blog,總之我都要知道這個blog的用戶是誰吧,也 就是我們知道了這個blog的user_id,就利用這個user_id,利用分庫時候的規則,反過來定位具體的數據庫,比如user_id是234,利 用該才的規則,就應該定位到DB1,假如user_id是12343,利用該才的規則,就應該定位到DB2。以此類推,利用分庫的規則,反向的路由到具體 的DB,這個過程我們稱之為“DB路由”。

當然考慮到數據切分的DB設計必然是非常規,不正統的DB設計。那么什么樣的DB設計是正統的DB設計呢?

我們平常規規矩矩用的基本都是。平常我們會自覺的按照范式來設計我們的數據庫,負載高點可能 考慮使用相關的Replication機制來提高讀寫的吞吐和性能,這可能已經可以滿足很多需求,但這套機制自身的缺陷還是比較顯而易見的(下文會提 及)。上面提到的“自覺的按照范式設計”。考慮到數據切分的DB設計,將違背這個通常的規矩和約束,為了切分,我們不得不在數據庫的表中出現冗余字段,用 作區分字段或者叫做分庫的標記字段,比如上面的article的例子中的user_id這樣的字段(當然,剛才的例子并沒有很好的體現出user_id的 冗余性,因為user_id這個字段即使就是不分庫,也是要出現的,算是我們撿了便宜吧)。當然冗余字段的出現并不只是在分庫的場景下才出現的,在很多大型應用中,冗余也是必須的,這個涉及到高效DB的設計,本文不再贅述。

為什么要數據切分

上面對什么是數據切分做了個概要的描述和解釋,讀者可能會疑問,為什么需要數據切分呢?像 Oracle這樣成熟穩定的數據庫,足以支撐海量數據的存儲與查詢了?為什么還需要數據切片呢?的確,Oracle的DB確實很成熟很穩定,但是高昂的使 用費用和高端的硬件支撐不是每一個公司能支付的起的。試想一下一年幾千萬的使用費用和動輒上千萬元的小型機作為硬件支撐,這是一般公司能支付的起的嗎?即 使就是能支付的起,假如有更好的方案,有更廉價且水平擴展性能更好的方案,我們為什么不選擇呢?

但是,事情總是不盡人意。平常我們會自覺的按照范式來設計我們的數據庫,負載高點可能考慮使 用相關的Replication機制來提高讀寫的吞吐和性能,這可能已經可以滿足很多需求,但這套機制自身的缺陷還是比較顯而易見的。首先它的有效很依賴 于讀操作的比例,Master往往會成為瓶頸所在,寫操作需要順序排隊來執行,過載的話Master首先扛不住,Slaves的數據同步的延遲也可能比較大,而且會大大耗費CPU的計算能力,因為write操作在Master上執行以后還是需要在每臺slave機器上都跑一次。這時候 Sharding可能會成為雞肋了。

Replication搞不定,那么為什么Sharding可以工作呢?道理很簡單,因為它可以很好的擴展。我們知道每臺機器無論配置多么好它都有自身的 物理上限,所以當我們應用已經能觸及或遠遠超出單臺機器的某個上限的時候,我們惟有尋找別的機器的幫助或者繼續升級的我們的硬件,但常見的方案還是橫向擴 展, 通過添加更多的機器來共同承擔壓力。我們還得考慮當我們的業務邏輯不斷增長,我們的機器能不能通過線性增長就能滿足需求?Sharding可以輕松的將計 算,存儲,I/O并行分發到多臺機器上,這樣可以充分利用多臺機器各種處理能力,同時可以避免單點失敗,提供系統的可用性,進行很好的錯誤隔離。

綜合以上因素,數據切分是很有必要的,且我們在此討論的數據切分也是將MySql作為背景的。基于成本的考慮,很多公司也選擇了Free且Open的MySql。對MySql有所了解的開發人員可能會知道,MySQL 5之后才有了數據表分區功能,那么在此之前,很多MySQL的潛在用戶都對MySQL的擴展性有所顧慮,而是否具備分區功能就成了衡量一個數據庫可擴展性與否的一個關鍵指標(當然不是唯一指標)。數據庫擴展性是一個永恒的話題,MySQL的推廣者經常會被問到:如在單一數據庫上處理應用數據捉襟見肘而需要進行分區化之類的處理,是如何辦到的呢? 答案也是Sharding,也就是我們所說的數據切分方案。

怎么做到數據切分

說到數據切分,再次我們講對數據切分的方法和形式進行比較詳細的闡述和說明。

數據切分可以是物理上的,對數據通過一系列的切分規則將數據分布到不同的DB服務器上,通過路由規則路由訪問特定的數據庫,這樣一來每次訪問面對的就不是單臺服務器了,而是N臺服務器,這樣就可以降低單臺機器的負載壓力。

數據切分也可以是數據庫內的 ,對數據通過一系列的切分規則,將數據分布到一個數據庫的不同表 中,比如將article分為article_001,article_002等子表,若干個子表水平拼合有組成了邏輯上一個完整的article表,這 樣做的目的其實也是很簡單的。 舉個例子說明,比如article表中現在有5000w條數據,此時我們需要在這個表中增加(insert)一條新的數 據,insert完畢后,數據庫會針對這張表重新建立索引,5000w行數據建立索引的系統開銷還是不容忽視的。

但是反過來,假如我們將這個表分成100 個table呢,從article_001一直到article_100,5000w行數據平均下來,每個子表里邊就只有50萬行數據,這時候我們向一張 只有50w行數據的table中insert數據后建立索引的時間就會呈數量級的下降,極大了提高了DB的運行時效率,提高了DB的并發量。當然分表的好 處還不知這些,還有諸如寫操作的鎖操作等,都會帶來很多顯然的好處。

綜上,分庫降低了單點機器的負載;分表,提高了數據操作的效率,尤其是Write操作的效率。 行文至此我們依然沒有涉及到如何切分的問題。接下來,我們將對切分規則進行詳盡的闡述和說明。

關于MySQL數據切分的相關概念和原理的知識就介紹到這里了,希望本次的介紹能夠對您有所收獲!

【編輯推薦】

  1. Star Schema的設計思路與總結
  2. MySQL性能分析及explain的使用
  3. Oracle數據庫悲觀鎖與樂觀鎖詳解
  4. SQL Server多表查詢優化方案總結
  5. Oracle執行計劃不走索引的原因總結
責任編輯:趙鵬 來源: 網易博客
相關推薦

2020-10-30 09:00:00

JavaScriptJavaScript引前端

2010-01-26 18:00:07

Android屏幕元素

2009-12-29 17:25:36

Silverlight

2022-07-04 09:00:00

帳戶劫持信息安全攻擊

2009-12-21 17:05:59

WCF自托管宿主

2010-01-05 10:29:43

.NET Framew

2010-01-05 16:15:05

.NET Framew

2010-02-26 14:39:27

WCF服務寄宿

2010-01-06 19:22:43

.NET Framew

2010-05-17 13:39:10

MySQL Clust

2010-01-28 16:45:44

Android單線程模

2011-03-30 13:44:45

MySQL數據庫鎖機制

2011-09-01 10:56:34

2011-08-30 13:40:28

MySQL線程

2009-03-12 10:02:00

數據網絡交換機原理

2010-01-05 14:04:53

.NET Framew

2010-01-07 11:28:44

VB.NET Hash

2010-01-05 16:31:45

.NET Framew

2020-01-06 10:58:18

JvmGC機制虛擬機

2013-01-15 09:14:20

點贊
收藏

51CTO技術棧公眾號

91精品亚洲| 亚洲国产成人精品女人久久久 | 日本精品视频在线观看| 国产精品久久久久999| av在线www| 激情欧美一区| 精品99一区二区| 艳色歌舞团一区二区三区| 中文字幕一区二区三区欧美日韩| 婷婷六月综合| 999精品视频在线观看| 精品国产自在久精品国产| 黄动漫在线看| 久久亚洲免费视频| 国产片侵犯亲女视频播放| 久久精品国产99| 欧美一区国产一区| 国产精品啊啊啊| 不卡日韩av| 97久久夜色精品国产| 国产91九色视频| 一区二区三区在线资源| 久久精品国产免费观看| 深夜日韩欧美| 国内精品久久久久久影视8| 欧美精品123| 国内自拍一区| 精品一区日韩成人| 久久午夜激情| 亚洲精品久久久久久一区二区| 免费高清在线一区| 亚洲欧洲国产日韩精品| 国产黄色精品网站| 欧美激情 国产精品| 久久―日本道色综合久久| 国产又大又黄又粗又爽| 亚洲欧美另类小说| 色播色播色播色播色播在线| 欧美视频你懂的| av伦理在线| 超碰91人人草人人干| av一卡二卡| 欧美视频一区二区三区…| 成人在线二区| 亚洲精品黄网在线观看| 亚洲青青久久| 国产成人精品在线视频| 亚洲特级毛片| 69精品丰满人妻无码视频a片| 久久久亚洲综合| 色播在线观看| 欧美mv日韩mv国产网站app| 亚洲天堂2018av| 亚洲精品国产无套在线观| 97精品国产露脸对白| 美国av在线播放| 亚洲日本在线观看视频| 亚洲石原莉奈一区二区在线观看| 污网站免费在线观看| 一区二区三区四区激情| 欧美日韩在线视频观看| 精品无人区一区二区三区| 日韩最新在线| 7m第一福利500精品视频| 国产精品亚洲四区在线观看| www久久99| 中文字幕在线不卡| 国产麻豆一区| www.久久精品| 欧洲精品毛片网站| 懂色中文一区二区在线播放| а天堂8中文最新版在线官网| 国产精品va在线播放| 日韩理论在线观看| 风间由美性色一区二区三区四区| 国产精品69久久久| 久久精品免费观看| 亚洲制服国产| 国产一区二区三区视频在线观看| 99久久久国产精品美女| 久久久久九九九| 国产91色综合久久免费分享| 蜜桃视频免费网站| 日韩欧美的一区二区| 亚洲综合欧美| 黄色三级中文字幕| 久久97久久97精品免视看秋霞| 亚洲综合视频在线| 欧美jizz18性欧美| 久久久久久国产| 国产精品毛片| 成人网址大全| 亚洲精品国产精品乱码不99按摩| 精品视频高潮| 国产日产欧美一区二区| 午夜精品久久久久久久久久久| 亚洲美女尤物影院| 欧美亚洲综合久久| 国产成人免费| 97久久夜色精品国产九色| 91在线观看一区二区| 亚洲欧美制服综合另类| 欧美国产一级| 欧美精品第三页| 亚洲国产小视频| 91亚洲国产高清| 男人舔女人下面高潮视频| 欧美日韩电影在线播放| 日韩激情啪啪| 91成人在线观看喷潮教学| 欧美一级片在线观看| 国产精品麻豆一区二区三区 | 日韩精品电影在线观看| 成人美女免费网站视频| 91免费在线看| 激情都市亚洲| 久久久国产精品一区二区三区| 一区二区在线看| 亚洲超碰在线观看| 久久精品国产精品亚洲综合| 欧美mv日韩| 蜜臀av在线| 91精品国模一区二区三区| 国产成人精品三级高清久久91| 中文字幕在线看视频国产欧美| 九九精品调教| 日本三级中国三级99人妇网站| 在线亚洲欧美专区二区| 亚洲精品a级片| 日韩在线免费播放| 国产三级精品网站| 天天综合色天天| 欧美国产美女| 久久米奇亚洲| 精品国产一区二区三区久久久蜜月| 亚洲一区在线| 成人免费高清在线播放| 国产一区福利视频| 欧美性猛交xxxx乱大交退制版| 国产精品激情| 羞羞污视频在线观看| 中文字幕日韩一区二区三区不卡| 91小视频在线| 伊人久久大香伊蕉在人线观看热v| 成人一区二区av| www.欧美精品| 精品国产乱码久久久久久果冻传媒| 国产高潮免费视频| 国内精品模特av私拍在线观看| 国产精品―色哟哟| 伊人成综合网yiren22| 婷婷六月激情| 欧美性猛交xxxx乱大交蜜桃 | 26uuu成人| 日韩免费电影网站| 日韩黄色免费电影| 不卡av播放| 免费黄色一级网站| 国产成人免费av| 国内久久精品视频| 亚洲天天影视| 欧美aaa大片| 欧美亚洲视频一区| 国产人妻人伦精品| 久久精品美女视频网站| 国产日产欧美一区| 国产精品免费99久久久| 国产日本在线| 少妇熟女一区二区| 欧美成人激情在线| 精品福利视频导航| 日韩专区一卡二卡| 韩国三级大全久久网站| 日本不卡高字幕在线2019| 亚洲国产成人91porn| 妖精视频成人观看www| 久久男人资源视频| 欧美午夜激情小视频| 日本特黄久久久高潮| 国内精品视频| 三级在线电影| 欧美美女黄色网| 国产精品日韩专区| 日韩精品一区二区三区视频 | 免费观看成年在线视频网站| 亚洲国产精品123| 久久露脸国产精品| 欧美日韩国产影片| 91麻豆精东视频| 欧美精品综合| 成人国产在线| 日韩精品视频在线观看一区二区三区| 亚洲日本欧美在线| 国产精品成人一区二区三区吃奶| 欧美哺乳videos| 中文字幕日韩一区| 日韩精品一级二级 | 成人羞羞视频免费看看| 亚洲激情电影在线| 国产精品视频免费在线观看|