在oracle中hash分割槽數建議是2的 冪,因為如果不是2的冪數會導致資料量的分布不均勻,下面測試下mysql的情況:
create
table
`tb1` (
`id`
int(11) default
null,
`userid`
int(11) default
null,
`name`
varchar(50) default
null
) engine=innodb default charset=utf8
/*!50100 partition by hash (userid)
partitions 4 */
下面是分割槽數為4的情況
mysql> select partition_name, table_rows from information_schema.partitions where table_name=』tb1』;
+—————-+————+
| partition_name | table_rows |
+—————-+————+
| p0 | 3548 |
| p1 | 3506 |
| p2 | 3608 |
| p3 | 3557 |
+—————-+————+
4 rows in set (0.00 sec)
看到在有四個分割槽的情況下,分布的還是很均衡的,下面是分割槽數是5的情況
create
table
`tb1` (
`id`
int(11) default
null,
`userid`
int(11) default
null,
`name`
varchar(50) default
null
) engine=innodb default charset=utf8
/*!50100 partition by hash (userid)
partitions 5 */
mysql> select partition_name, table_rows from information_schema.partitions where table_name=』tb1』;
+—————-+————+
| partition_name | table_rows |
+—————-+————+
| p0 | 3089 |
| p1 | 3128 |
| p2 | 3087 |
| p3 | 3165 |
| p4 | 3118 |
+—————-+————+
5 rows in set (0.00 sec)
看到在分割槽數是5的情況下,資料的分布也是比較均衡的,沒有出現明顯的差別
MySQL分割槽表 hash分割槽
雜湊分割槽最主要的用法是用來保證資料的平均分布。使用範圍分割槽和列表分割槽時必須顯示地定義分割槽值或者值列表 但是使用雜湊分割槽時,我們只需要對列值或者基於列值的表示式進行雜湊運算,就可以進行分割槽了。在進行雜湊分割槽是,我們需要在create table語句後加上partition by hash...
hive 分割槽表 Hive的DDL分割槽表建立
1.單分割槽表 建立表t user,指定分割槽hive xiaoliu create table t user id int,name string partitioned by country string row format delimited fields terminated by xia...
mysql分割槽表 MySQL分割槽表的正確使用方法
mysql分割槽表概述 我們經常遇到一張表裡面儲存了上億甚至過十億的記錄,這些表裡面儲存了大量的歷史記錄。對於這些歷史資料的清理是乙個非常頭疼事情,由於所有的資料都乙個普通的表裡。所以只能是啟用乙個或多個帶where條件的delete語句去刪除 一般where條件是時間 這對資料庫的造成了很大壓力。...