MySQL表分割槽

2022-01-23 03:23:40 字數 2452 閱讀 9937

mysql>

create

table range_subarea(id int, name char(10

)) -

> partition by

range(id) (

-> partition p1 values less than (3

), -

> partition p2 values less than (5

), -

> partition p3 values less than (7

), -

> partition p4 values less than (9

), -

> partition p5 values less than (11

), -

> partition p6 values less than maxvalue);

插入資料

mysql>

insert

into range_subarea values(1, '

aaa'),(2, '

bbb'),(3, '

ccc'),(4, '

ddd'),(5, '

eee'),(6, '

fff'),(7, '

ggg'),(8, '

hhh'),(9, '

iii'),(10, '

jjj'

); -

>

insert

into range_subarea select

*from range_subarea; #反覆執行,讓資料上千萬

我們比較一下擁有同樣資料的兩張表,一張帶分割槽一張不帶分割槽,查詢速度的比較

對比結果顯而易見,有分割槽的表查詢速度比沒有分割槽的表查詢速度快很多。

我們再來看看sql的執行計畫:

注:我的版本是5.6,在mysql5.7版以下的版本都需要加partitions才能看見分割槽資訊

這裡可以看出我的執行計畫的分割槽是p3。

mysql>

create

table list_subarea(id int, name char(10

)) -

> partition by

list(id)

-> (partition p1 values

in (1,3,5,7,9

), -

> partition p2 values

in (2,4,6,8,10));

list分割槽是指定id進行分割槽的。

普通hash

mysql>

create

table hash_subarea(id int, name char(10

)) -

> partition by hash(id) partitions 10;

普通hash是就根據id的取模的方式分配資料的。

線性hash

mysql>

create

table linear_hash_subarea(id int, name char(10

)) -

> partition by linear hash(id) partitions 10;

可擴充套件的hash。

mysql>

create

table key_subarea(id int, name char(10))

-> partition by linear key(id) partitions 10;

mysql>

select

partition_name part,

->

partition_expression expr,

->

partition_description descr,

->

table_rows

->

from

information_schema.partitions

->

where table_schema =

schema

()and table_name=

'table_name

';

mysql表分割槽全文搜尋 Mysql表分割槽

什麼時候使用分割槽 海量資料 資料表索引大於伺服器有效記憶體 分割槽的限制 大部分只能對資料表的整型列進行分割槽,或者資料列可以通過分割槽函式轉化成整型列 其中columns支援 integer string date datetime型別 最大分割槽數目不能超過1024 如果含有唯一索引或者主鍵,...

mysql表分割槽

表分割槽的優點 查詢優化 缺點 除了資料庫管理方面複雜了點,其它的還沒有發現 只有5.1及之後的版本才支付分割槽,同時5.1中分割槽的一些維護的工具還不完善 mysql目前四種分割槽 1range 根據某個列的某種運算進行分割槽,分割槽的標誌都是該列的某種運算後的連續區間 create table ...

mysql 表分割槽

修改表的主鍵 alter table tb channel pv drop primary key,add primary key id channel 測試新增分割槽和刪除分割槽 新增刪除range分割槽 1 建立乙個分割槽 create table titles emp no int not n...