MySQL分区表管理命令汇总


Posted in MySQL onMarch 21, 2022

前言:

分区是一种表的设计模式,正确的分区可以极大地提升数据库的查询效率,完成更高质量的SQL编程。但是如果错误地使用分区,那么分区可能带来毁灭性的的结果。

分区功能并不是在存储引擎层完成的,因此不只有InnoDB存储引擎支持分区,常见的存储引擎MyISAM、NDB等都支持分区。但是并不是所有的存储引擎都支持,如CSV、FEDORATED、MERGE等就不支持分区。在使用此分区功能前,应该对选择的存储引擎对分区的支持有所了解。

MySQL数据库在5.1版本时添加了对分区的支持,分区的过程是将一个表或索引分解为多个更小、更可管理的部分。就访问数据库的应用而言,从逻辑上讲,只有一个表或一个索引,但是在物理上这个表或索引可能由数十个物理分区组成。每个分区都是独立的对象,可以独自处理,也可以作为一个更大对象的一部分进行处理。

MySQL数据库支持的分区类型为水平分区(指将同一个表中不同行的记录分配到不同的物理文件中),并不支持垂直分区(指将同一表中不同列的记录分配到不同的物理文件中)。此外,MySQL数据库的分区是局部分区索引,一个分区中既存放了数据又存放了索引。而全局分区是指,数据存放在各个分区中,但是所有数据的索引放在一个对象中。目前,MySQL数据库还不支持全局分区,接下来我们一起来看看分区表的管理吧!

一、ANALYZE和CHECK PARTITION 分析和检查分区

ANALYZE分析分区:

ALTER TABLE t_test_task_result ANALYZE PARTITION p20220218,p20220219;
+------------------------------------------+---------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+------------------------------------------+---------+----------+----------+
| testdb.t_test_task_result | analyze | status | OK |
+------------------------------------------+---------+----------+----------+
1 row in set (0.01 sec)

CHECK 检查分区是否存在错误:

 ALTER TABLE t_test_task_result check PARTITION p20220218,p20220219;
+------------------------------------------+-------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+------------------------------------------+-------+----------+----------+
| testdb.t_test_task_result | check | status | OK |
+------------------------------------------+-------+----------+----------+
1 row in set (0.03 sec)

二、REPAIR 修复分区

ALTER TABLE t_test_task_result repair PARTITION p20220218,p20220219;
+------------------------------------------+--------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+------------------------------------------+--------+----------+----------+
| testdb.t_test_task_result | repair | status | OK |
+------------------------------------------+--------+----------+----------+

三、OPTIMIZE 分区

该命令主要是用于回收空闲空间和分区的碎片整理。对分区执行该命令,相当于依次对分区执行 CHECK PARTITION, ANALYZE PARTITION,REPAIR PARTITION命令。

会锁表:

ALTER TABLE t_test_task_result OPTIMIZE PARTITION p20220218,p20220219;
+------------------------------------------+----------+----------+---------------------------------------------------------------------------------------------+
| Table | Op | Msg_type | Msg_text |
+------------------------------------------+----------+----------+---------------------------------------------------------------------------------------------+
| testdb.t_test_task_result | optimize | note | Table does not support optimize on partitions. All partitions will be rebuilt and analyzed. |
| testdb.t_test_task_result | optimize | status | OK |
+------------------------------------------+----------+----------+---------------------------------------------------------------------------------------------+
2 rows in set (1 min 35.75 sec)

四、REBUILD分区

重建分区,它相当于先删除分区中的数据,然后重新插入。这个主要是用于分区的碎片整理。这个操作会操作锁表

ALTER TABLE t_test_task_result REBUILD PARTITION p20220218,p20220219;
Query OK, 0 rows affected (0.16 sec)
Records: 0 Duplicates: 0 Warnings: 0

ALTER TABLE t_test_task_result REBUILD PARTITION p20220225,p20220226,p20220227,p20220228;
Query OK, 0 rows affected (2 min 9.38 sec)
Records: 0 Duplicates: 0 Warnings: 0

五、新增和删除分区

添加分区测试: ADD PARTITION(新增分区)

ALTER TABLE t_test_task_result ADD PARTITION (PARTITION p20220401 VALUES LESS THAN (TO_DAYS('2022-04-01')));

ALTER TABLE t_test_task_result ADD PARTITION (PARTITION p20220401 VALUES LESS THAN (TO_DAYS('2022-04-01')));
Query OK, 0 rows affected (0.07 sec)
Records: 0 Duplicates: 0 Warnings: 0

删除分区测试:DROP PARTITION(删除分区)

