MySQL分區(qū)表
mysql分區(qū)表是一個獨立的邏輯表,但是底層由多個物理字表組成。
對分區(qū)的請求,都會通過句柄對象轉(zhuǎn)化成對存儲引擎接口的調(diào)用。所以分區(qū)對于
對于sql層來說是一個完全封裝底層實現(xiàn)的黑盒子,對應用是透明的。
Mysql實現(xiàn)分區(qū)表的方式--對底層表的封裝--意味著索引也是按照分區(qū)的字表定義的,而沒有全局索引。
適合場景:
表中只有最后部分數(shù)據(jù)是熱點數(shù)據(jù),其他均為臨時數(shù)據(jù)。
分區(qū)表中數(shù)據(jù)更容易維護,可以對獨立的分區(qū)進行優(yōu)化,檢查、修復等操作
分區(qū)表數(shù)據(jù)可以分布在不同物理設備上,從而高效地利用多個硬件設備
可以備份和恢復獨立的分區(qū),這在非常大的數(shù)據(jù)集的場景下效果非常好。
分區(qū)限制:
一個分區(qū)表只能有1024個分區(qū)
如果分區(qū)字段中有主鍵或者唯一索引的列,那么所有主鍵列和唯一索引列都必須包含進來。
利用分區(qū)表來避免某些特殊的瓶頸,例如Innodb的單個索引的互斥訪問ext3文件系統(tǒng)的inode鎖競爭等。
分區(qū)表無法使用外鍵約束。
分區(qū)表的原理
從存儲引擎的角度來看,底層表和一個普通的表沒有任何不同,存儲引擎也無需知道這是一個普通表還是一個分區(qū)表的一部分。
select查詢
分區(qū)表的類型
mysql支持多種分區(qū)表。分區(qū)表達式可以是列,也可以是包含列的表達式。例如,下表就可以將每一年的銷售額存放在不同的分區(qū)里。
create table sales(
order_date datetime not null,
--Other columns
)engine=InnoDB partition by range(Year(order_date))(
partition p_2010 values less then (2010),
partition p_2011 values less then(2011),
partition p_catchall values less then maxvalue);
mysql還支持鍵值,哈希和列表分區(qū)。
系統(tǒng)通過子分區(qū)可降低索引的互斥訪問的競爭。最近一年的分區(qū)的數(shù)據(jù)會被非常頻繁地訪問,這會導致大量的互斥鎖的競爭。使用哈希子分區(qū)可以
將數(shù)據(jù)切成多個小片,大大降低互斥量的競爭問題。
本文題目:mysql分區(qū)表筆記
文章源于:http://www.chinadenli.net/article46/jiiheg.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供面包屑導航、網(wǎng)站營銷、商城網(wǎng)站、手機網(wǎng)站建設、網(wǎng)站策劃、
廣告
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源:
創(chuàng)新互聯(lián)