mysql分区实例(MyISAM引擎有效)

1、RANGE分区

a.创建表

DROP TABLE IF EXISTS `admin_log`;
CREATE TABLE `admin_log` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` CHAR(20) NOT NULL DEFAULT '' COMMENT '名字',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 PARTITION BY RANGE (id) (
PARTITION p0 VALUES LESS THAN (5),
PARTITION p1 VALUES LESS THAN (10),
PARTITION p2 VALUES LESS THAN (15),
PARTITION p3 VALUES LESS THAN (20),
PARTITION p4 VALUES LESS THAN (25),
PARTITION p5 VALUES LESS THAN MAXVALUE
);

--注释:admin_log按id分区,p0区存放数据id<5,p1是5≤id<10,依次类推,id≥25的全部存放在p5中

b.新增数据同常表一致

INSERT INTO admin_log  (name) VALUES ('test1'),('test2'),('test3'),('test4'),('test5'),('test6'),('test7'),('test8'),('test9'),('test10'),('test11'),('test12'),('test13'),('test14'),('test15');

c.验证新增的数据是否对应存入分区

SELECT partition_name,partition_expression,partition_description,table_rows  FROM information_schema.PARTITIONS  WHERE table_schema = SCHEMA() AND table_name='admin_log';

d.删除分区

ALTER TABLE admin_log DROP PARTITION p0;

删除成功后,实例中id<5的数据都将被删除

2、HASH分区

a.创建表

DROP TABLE IF EXISTS `admin_log1`;
CREATE TABLE `admin_log1` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` CHAR(20) NOT NULL DEFAULT '' COMMENT '名字',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 PARTITION BY HASH (id) PARTITIONS 20 ;

--注释:id通过hash计算,分成20个区

b.新增数据同常表一致

INSERT INTO admin_log1  (name) VALUES ('test1'),('test2'),('test3'),('test4'),('test5'),('test6'),('test7'),('test8'),('test9'),('test10'),('test11'),('test12'),('test13'),('test14'),('test15');

c.验证新增的数据是否对应存入分区

SELECT partition_name,partition_expression,partition_description,table_rows  FROM information_schema.PARTITIONS  WHERE table_schema = SCHEMA() AND table_name='admin_log1';

d.删除分区(减去3个分区)

ALTER TABLE admin_log1 COALESCE PARTITION 3;

e.新增分区(增加4个分区)

ALTER TABLE admin_log1 add PARTITION partitions 4;

注:hash不能像range那样单个分区删除 只能使用减去或新增合并分区,在新增或减去时,数据会重新计算进行分区

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值