MySQL分區(qū)表管理命令匯總
前言:
分區(qū)是一種表的設(shè)計(jì)模式,正確的分區(qū)可以極大地提升數(shù)據(jù)庫的查詢效率,完成更高質(zhì)量的SQL編程。但是如果錯(cuò)誤地使用分區(qū),那么分區(qū)可能帶來毀滅性的的結(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ù)庫在5.1版本時(shí)添加了對(duì)分區(qū)的支持,分區(qū)的過程是將一個(gè)表或索引分解為多個(gè)更小、更可管理的部分。就訪問數(shù)據(jù)庫的應(yīng)用而言,從邏輯上講,只有一個(gè)表或一個(gè)索引,但是在物理上這個(gè)表或索引可能由數(shù)十個(gè)物理分區(qū)組成。每個(gè)分區(qū)都是獨(dú)立的對(duì)象,可以獨(dú)自處理,也可以作為一個(gè)更大對(duì)象的一部分進(jìn)行處理。
MySQL數(shù)據(jù)庫支持的分區(qū)類型為水平分區(qū)(指將同一個(gè)表中不同行的記錄分配到不同的物理文件中),并不支持垂直分區(qū)(指將同一表中不同列的記錄分配到不同的物理文件中)。此外,MySQL數(shù)據(jù)庫的分區(qū)是局部分區(qū)索引,一個(gè)分區(qū)中既存放了數(shù)據(jù)又存放了索引。而全局分區(qū)是指,數(shù)據(jù)存放在各個(gè)分區(qū)中,但是所有數(shù)據(jù)的索引放在一個(gè)對(duì)象中。目前,MySQL數(shù)據(jù)庫還不支持全局分區(qū),接下來我們一起來看看分區(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ū)測試: 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ū)測試: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)文章
Mysql通過explain分析定位數(shù)據(jù)庫性能問題
這篇文章主要介紹了Mysql通過explain分析定位數(shù)據(jù)庫性能問題,明確SQL在Mysql中實(shí)際的執(zhí)行過程是怎樣的,如果查詢字段沒有索引則增加索引,如果有索引就要分析為什么沒有用到索引,本文詳細(xì)講解,需要的朋友可以參考下2023-01-01
mysql隨機(jī)抽取一定數(shù)量的記錄實(shí)例講解
在本篇文章里小編給大家整理的是關(guān)于mysql隨機(jī)抽取一定數(shù)量的記錄實(shí)例相關(guān)知識(shí)點(diǎn),有需要的朋友們可以學(xué)習(xí)下。2019-09-09
Can''t connect to local MySQL through socket ''/tmp/mysql.so
今天小編就為大家分享一篇關(guān)于Can't connect to local MySQL through socket '/tmp/mysql.sock'解決方法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-03-03
MySQL一次性創(chuàng)建表格存儲(chǔ)過程實(shí)戰(zhàn)
這篇文章主要介紹了MySQL一次性創(chuàng)建表格存儲(chǔ)過程實(shí)戰(zhàn),文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下2022-07-07
mysql installer web community 5.7.21.0.msi安裝圖文教程
這篇文章主要為大家詳細(xì)介紹了mysql installer web community 5.7.21.0.msi,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09
Mysql區(qū)間分組查詢的實(shí)現(xiàn)方式
這篇文章主要介紹了Mysql區(qū)間分組查詢的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10

