Mysql

當在 InnoDB 表上刪除一個分區時,mysql 是在整個表中刷新頁面還是只在要刪除的分區中刷新頁面?

  • January 7, 2021

發出ALTER TABLE .. DROP PARTITION p1mysql 時必須將頁面刷新到磁碟。我的問題是:mysql 是在整個表中(在每個分區中)刷新頁面還是僅在要刪除的分區中刷新頁面?MySQL 伺服器 5.7

表分區exp。是:PARTITION BY RANGE (UNIX_TIMESTAMP(dt))

根據副標題下的 MySQL 5.7 文件Affected DDL statements,這裡是關於 Locking for DDL on Partitioned Tables 的說明:

CREATE VIEW 不會導致任何鎖定。

ALTER TABLE … EXCHANGE PARTITION 修剪鎖;只有交換的表和交換的分區被鎖定。

ALTER TABLE … TRUNCATE PARTITION 修剪鎖;只有要清空的分區被鎖定。

此外,ALTER TABLE 語句在表級別採用元數據鎖。

據我在該頁面中看到的,它鎖定了表的元數據。這裡沒有任何跡象表明.ibd其他分區的所有文件都需要刷新。它只會影響那些涉及的文件。

在您的情況下,它將涉及以下步驟:

  • .par獲取分區表文件的元數據鎖
  • .par更新文件中的分區列表
  • .ibd刪除你將要掉的鎖
  • 解鎖.par文件

注意:刪除分區是 DDL 而不是 DML。

直接回答您的問題

僅要刪除的分區

引用自:https://dba.stackexchange.com/questions/282750