Mysql数据库优化-分区

2017-09-06  本文已影响0人  丶Assassin丨

四种分区算法 hash  key    list  range

依据业务逻辑分区:range,list

平均分配:hash,key

取余的算法(hash,key),增加分区,减少分区,数据不会收到影响,仅仅是重新分配数据到不同的分区.

条件的分区,增加没关系,删除分区,导致分区内的数据一同消失,类似删除表!

Demo

创建表时,需要指定当前表的分区,及其对于的分区算法:

最常用的分区逻辑,使用主键将数据平均分配到10个区中.hash算法就可以做到!

Drop table if exists‘zhangc’;

Create table‘zhangc’

(

Id  int  auto_increment,

Name varchar(32),

Birthday date,

Intro text,

Primary key(id)

)charset=utf8

利用id字段,对10取余(hash是取余算法)

Partition  by  hash(id)Partitions 10;

插入或其他的操作,常规操作即可,不需要有语法的改变,记录就被依据算法存储在某个区内

hash,使用给定的一个整数,对分区数量取余分区,hash(分区表达式),应该整数.

key,使用任意字段,对分区数据量取余分区,不要求是整数字段。MySQL会依据给定的字段的值,自己计算整数,去取余!

☆注意:分区字段要加入到primary key中.

range, 利用给定的范围条件,进行分区

list, 利用给定的列表值,进行条件分区

管理分区

取余(hash,key),增减分区数量即可.

增加分区数量

add partition partitions N

增加N个分区.

Alter  table‘zhangc’add partition partitions 5;

减少数量(合并分区)

coalesce partition N

减少N个分区.

Alter  table‘zhangc’coalescepartition 5;

上一篇 下一篇

猜你喜欢

热点阅读