mysql 添加分区_创建,增加,删除mysql表分区

1.测试添加分区和删除分区

###添加删除range分区

(1)创建一个分区:

CREATE TABLE titles (

emp_no      INT NOT NULL,

title       VARCHAR(50)     NOT NULL,

from_date   DATE            NOT NULL,

to_date     DATE,

KEY         (emp_no),

PRIMARY KEY (emp_no,title, from_date)

) partition by range columns(from_date)

(partition p01 values less than ('1985-12-31'),

partition p02 values less than ('1990-12-31'),

partition p03 values less than ('1995-12-31'),

partition p04 values less than ('2000-12-31'),

partition p05 values less than ('2005-12-31'),

partition p06 values less than ('2010-12-31'),

partition p07 values less than ('2015-12-31'),

partition p08 values less than ('2020-12-31'),

partition p09 values less than ('2025-12-31'),

partition p10 values less than ('2030-12-31')

);

导入数据

mysql> source titles.sql

(2)添加分区:

备注:不能超过p04的范围,严格递增每个分区,即最小不能小于前一个分区

下面新曾了两个分区n01和n02

alter table titles

reorganize partition p04 into(

partition n01 values less than('1997-12-31'),

partition n02 values less than('1998-12-31'),

partition p04 values less than('2000-12-31')

);

(3)删除分区:

删除分区即删除数据。

mysql> select count(*) from titles where from_date

+----------+

| count(*) |

+----------+

|    18238 |

+----------+

1 row in set (0.09 sec)

mysql> alter table titles drop partition p01;

Query OK, 0 rows affected (0.05 sec)

Records: 0  Duplicates: 0  Warnings: 0

mysql> select count(*) from titles where from_date

+----------+

| count(*) |

+----------+

|        0 |

+----------+

1 row in set (0.04 sec)

###添加删除list分区

(1)创建list分区

CREATE TABLE titles (

emp_no      INT NOT NULL,

title       VARCHAR(50)     NOT NULL,

from_date   DATE            NOT NULL,

to_date     DATE,

KEY         (emp_no),

PRIMARY KEY (emp_no,title, from_date)

) partition by list columns(title)

(

partition p0 values in ('Assistant Engineer'),

partition p1 values in ('Engineer'),

partition p2 values in ('Manager'),

partition p3 values in ('Senior Engineer'),

partition p4 values in ('Senior Staff'),

partition p5 values in ('Staff'),

partition p6 values in ('Technique Leader')

);

导入数据

titles.sql 是employees数据库导出的数据

mysql> source titles.sql

(2)添加分区

mysql> alter table titles add partition(partition p7 values in('CEO'));

Query OK, 0 rows affected (0.07 sec)

Records: 0  Duplicates: 0  Warnings: 0

(3)删除分区:

mysql> alter table titles drop partition p0;

Query OK, 0 rows affected (0.04 sec)

Records: 0  Duplicates: 0  Warnings: 0

###添加删除hash分区

(1)创建hash分区

CREATE TABLE titles (

emp_no      INT NOT NULL,

title       VARCHAR(50)     NOT NULL,

from_date   DATE            NOT NULL,

to_date     DATE,

KEY         (emp_no),

PRIMARY KEY (emp_no,title, from_date)

) partition by hash(emp_no)

partitions 4;

导入数据:

mysql> source titles.sql

(2)删除hash分区

4个分区减少到两个,4-2=2

mysql> alter table titles coalesce partition 2;

Query OK, 443308 rows affected (12.41 sec)

Records: 443308  Duplicates: 0  Warnings: 0

(3)添加hash分区

增加到5个,2+3=5

mysql> alter table titles add partition partitions 3;

Query OK, 443308 rows affected (11.54 sec)

Records: 443308  Duplicates: 0  Warnings: 0

###添加删除key分区

(1)创建key分区

CREATE TABLE titles (

emp_no      INT NOT NULL,

title       VARCHAR(50)     NOT NULL,

from_date   DATE            NOT NULL,

to_date     DATE,

KEY         (emp_no),

PRIMARY KEY (emp_no,title, from_date)

) partition by key(emp_no)

partitions 4;

导入数据

mysql> source titles.sql

(2)删除分区,同hash

mysql> alter table titles coalesce partition 2;

Query OK, 443308 rows affected (7.86 sec)

Records: 443308  Duplicates: 0  Warnings: 0

(3)添加分区,同hash

mysql> alter table titles add partition partitions 3;

Query OK, 443308 rows affected (6.17 sec)

Records: 443308  Duplicates: 0  Warnings: 0

MySQL表分区技术

