承接国内外服务器租用托管、定制开发、网站代运营、网站seo优化托管接单、网站代更新,新老站点皆可!!咨询QQ:3787320601

SQL开发知识:MySQL分区表管理命令汇总

管理员 2023-08-14 08:43:49 互联网圈 0 ℃ 0 评论 7666字 收藏

SQL开发知识:MySQL分区表管理命令汇总

前言:

分区是一种表的设计模式,正确的分区可以极大地提升数据库的查询效力,完成更高质量的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

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

文章来源:丸子建站

文章标题:SQL开发知识:MySQL分区表管理命令汇总

https://www.wanzijz.com/view/71395.html

X

截屏,微信识别二维码

微信号:weimawl

(点击微信号复制,添加好友)

打开微信