欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL分區(qū)表管理命令匯總

 更新時(shí)間:2022年03月21日 11:04:07   作者:運(yùn)維之美  
這篇文章主要分享了MySQL分區(qū)表管理命令匯總,分區(qū)是一種表的設(shè)計(jì)模式,正確的分區(qū)可以極大地提升數(shù)據(jù)庫(kù)的查詢效率,完成更高質(zhì)量的SQL編程。但是如果錯(cuò)誤地使用分區(qū),那么分區(qū)可能帶來(lái)毀滅性的的結(jié)果,下面我們就來(lái)看看分區(qū)表那些常用的管理命令,需要的朋友可以參考下

前言:

分區(qū)是一種表的設(shè)計(jì)模式,正確的分區(qū)可以極大地提升數(shù)據(jù)庫(kù)的查詢效率,完成更高質(zhì)量的SQL編程。但是如果錯(cuò)誤地使用分區(qū),那么分區(qū)可能帶來(lái)毀滅性的的結(jié)果。

分區(qū)功能并不是在存儲(chǔ)引擎層完成的,因此不只有InnoDB存儲(chǔ)引擎支持分區(qū),常見的存儲(chǔ)引擎MyISAM、NDB等都支持分區(qū)。但是并不是所有的存儲(chǔ)引擎都支持,如CSV、FEDORATED、MERGE等就不支持分區(qū)。在使用此分區(qū)功能前,應(yīng)該對(duì)選擇的存儲(chǔ)引擎對(duì)分區(qū)的支持有所了解。

MySQL數(shù)據(jù)庫(kù)在5.1版本時(shí)添加了對(duì)分區(qū)的支持,分區(qū)的過(guò)程是將一個(gè)表或索引分解為多個(gè)更小、更可管理的部分。就訪問(wèn)數(shù)據(jù)庫(kù)的應(yīng)用而言,從邏輯上講,只有一個(gè)表或一個(gè)索引,但是在物理上這個(gè)表或索引可能由數(shù)十個(gè)物理分區(qū)組成。每個(gè)分區(qū)都是獨(dú)立的對(duì)象,可以獨(dú)自處理,也可以作為一個(gè)更大對(duì)象的一部分進(jìn)行處理。

MySQL數(shù)據(jù)庫(kù)支持的分區(qū)類型為水平分區(qū)(指將同一個(gè)表中不同行的記錄分配到不同的物理文件中),并不支持垂直分區(qū)(指將同一表中不同列的記錄分配到不同的物理文件中)。此外,MySQL數(shù)據(jù)庫(kù)的分區(qū)是局部分區(qū)索引,一個(gè)分區(qū)中既存放了數(shù)據(jù)又存放了索引。而全局分區(qū)是指,數(shù)據(jù)存放在各個(gè)分區(qū)中,但是所有數(shù)據(jù)的索引放在一個(gè)對(duì)象中。目前,MySQL數(shù)據(jù)庫(kù)還不支持全局分區(qū),接下來(lái)我們一起來(lái)看看分區(qū)表的管理吧!

一、ANALYZE和CHECK PARTITION 分析和檢查分區(qū)

ANALYZE分析分區(qū):

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 檢查分區(qū)是否存在錯(cuò)誤:

?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 修復(fù)分區(qū)

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 分區(qū)

該命令主要是用于回收空閑空間和分區(qū)的碎片整理。對(duì)分區(qū)執(zhí)行該命令,相當(dāng)于依次對(duì)分區(qū)執(zhí)行 CHECK PARTITION, ANALYZE PARTITION,REPAIR PARTITION命令。

會(huì)鎖表:

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分區(qū)

重建分區(qū),它相當(dāng)于先刪除分區(qū)中的數(shù)據(jù),然后重新插入。這個(gè)主要是用于分區(qū)的碎片整理。這個(gè)操作會(huì)操作鎖表

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

五、新增和刪除分區(qū)

添加分區(qū)測(cè)試: ADD PARTITION(新增分區(qū))

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

刪除分區(qū)測(cè)試:DROP PARTITION(刪除分區(qū))

ALTER TABLE t_test_task_result DROP PARTITION p20220218;
##提示刪除分區(qū)是物理刪除,操作非???
?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

到此這篇關(guān)于MySQL分區(qū)表管理命令匯總 的文章就介紹到這了,更多相關(guān)MySQL分區(qū)表管理命令內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論