MySQL表分区技术 MySQL有4种分区类型: 1.RANGE 分区 - 连续区间的分区 - 基于属于一个给定连续区间的列值,把多行分配给分区: 2.LIST 分区 - 离散区间的分区 - 类似于按 ...

Mysql表分区的选择与实践小结

在一些系统中有时某张表会出现百万或者千万的数据量,尽管其中使用了索引,查询速度也不一定会很快.这时候可能就需要通过分库,分表,分区来解决这些性能瓶颈. 一. 选择合适的解决方法 1. 分库分表. 分库 ...

python 多线程删除MySQL表

一.需求分析 在这篇博客中,链接如下: https://www.cnblogs.com/xiao987334176/p/9901692.html 已经 ...

php实例根据ID删除mysql表中的数据

在动态网站开发中,我们经常要根据ID删除表中的数据,例如用户删除帖子,就需要根据ID删除帖子.本文章向大家介绍php根据ID删除表中数据的实例,需要的朋友可以参考一下本文章的实例. php实例根据ID ...

Mysql 表分区和性能

以下内容节选自 mysql表分区: 分区功能并不是所有存储引擎都支持的,如CSV.MERGE等就不支持.mysql数据库支持的分区类型为水平分区( ...

MySQL 创建和删除数据表

创建MySQL数据表需要以下信息: 表名 表字段名 定义每个表字段 语法 以下为创建MySQL数据表的SQL通用语法: CREATE TABLE table_name (column_name col ...

MySQL 表分区详解MyiSam引擎和InnoDb 区别(实测)

一.什么是表分区通俗地讲表分区是将一大表,根据条件分割成若干个小表.mysql5.1开始支持数据表分区了.如:某用户表的记录超过了1000万条,那么就可以根据入库日期将表分区,也可以根据所在地将表分区 ...

Mysql表分区几种方式

自5.1开始对分区(Partition)有支持,一张表最多1024个分区 查询分区数据: SELECT * from table PARTITION(p0) = 水平分区(根据列属性按行分)= 举个简 ...

mysql表分区(摘自 MySQL表的四种分区类型)

一.什么是表分区通俗地讲表分区是将一大表,根据条件分割成若干个小表.mysql5.1开始支持数据表分区了. 如:某用户表的记录超过了600万条,那么就可以根据入库日期将表分区,也可以根据所在地将表分区 ...

随机推荐

opps kio

Unable to handle kernel NULL pointer dereference at virtual address 00000008pgd = c7090000, hw pgd = ...

<转>MySQL性能优化的最佳20+条经验

http://coolshell.cn/articles/1846.html 今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心 ...

Linux常用(持续更新)

1. scp ./bcec_computernode_check.sh  root@10.254.3.1:/tmp 2. # uname -a # cat /proc/version # cat /e ...

Global.asax使用1

Application_start: 1.第一个访问网站的用户会触发该方法.(针对访问的是asp.net应用程序的类,及ashx,aspx等才会触发) 2. 通常会在该方法里定义一些系统变量,如聊天室 ...

QT类型转换(九种转换)

1.char * 与 const char *的转换 char *ch1="hello11";const char *ch2="hello22";ch2 = c ...

u-boot-2016.07 README文档结构

Author:AP0904225版权声明:本文为博主原创文章,转载请标明出处. 阅读u-boot的README文档,可以获取很多有用的信息,例如从哪里可以获得帮助,帮助:u-boot版本命名规则,目录 ...

Python初学——多进程Multiprocessing

1.1 什么是 Multiprocessing 多线程在同一时间只能处理一个任务. 可把任务平均分配给每个核,而每个核具有自己的运算空间. 1.2 添加进程 Process 与线程类似,如下所示,但是 ...

selenium headlesschrome下设置最大窗口模式

做微博登录的时候,用selenium的chrome界面模式,可以用下面方式显示最大窗口: from selenium.webdriver.chrome.options import Options c ...

【bzoj4571 scoi2016】美味

题目描述 一家餐厅有 n 道菜,编号 1...n ,大家对第 i 道菜的评价值为 ai(1<=i<=n).有 m 位顾客,第 i 位顾客的期望值为 bi,而他的偏好值为 xi .因此,第 ...

反爬虫:利用ASP&period;NET MVC的Filter和缓存(入坑出坑)

背景介绍: 为了平衡社区成员的贡献和索取,一起帮引入了帮帮币.当用户积分(帮帮点)达到一定数额之后,就会“掉落”一定数量的“帮帮币”.为了增加趣味性,帮帮币“掉落”之后所有用户都可以“捡取”,谁先捡到 ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值