mysql分割槽表筆記

yangzhangyue發表於2017-12-08
mysql分割槽表
   mysql分割槽表是一個獨立的邏輯表,但是底層由多個物理字表組成。
   對分割槽的請求,都會透過控制程式碼物件轉化成對儲存引擎介面的呼叫。所以分割槽對於
對於sql層來說是一個完全封裝底層實現的黑盒子,對應用是透明的。
   Mysql實現分割槽表的方式--對底層表的封裝--意味著索引也是按照分割槽的字表定義的,而沒有全域性索引。
適合場景:
   表中只有最後部分資料是熱點資料,其他均為臨時資料。
   分割槽表中資料更容易維護,可以對獨立的分割槽進行最佳化,檢查、修復等操作
   分割槽表資料可以分佈在不同物理裝置上,從而高效地利用多個硬體裝置
   可以備份和恢復獨立的分割槽,這在非常大的資料集的場景下效果非常好。
   
分割槽限制:
   一個分割槽表只能有1024個分割槽
   如果分割槽欄位中有主鍵或者唯一索引的列,那麼所有主鍵列和唯一索引列都必須包含進來。
   利用分割槽表來避免某些特殊的瓶頸,例如Innodb的單個索引的互斥訪問ext3檔案系統的inode鎖競爭等。
   分割槽表無法使用外來鍵約束。
   
分割槽表的原理
   從儲存引擎的角度來看,底層表和一個普通的表沒有任何不同,儲存引擎也無需知道這是一個普通表還是一個分割槽表的一部分。
   
select查詢
   分割槽表的型別
   mysql支援多種分割槽表。分割槽表示式可以是列,也可以是包含列的表示式。例如,下表就可以將每一年的銷售額存放在不同的分割槽裡。
   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還支援鍵值,雜湊和列表分割槽。
   系統透過子分割槽可降低索引的互斥訪問的競爭。最近一年的分割槽的資料會被非常頻繁地訪問,這會導致大量的互斥鎖的競爭。使用雜湊子分割槽可以
將資料切成多個小片,大大降低互斥量的競爭問題。
   

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29033984/viewspace-2148458/,如需轉載,請註明出處,否則將追究法律責任。

相關文章