MySQL 表分割槽的幾種方法和注意

2021-09-08 01:13:31 字數 1014 閱讀 9627

分割槽方法1:hash分割槽

例子:create table thash(x int ,y int) partition by hash(x) partitions 4; 就這麼一句話表就分好區了。下一步我們把問題引深一點;

create table thash2(id int primary key,x int,y int) partition by hash(x) partitions 4; 

thash2 是沒有辦法建立的不是它的語法有**不對!是它不和規定。在有主鍵或unique的情況下分割槽列只能是它們的一部分

thash2 的主鍵是id 然而 x 不是主鍵的一部分,所以就不合規定啦。所以就不可以建立啦。別的深入的我就不多說了。下面我們看一下乙個

分割槽方法。

分割槽方法2:range分割槽

例子:create table trang(x int,y int ) partition by range(x) (partition p0 values less than(100),partition p1 values less than(200));

這裡有乙個地方我要說一下就是分割槽的兩個臨界值一定是要有括號的。不然算語法錯誤。

這樣分割槽的好處是在查詢時可以只鎖定分割槽。不需要鎖定表。你要不信我們來看一下它的執行計畫。

只鎖定乙個分割槽p0看到了吧。但是好事並不是一定會發生的。

1:比如你的語句寫成了select * from trange ; 這樣人家一定鎖的不只是乙個分割槽啊。

分割槽方法3:list分割槽

例子:create table tlist(x int ,y int) partition by list(x) (partition p0 values in (1,3,5,7),partition p1 values in (2,4,6,8));

mysql表切換引擎的幾種方法

alter table mysql alter table mytable engine falcon 這種語法適合所有引擎,但是轉換過程會耗費大量時間。mysql為此要執行乙個舊表到新錶的逐行複製。在這期間,轉換操作可能會占用伺服器的所有i o處理能力,並且在轉換時,源表要被讀加鎖。因此,在乙個繁...

Oracle刪除表的幾種方法

刪除表 記錄和結構 的語名delete truncate drop delete 刪除資料表裡記錄的語句 delete from表名 where 條件 注意 刪除記錄並不能釋放oracle裡被占用的資料塊表空間.它只把那些被刪除的資料塊標成unused.如果確實要刪除乙個大表裡的全部記錄,可以用 t...

Oracle刪除表的幾種方法

delete 刪除資料表裡記錄的語句 delete from表名 where 條件 注意 刪除記錄並不能釋放oracle裡被占用的資料塊表空間.它只把那些被刪除的資料塊標成unused.如果確實要刪除乙個大表裡的全部記錄,可以用 truncate 命令,它可以釋放占用的資料塊表空間 truncate...