成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

MySQL分區(qū)表的分區(qū)原理及優(yōu)缺點(diǎn)-創(chuàng)新互聯(lián)

這篇文章主要介紹“MySQL分區(qū)表的分區(qū)原理及優(yōu)缺點(diǎn)”,在日常操作中,相信很多人在MySQL分區(qū)表的分區(qū)原理及優(yōu)缺點(diǎn)問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對(duì)大家解答”MySQL分區(qū)表的分區(qū)原理及優(yōu)缺點(diǎn)”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!

成都創(chuàng)新互聯(lián)專注于企業(yè)營銷型網(wǎng)站、網(wǎng)站重做改版、內(nèi)丘網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、HTML5建站、成都做商城網(wǎng)站、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為內(nèi)丘等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

1.分區(qū)表的原理

分區(qū)表是由多個(gè)相關(guān)的底層表實(shí)現(xiàn),這些底層表也是由句柄對(duì)象表示,所以我們也可以直接訪問各個(gè)分區(qū),存儲(chǔ)引擎管理分區(qū)的各個(gè)底層表和管理普通表一樣(所有的底層表都必須使用相同的存儲(chǔ)引擎),分區(qū)表的索引只是在各個(gè)底層表上各自加上一個(gè)相同的索引,從存儲(chǔ)引擎的角度來看,底層表和一個(gè)普通表沒有任何不同,存儲(chǔ)引擎也無須知道這是一個(gè)普通表還是一個(gè)分區(qū)表的一部分。

在分區(qū)表上的操作按照下面的操作邏輯進(jìn)行:


select查詢:


當(dāng)查詢一個(gè)分區(qū)表的時(shí)候,分區(qū)層先打開并鎖住所有的底層表,優(yōu)化器判斷是否可以過濾部分分區(qū),然后再調(diào)用對(duì)應(yīng)的存儲(chǔ)引擎接口訪問各個(gè)分區(qū)的數(shù)據(jù)


insert操作:


當(dāng)寫入一條記錄時(shí),分區(qū)層打開并鎖住所有的底層表,然后確定哪個(gè)分區(qū)接受這條記錄,再將記錄寫入對(duì)應(yīng)的底層表


delete操作:


當(dāng)刪除一條記錄時(shí),分區(qū)層先打開并鎖住所有的底層表,然后確定數(shù)據(jù)對(duì)應(yīng)的分區(qū),最后對(duì)相應(yīng)底層表進(jìn)行刪除操作


update操作:


當(dāng)更新一條數(shù)據(jù)時(shí),分區(qū)層先打開并鎖住所有的底層表,mysql先確定需要更新的記錄在哪個(gè)分區(qū),然后取出數(shù)據(jù)并更新,再判斷更新后的數(shù)據(jù)應(yīng)該放在哪個(gè)分區(qū),然后對(duì)底層表進(jìn)行寫入操作,并對(duì)原數(shù)據(jù)所在的底層表進(jìn)行刪除操作


雖然每個(gè)操作都會(huì)打開并鎖住所有的底層表,但這并不是說分區(qū)表在處理過程中是鎖住全表的,如果存儲(chǔ)引擎能夠自己實(shí)現(xiàn)行級(jí)鎖,如:innodb,則會(huì)在分區(qū)層釋放對(duì)應(yīng)的表鎖,這個(gè)加鎖和解鎖過程與普通Innodb上的查詢類似。


2.在下面的場景中,分區(qū)可以起到非常大的作用:


A:表非常大以至于無法全部都放在內(nèi)存中,或者只在表的最后部分有熱點(diǎn)數(shù)據(jù),其他都是歷史數(shù)據(jù)


B:分區(qū)表的數(shù)據(jù)更容易維護(hù),如:想批量刪除大量數(shù)據(jù)可以使用清除整個(gè)分區(qū)的方式。另外,還可以對(duì)一個(gè)獨(dú)立分區(qū)進(jìn)行優(yōu)化、檢查、修復(fù)等操作


C:分區(qū)表的數(shù)據(jù)可以分布在不同的物理設(shè)備上,從而高效地利用多個(gè)硬件設(shè)備


D:可以使用分區(qū)表來避免某些特殊的瓶頸,如:innodb的單個(gè)索引的互斥訪問,ext3文件系統(tǒng)的inode鎖競爭等


E:如果需要,還可以備份和恢復(fù)獨(dú)立的分區(qū),這在非常大的數(shù)據(jù)集的場景下效果非常好


