MySQL Partitions 是一種將 table 拆分為多個更小的部分,讓數據更容易管理的方法。Partitioning 可以按照特定的列進行劃分,比如 date 或 region,也可以通過 range、list、hash 等多種方式進行劃分。本文將介紹 MySQL partitions 的創建、查詢和維護。
Partitions 的創建使用 CREATE TABLE 語句來指定。首先需要選擇 partition 的方式,然后再指定 partition 的列,并設定 partition 的數量。下面是一個示例:
CREATE TABLE sales ( id INT NOT NULL, sale_date DATE NOT NULL, amount DECIMAL(8,2) NOT NULL ) PARTITION BY RANGE (MONTH(sale_date)) ( PARTITION p01 VALUES LESS THAN (2), PARTITION p02 VALUES LESS THAN (4), PARTITION p03 VALUES LESS THAN (6), PARTITION p04 VALUES LESS THAN (8), PARTITION p05 VALUES LESS THAN (10), PARTITION p06 VALUES LESS THAN (12) );
上面的例子按照 sales_date 列的月份進行 partition,一共分為 6 個 partition,并以 MONTH(sale_date) 來將 sale_date 的月份作為 partition 的依據。如果一個銷售的 sale_date 為 '2022-01-01',那么它將會被劃分到 p01 partition 中。
查詢 partitions 的信息可以使用 INFORMATION_SCHEMA.PARTITIONS,它會返回分區表的所有 partition 的位置、大小、行數等信息。以下是一個查詢語句的例子:
SELECT partition_name, partition_ordinal_position, partition_method, partition_expression FROM INFORMATION_SCHEMA.PARTITIONS WHERE table_name = 'sales';
查詢結果會列出所有屬于 sales 表的 partition 的信息。partition_name 是 partition 的名稱,partition_ordinal_position 是 partition 的位置,partition_method 是 partition 的劃分方式,partition_expression 是 partition 的列。
維護 partitions 的方法包括添加、刪除 partition,以及將數據從一個 partition 移動到另一個 partition。以下是一些常用的 partition 維護方法的示例:
增加 partition:
ALTER TABLE sales ADD PARTITION ( PARTITION p07 VALUES LESS THAN (13) );
刪除 partition:
ALTER TABLE sales DROP PARTITION p07;
移動數據到其他 partition:
ALTER TABLE sales REORGANIZE PARTITION p06 INTO ( PARTITION p06new VALUES LESS THAN (12) );
以上就是 MySQL partitions 的基本用法。使用 partitions 可以讓 table 更高效、更可操作,用于處理大型數據集或超大數據表時非常有用。