mysql truncate分区表_MySQL分区表的管理~1
一、如何管理RANGE和LIST分区
以该分区表为例
CREATE TABLEmembers (
idINT,
fnameVARCHAR(25),
lnameVARCHAR(25),
dob DATE
)
PARTITIONBY RANGE( YEAR(dob) ) (
PARTITION p0VALUES LESS THAN (1970),
PARTITION p1VALUES LESS THAN (1980),
PARTITION p2VALUES LESS THAN (1990)
);
1. 删除分区
ALTER TABLE members DROP PARTITION p1;
注意:如果删掉了某分区,则该分区内的数据将全部丢失,不仅如此,在用show create table members\G;命令查看该表的创建语句时将无法看到被删除分区的任何信息。
对于RANGE分区来说,如果删除了p1分区,在插入数据时,如果日期在1970到1980区间之内,则该数据将会被分配到下一个分区,即p2,。
对于LIST分区,如果删除了某一分区,在插入数据时,如果数据属于这一分区,则插入会报错。
如果只是删除数据而不删除该分区的信息,可使用truncate命令
ALTER TABLE members TRUNCATE PARTITION p1;
2. 添加分区
ALTER TABLE members ADD PARTITION (PARTITION p3 VALUES LESS THAN (2000));
注意:使用ADD命令来添加分区,只能在分区列表的末尾添加,具体到本例中,只能添加到1990年以后。
当然,在实际生产环境中,这样的局限性太大,譬如我想将p0分区之前添加一个分区,区间为1960,或者将p1之间再添加一个1975的分区,这时候,用ADD将无法满足此类需求,可使用ALTER TABLE ... REORGANIZE PARTITION命令。
譬如:
ALTER TABLE members REORGANIZE PARTITION p0 INTO(
PARTITION s0VALUES LESS THAN (1960),
PARTITION s1VALUES LESS THAN (1970)
);
REORGANIZE命令其实是相当灵活的,不仅能拆分分区,还可以用来合并分区,譬如:
ALTER TABLE members REORGANIZE PARTITION p0,p1,p2,p3 INTO(
PARTITION m0VALUES LESS THAN (1980),
PARTITION m1VALUES LESS THAN (2000)
);
注意:
1> 不能使用REORGANIZE PARTITION命令修改表的分区类型,只能通过ALTER TABLE ... PARTITION BY ....语句,譬如:
ALTER TABLEmembers
PARTITIONBY HASH( YEAR(dob) )
PARTITIONS8;
2> REORGANIZE PARTITION语法如下:
ALTER TABLEtbl_name
REORGANIZE PARTITION partition_listINTO (partition_definitions);
partition_definitions中分区的范围必须要涵盖partition_list中的分区范围。
二、如何管理HASH和KEY分区
以该分区表为例
CREATE TABLEclients (
idINT,
fnameVARCHAR(30),
lnameVARCHAR(30),
signed DATE
)
PARTITIONBY HASH( MONTH(signed) )
PARTITIONS12;
对于HASH分区和KEY分区,并不支持上述RANGE和LIST分区的语法,譬如DROP,TRUNCATE,REORGANIZE分区。
事实上,它只支持一种类型的“分区调整”。
ALTER TABLE clients COALESCE PARTITION 4;
该命令的作用在于将clients表的分区剪裁4个,从12个剪裁到8个。
ALTER TABLE clients ADD PARTITION PARTITIONS 6;
同样,该命令为clients表增加了6个分区,从12个到18个。
mysql truncate分区表_MySQL分区表的管理~1相关推荐
- mysql 字符串分区_Mysql分区表的原理和优缺点
分区表的原理 分区表是由多个相关的底层表实现,这些底层表也是由句柄对象表示,所以我们也可以直接访问各个分区,存储引擎管理分区的各个底层表和管理普通表一样(所有的底层表都必须使用相同的存储引擎),分区表 ...
- mysql 分区 目的_MySQL分区表最佳实践
前言: 分区是一种表的设计模式,通俗地讲表分区是将一大表,根据条件分割成若干个小表.但是对于应用程序来讲,分区的表和没有分区的表是一样的.换句话来讲,分区对于应用是透明的,只是数据库对于数据的重新整理 ...
- MySQL分区总结_mysql分区表小结2
更改分区类型 如果想更改分区类型,只需调用alter table partition by即可,比oracle要简便: --将range分区改为key分区 CREATE TABLE trb3 (id ...
- mysql数据库局限性_Mysql分区表局限性总结
Mysql5.1已经发行很久了,本文根据官方文档的翻译和自己的一些测试,对Mysql分区表的局限性做了一些总结,因为个人能力以及测试环境的原因,有可能有错误的地方,还请大家看到能及时指出,当然有兴趣的 ...
- mysql 创建分区表_Mysql分区表及自动创建分区Partition
Range分区表建表语句如下,其中分区键必须和id构成主键和唯一键 CREATE TABLE `test1` ( `id` char(32) COLLATE utf8mb4_unicode_ci NO ...
- 如何创建mysql分区表_mysql分区表创建思路
mysql分区表有range,list,hash,key,其中每个分区又有特殊的类型.对于RANGE分区,有RANGE COLUMNS分区.对于LIST分区,有LIST COLUMNS分区.对于HAS ...
- mysql普通标转分区表_MySQL分区表到普通表互转
由于最近总有人抱怨,数据迁移后执行SQL变慢,经过查看原来是分区导致的问题.原分区根据按月设置RANGE分区, 看到这图的时候也许有人就会发现问题....... 业务查询SQL: 从SQL上看 执行计 ...
- mysql8分区表_MySQL 分区表
MySQL分区就是将一个表分解为多个更小的表.从逻辑上讲,只有一个表或一个索引,但在物理上这个表或者索引可能由多个物理分区组成.每个分区在物理上都是独立的.MySQL数据库分区类型:Range分区:行 ...
- mysql5.7 分区表_mysql分区表学习
一:怎样对已有数据的表进行表分区 可以直接alter table进行修改. 如: USE dba; ALTER TABLE t3 PARTITION BY RANGE(id) ( PARTITION ...
- mysql pma用户_MYSQL用户权限管理学习笔记
MYSQL用户管理 1.权限表 MYSQL是一个多用户的数据库,MYSQL的用户可以分为两大类: (1) 超级管理员用户(root),拥有全部权限 (2) 普通用户,由root ...
最新文章
- JAVA高级特性--自动拆箱-装箱,枚举类型
- 三维感知,这些干货足够了!(自动驾驶/三维重建/SLAM/点云/标定/深度估计/3D检测)...
- 【Android 界面效果22】Android的Tab与TabHost
- java反射克隆对象_Java反射 - 2(对象复制,父类域,内省)
- iOS开发常用的资源和资料
- openshift使用_OpenShift DIY:使用Gradle构建Spring Boot / Undertow应用程序
- windows环境下memcache服务器使用经验
- 接收请求参数及数据回显 2021-04-26
- java 序列化快捷键_IntelliJ IDEA生成 Serializable序列化UID的快捷键
- 【转】 Apache分析脚本
- Oracle数据库REDO损坏ora-00333修复手札
- Atitit.故障排除系列-----apache 不能启动的排除
- hudson--插件管理
- VSCode 花式玩法(摸鱼)收藏一下 !
- java jshell_java9系列(一)安装及jshell使用
- android中jni的调用过程,Android 调用jni的过程简述
- 修改Google浏览器默认打开是金山毒霸网址
- 出彩的PPT封面如何设置?这些例子建议收藏
- 【学习笔记】多线程进阶JUC
- EZ-USB FX2 LP CY7C68013A 开发指南(1)--基本概念