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 InnoDB ReplicaSet(副本集)简单介绍
Apr 24 MySQL
SQL注入的实现以及防范示例详解
Jun 02 MySQL
MySQL的安装与配置详细教程
Jun 26 MySQL
MySQL系列之十三 MySQL的复制
Jul 02 MySQL
MySQL系列之一 MariaDB-server安装
Jul 02 MySQL
MySQL里面的子查询的基本使用
Aug 02 MySQL
深入解析MySQL索引数据结构
Oct 16 MySQL
Mysql数据库手动及定时备份步骤
Nov 07 MySQL
MySQL 服务和数据库管理
Nov 11 MySQL
mysql 生成连续日期及变量赋值
Mar 20 MySQL
MySQL数据库如何使用Shell进行连接
Apr 12 MySQL
Mysql中的触发器定义及语法介绍
Jun 25 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下载excel无法打开的解决方法
2013/12/24 PHP
php实例分享之二维数组排序
2014/05/15 PHP
php微信开发之音乐回复功能
2018/06/14 PHP
在线编辑器的实现原理(兼容IE和FireFox)
2007/03/09 Javascript
不使用中间变量,交换int型的 a, b两个变量的值。
2010/10/29 Javascript
JQuery中如何传递参数如click(),change()等具体实现
2013/04/28 Javascript
js实现的常用的左侧导航效果
2013/10/17 Javascript
JS+CSS实现Li列表隔行换色效果的方法
2015/02/16 Javascript
JavaScript基础篇(6)之函数表达式闭包
2015/12/11 Javascript
jQuery遍历DOM元素与节点方法详解
2016/04/14 Javascript
javascript实现右下角广告框效果
2017/02/01 Javascript
使用Math.max,Math.min获取数组中的最值实例
2017/04/25 Javascript
微信小程序实现多个按钮的颜色状态转换
2019/02/15 Javascript
微信小程序开发之左右分栏效果的实例代码
2019/05/20 Javascript
electron-vue开发环境内存泄漏问题汇总
2019/10/10 Javascript
Layui实现主窗口和Iframe层参数传递
2019/11/14 Javascript
js实现九宫格布局效果
2020/05/28 Javascript
基于小程序请求接口wx.request封装的类axios请求
2020/07/02 Javascript
在react项目中使用antd的form组件,动态设置input框的值
2020/10/24 Javascript
[02:35]DOTA2超级联赛专访XB 难忘一年九冠称王
2013/06/20 DOTA
python操作excel让工作自动化
2019/08/09 Python
解决使用export_graphviz可视化树报错的问题
2019/08/09 Python
Python 函数绘图及函数图像微分与积分
2019/11/20 Python
python GUI库图形界面开发之PyQt5动态加载QSS样式文件
2020/02/25 Python
Python urlencode和unquote函数使用实例解析
2020/03/31 Python
python中urllib.request和requests的使用及区别详解
2020/05/05 Python
keras-siamese用自己的数据集实现详解
2020/06/10 Python
美国精品家居用品网站:US-Mattress
2016/08/24 全球购物
kmart凯马特官网:美国最大的打折零售商和全球最大的批发商之一
2016/11/17 全球购物
如何让Java程序执行效率更高
2014/06/25 面试题
外国语学院毕业生自荐信
2013/10/28 职场文书
中学生校园广播稿
2014/01/16 职场文书
员工表扬信怎么写
2015/05/05 职场文书
工作后的感想
2015/08/07 职场文书
Python3 如何开启自带http服务
2021/05/18 Python
修改MySQL的默认密码的四种小方法
2021/05/26 MySQL