ALTER TABLE t_test_task_result DROP PARTITION p20220218;
##提示删除分区是物理删除,操作非常快
 ALTER TABLE t_test_task_result DROP PARTITION p20220218;
Query OK, 0 rows affected (0.04 sec)
Records: 0 Duplicates: 0 Warnings: 0
root@testdb 15:02: [testdb]> ALTER TABLE t_test_task_result DROP PARTITION p20220219,p20220220;
Query OK, 0 rows affected (0.04 sec)
Records: 0 Duplicates: 0 Warnings: 0

到此这篇关于MySQL分区表管理命令汇总 的文章就介绍到这了,更多相关MySQL分区表管理命令内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
mysql优化
Apr 06 MySQL
MySQL命令行操作时的编码问题详解
Apr 14 MySQL
解决MySQL存储时间出现不一致的问题
Apr 28 MySQL
简单了解 MySQL 中相关的锁
May 25 MySQL
MySQL中distinct与group by之间的性能进行比较
May 26 MySQL
MySQL系列之十四 MySQL的高可用实现
Jul 02 MySQL
记一次Mysql不走日期字段索引的原因小结
Oct 24 MySQL
mysql主从复制的实现步骤
Oct 24 MySQL
聊聊mysql都有哪几种分区方式
Apr 13 MySQL
mysql 排序失效
May 20 MySQL
mysql查看表结构的三种方法总结
Jul 07 MySQL
MySQL索引失效场景及解决方案
Jul 23 MySQL
Linux系统下MySQL配置主从分离的步骤
如何创建一个创建MySQL数据库中的datetime类型
Mar 21 #MySQL
mysql 获取时间方式
Mar 20 #MySQL
mysql 生成连续日期及变量赋值
Mar 20 #MySQL
MySQL派生表联表查询实战过程
MySQL学习之基础命令实操总结
Mar 19 #MySQL
MySQL学习之基础操作总结
Mar 19 #MySQL
You might like
又一个php 分页类实现代码
2009/12/03 PHP
如何打开php的gd2库
2017/02/09 PHP
Yii2.0框架模型添加/修改/删除数据操作示例
2019/07/18 PHP
PHP Primary script unknown 解决方法总结
2019/08/22 PHP
js模拟实现Array的sort方法
2007/12/11 Javascript
效率高的Javscript字符串替换函数的benchmark
2008/08/02 Javascript
jquery 问答知识整理
2010/02/11 Javascript
基于jQuery选择器的整理集合
2013/04/26 Javascript
js加入收藏以及使用Jquery更改透明度
2014/01/26 Javascript
sliderToggle在写jquery的计时器setTimeouter中不生效
2014/05/26 Javascript
JavaScript中变量声明有var和没var的区别示例介绍
2014/09/15 Javascript
Angularjs实现多个页面共享数据的方式
2016/03/29 Javascript
react-router实现跳转传值的方法示例
2017/05/27 Javascript
react-native-fs实现文件下载、文本存储的示例代码
2017/09/22 Javascript
基于three.js编写的一个项目类示例代码
2018/01/05 Javascript
angularJS开发注意事项
2018/05/26 Javascript
Vue CLI3 如何支持less的方法示例
2018/08/29 Javascript
vue2.0+vue-router构建一个简单的列表页的示例代码
2019/02/13 Javascript
taro 实现购物车逻辑的实例代码
2020/06/05 Javascript
Python实现删除Android工程中的冗余字符串
2015/01/19 Python
Linux下使用python自动修改本机网关代码分享
2015/05/21 Python
python让函数不返回结果的方法
2020/06/22 Python
CSS3的文字阴影—text-shadow的使用方法
2012/12/25 HTML / CSS
突袭HTML5之Javascript API扩展5—其他扩展(应用缓存/服务端消息/桌面通知)
2013/01/31 HTML / CSS
html5教程实现Photoshop渐变色效果
2013/12/04 HTML / CSS
New delete 与malloc free 的联系与区别
2013/02/04 面试题
《水乡歌》教学反思
2014/04/24 职场文书
交通事故委托书范本精选
2014/10/04 职场文书
房屋产权证明书
2014/10/15 职场文书
应急管理工作总结2015
2015/05/04 职场文书
发票退票证明
2015/06/24 职场文书
新员工入职感想
2015/08/07 职场文书
图解上海144收音机
2021/04/22 无线电
python实现图片批量压缩
2021/04/24 Python
手把手教你怎么用Python实现zip文件密码的破解
2021/05/27 Python
Redis基本数据类型Set常用操作命令
2022/06/01 Redis