F:優(yōu)化查詢,在where字句中包含分區(qū)列時(shí),可以只使用必要的分區(qū)來提高查詢效率,同時(shí)在涉及sum()和count()這類聚合函數(shù)的查詢時(shí),可以在每個(gè)分區(qū)上面并行處理,最終只需要匯總所有分區(qū)得到的結(jié)果。


3.分區(qū)本身也有一些限制:


A:一個(gè)表最多只能有1024個(gè)分區(qū)(mysql5.6之后支持8192個(gè)分區(qū))


B:在mysql5.1中分區(qū)表達(dá)式必須是整數(shù),或者是返回整數(shù)的表達(dá)式,在5.5之后,某些場景可以直接使用字符串列和日期類型列來進(jìn)行分區(qū)(使用varchar字符串類型列時(shí),一般還是字符串的日期作為分區(qū))。


C:如果分區(qū)字段中有主鍵或者唯一索引列,那么所有主鍵列和唯一索引列都必須包含進(jìn)來,如果表中有主鍵或唯一索引,那么分區(qū)鍵必須是主鍵或唯一索引


D:分區(qū)表中無法使用外鍵約束

E:mysql數(shù)據(jù)庫支持的分區(qū)類型為水平分區(qū),并不支持垂直分區(qū),因此,mysql數(shù)據(jù)庫的分區(qū)中索引是局部分區(qū)索引,一個(gè)分區(qū)中既存放了數(shù)據(jù)又存放了索引,而全局分區(qū)是指的數(shù)據(jù)庫放在各個(gè)分區(qū)中,但是所有的數(shù)據(jù)的索引放在另外一個(gè)對(duì)象中


F:目前mysql不支持空間類型和臨時(shí)表類型進(jìn)行分區(qū)。不支持全文索引


4.子分區(qū)的建立需要注意以下幾個(gè)問題:


A:每個(gè)子分區(qū)的數(shù)量必須相同


B:只要在一個(gè)分區(qū)表的任何分區(qū)上使用subpartition來明確定義任何子分區(qū),就必須在所有分區(qū)上定義子分區(qū),不能漏掉一些分區(qū)不進(jìn)行子分區(qū)。


C:每個(gè)subpartition子句必須包括子分區(qū)的一個(gè)名字


D:子分區(qū)的名字必須是唯一的,不能在一張表中出現(xiàn)重名的子分區(qū)


E:mysql數(shù)據(jù)庫的分區(qū)總是把null當(dāng)作比任何非null更小的值,這和數(shù)據(jù)庫中處理null值的order by操作是一樣的,升序排序時(shí)null總是在最前面,因此對(duì)于不同的分區(qū)類型,mysql數(shù)據(jù)庫對(duì)于null的處理也各不相同。對(duì)于range分區(qū),如果向分區(qū)列插入了null,則mysql數(shù)據(jù)庫會(huì)將該值放入最左邊的分區(qū),注意,如果刪除分區(qū),分區(qū)下的所有內(nèi)容都從磁盤中刪掉了,null所在分區(qū)被刪除,null值也就跟著被刪除了。在list分區(qū)下要使用null,則必須顯式地定義在分區(qū)的散列值中,否則插入null時(shí)會(huì)報(bào)錯(cuò)。hash和key分區(qū)對(duì)于null的處理方式和range,list分區(qū)不一樣,任何分區(qū)函數(shù)都會(huì)將null返回為0.

到此,關(guān)于“MySQL分區(qū)表的分區(qū)原理及優(yōu)缺點(diǎn)”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

網(wǎng)站標(biāo)題:MySQL分區(qū)表的分區(qū)原理及優(yōu)缺點(diǎn)-創(chuàng)新互聯(lián)
當(dāng)前URL:http://jinyejixie.com/article32/ccsgpc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、虛擬主機(jī)自適應(yīng)網(wǎng)站、微信小程序動(dòng)態(tài)網(wǎng)站、品牌網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管
米泉市| 三河市| 屏东县| 大同县| 阳朔县| 和平区| 喀喇| 磐石市| 黎川县| 观塘区| 平和县| 乐平市| 东台市| 托里县| 子长县| 丹寨县| 卢氏县| 普陀区| 吴旗县| 大悟县| 枞阳县| 平乡县| 烟台市| 巴楚县| 江津市| 文安县| 泗阳县| 隆昌县| 深水埗区| 水城县| 乳源| 伊金霍洛旗| 永康市| 漳州市| 沂南县| 安徽省| 无为县| 瓦房店市| 昌乐县| 锡林郭勒盟| 海南省|