MySQL分區(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)文章希望大家以后多多支持腳本之家!
- MySQL分區(qū)表實(shí)現(xiàn)按月份歸類
- MySQL普通表如何轉(zhuǎn)換成分區(qū)表
- MySQL實(shí)現(xiàn)清空分區(qū)表單個(gè)分區(qū)數(shù)據(jù)
- MySQL性能優(yōu)化之分區(qū)表的使用詳解
- mysql分區(qū)表學(xué)習(xí)之日期分區(qū)
- MySQL分區(qū)表的詳細(xì)介紹
- 深入理解MySQL分區(qū)表的使用
- MySQL的分區(qū)表使用場(chǎng)景及示例小結(jié)
- MySQL普通表轉(zhuǎn)換為分區(qū)表實(shí)戰(zhàn)指南
- MySQL分區(qū)表的實(shí)現(xiàn)示例
- MySQL分區(qū)表的使用
相關(guān)文章
MySQL中必須了解的13個(gè)關(guān)鍵字總結(jié)
這篇文章主要為大家詳細(xì)介紹了MySQL中必須了解學(xué)會(huì)的13個(gè)關(guān)鍵字,文中的示例代碼簡(jiǎn)潔易懂,對(duì)我們掌握MySQL有一定的幫助,需要的可以了解下2023-09-09Windows?Server?2019?MySQL數(shù)據(jù)庫(kù)的安裝與配置理論+遠(yuǎn)程連接篇
mysql是一款關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),由MySQL?AB公司開發(fā),目前屬于Oracle旗下產(chǎn)品,MySQL是最流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)之一。MySQL也是一款開源的SQL數(shù)據(jù)庫(kù)管理系統(tǒng),是眾多小型網(wǎng)站作為網(wǎng)站數(shù)據(jù)庫(kù)的首選數(shù)據(jù)庫(kù)2023-05-05MySQL slave_net_timeout參數(shù)解決的一個(gè)集群?jiǎn)栴}案例
這篇文章主要介紹了MySQL slave_net_timeout參數(shù)解決的一個(gè)集群?jiǎn)栴}案例,問(wèn)題日志請(qǐng)見正文,本文使用slave_net_timeout參數(shù)解決了這個(gè)問(wèn)題,需要的朋友可以參考下2015-05-05MySQL實(shí)現(xiàn)查詢處理JSON數(shù)據(jù)的示例詳解
這篇文章主要為大家詳細(xì)介紹了MySQL如何實(shí)現(xiàn)查詢處理JSON數(shù)據(jù),文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以了解一下2023-06-06MySQL如何使用使用Xtrabackup進(jìn)行備份和恢復(fù)
Xtrabackup是由Percona開發(fā)的一個(gè)開源軟件,可實(shí)現(xiàn)對(duì)InnoDB的數(shù)據(jù)備份,支持在線熱備份(備份時(shí)不影響數(shù)據(jù)讀寫)。本文講解如何使用該工具進(jìn)行備份和恢復(fù)2021-06-06Mysql中json類型數(shù)據(jù)查詢問(wèn)題
這篇文章主要介紹了Mysql中json類型數(shù)據(jù)查詢問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05連接mysql報(bào)錯(cuò)——沒(méi)有設(shè)置“usessl=false”的問(wèn)題
這篇文章主要介紹了連接mysql報(bào)錯(cuò)——沒(méi)有設(shè)置“usessl=false”的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08