美文网首页
mysql分区

mysql分区

作者: fdsun | 来源:发表于2020-11-26 23:32 被阅读0次

参考链接:
https://www.jianshu.com/p/1cdd3e3c5b3c
http://mysql.taobao.org/monthly/2017/11/09/
https://www.cnblogs.com/duanxz/p/3825155.html
https://www.cnblogs.com/huchong/p/10231719.html
https://blog.csdn.net/orangleliu/article/details/57088338


表分区实践

1、建立表分区(根据 字符串 分区)

CREATE TABLE employees3 (
    id INT NOT NULL,
    fname VARCHAR(30),
    lname VARCHAR(30),
    hired DATE NOT NULL DEFAULT '1970-01-01',
    separated DATE NOT NULL DEFAULT '9999-12-31',
    job_code INT NOT NULL,
    store_id INT NOT NULL
) PARTITION BY LIST COLUMNS(fname)(
    PARTITION pNorth VALUES IN ('1'),
    PARTITION pEast VALUES IN ('2')
)

2、 添加表分区

alter table employees3 add partition (partition pWest values in ('3'))

# ALTER TABLE sale_data ADD PARTITION (PARTITION s20100402 VALUES LESS THAN (20100403));

3、删除表分区

alter table employees3 drop partition pWest;

# ALTER TABLE sale_data DROP PARTITION s20100406 ;

4、正常使用

insert into employees3 values(1,'2','xxx','1995-01-01','1995-01-01',1,1)

5、查看分区

SELECT PARTITION_NAME,TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_NAME = 'sale_data';

6、将已有表改为分区表

ALTER TABLE employees3 PARTITION BY LIST COLUMNS(fname)(
PARTITION pNorth VALUES IN ('1'),
PARTITION pEast VALUES IN ('2')
)

// 方式二
1、先创建分区表
2、导出原表数据
(mysqldump -u dbname -p --no-create-info dbname apdailysts  > apdailysts.sql)
3、新表名改为原表名
4、导入数据,建立普通索引

插入表数据

存储过程 example (用于插入表数据)

1、创建存储过程

DELIMITER &&
CREATE PROCEDURE load_part_tab()
  begin
  declare v int default 0;
  while v < 800
  do
  insert into part_tab
  values (v,'testingpartitions',adddate('1995-01-01',(rand(v)*36520) mod 3652));
  set v = v + 1;
  end while;
end &&
DELIMITER ;

2、调用存储过程

call load_part_tab();

3、复制表数据

insert into no_part_tab select * from part_tab;

查看表分区信息

  • 1 查看创建分区表语句
show create table `part_tab`;
  • 2 查看表是不是分区表
show table status like '%part_tab%';

// Ceate_option = partitioned  表示是分区表
  • 3 表分区详细信息

查看information_schema.partitions表。

SELECT * FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_NAME = 'part_tab'

查看关键字段

SELECT PARTITION_NAME,PARTITION_DESCRIPTION,TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_NAME = 'employees2'
  • 4 表分区使用信息
explain partitions select * from `part_tab`;

性能对比

1 耗时对比(查询即可)

select * from `part_tab`;
select * from `no_part_tab`;

2 扫描次数对比

explain PARTITIONS select * from part_tab where c3 > date '1995-01-01'and c3 < date '1995-12-31';

explain PARTITIONS select * from no_part_tab where c3 > date '1995-01-01'and c3 < date '1995-12-31';

// rows 字段具有对比意义

补充

1、合并分区

ALTER TABLE tblist REORGANIZE PARTITION  a,b INTO (PARTITION m VALUES IN (1,5,6,2,7,8));
// 将分区a,b合并为分区m
// 注意:同RANGE分区一样,只能合并相邻的几个分区,不能跨分区合并。例如不能合并a,c两个分区,只能通过合并a,b,c

2、 拆分分区

ALTER TABLE tblist REORGANIZE PARTITION  a,b,c INTO 
(PARTITION n VALUES IN (1,5,6,3,9,10),
PARTITION m VALUES IN (2,7,8));

ALTER TABLE tblist REORGANIZE PARTITION  n INTO 
    ( PARTITION a VALUES IN (1,5,6),
    PARTITION b VALUES IN (3,9,10));

3、删除分区

ALTER TABLE tblist DROP PARTITION e;
// 注意:删除分区同时会将分区中的数据删除,同时枚举的list值也被删除,后面无法往表中插入该值的数据。

4、移除表的分区

ALTER TABLE tablename
REMOVE PARTITIONING ;

// 注意:使用remove移除分区是仅仅移除分区的定义,并不会删除数据和drop PARTITION不一样,后者会连同数据一起删除。

相关文章

  • MySQL分区表

    确认mysql是否支持分区表 mysql分区表的特点 创建mysql数据表为hash表 常用mysql分区的类型 ...

  • mysql分库分表

    课程内容 mysql分区 水平切分 垂直切分 1. mysql分区 1.1 什么是分区? mysql数据库中的数据...

  • mysql表分区

    mysql表分区主要分为RANGE分区,LIST分区,HASH分区,LINEAR HASH分区,KEY分区 目前,...

  • 对MySQL交换分区的实践

    前言 在介绍交换分区之前,我们先了解一下 mysql 分区。 数据库的分区有两种:水平分区和垂直分区。而MySQL...

  • Mysql分区

    介绍 Mysql5.5只支持水平分区,还不支持垂直分区。MySQL分区不能与使用 MERGE,CSV或 FEDER...

  • mysql分区

    mysql分区 Mysql支持水平分区,并不支持垂直分区;水平分区:指将同一表中不同行的记录分配到不同的物理文件中...

  • Mysql分区分析

    关于什么是分区和分表,可以先参考下面前两篇文章。 MySQL 分库分表与分区的区别和思考搞懂MySQL分区MySQ...

  • MySQL分区表介绍

    最近一直在复习MySQL分区表相关的知识,就简单整理下读书笔记。下面我们先来对mysql分区简单介绍下。 分区的概...

  • MySQL的分区、分表、集群、优化

    MySQL的分区 MySQL分区表是在数据库层面,MySQL自己实现的分表功能,在很大程度上简化了分表的难度。物理...

  • MySQL分区-Range分区

    在阐述MySQL分区时,我们需要先来了解一下分区的概念是什么,它的优势在哪里,是如何区分类型的。 1.分区概述 在...

网友评论

      本文标题:mysql分区

      本文链接:https://www.haomeiwen.com/subject/wcdtwktx.html