日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

何時選擇間隔(Interval)分區

Interval Range分區是Range分區的擴展,在數據到達時自動創建間隔分區,不需要再手動創建新分區,方便了Range分區維護操作。

向RANGE分區表插入數據時,如果插入的數據超出當前已存在分區的范圍,將無法插入并且會返回錯誤;而對于INTERVAL RANGE分區表,當新插入的數據超過現有分區的范圍時,允許數據庫自動創建新分區,根據INTERVAL子句指定的范圍來新增分區。

如果分區范圍設置為1個月,新插入的數據為當前轉換點(當前存在的分區的最大邊界值)兩個月后的數據,將會創建該數據所在月份的分區,以及中間月份的分區。例如,您可以創建一個INTERVAL RANGE分區表,該表分區范圍為1個月且當前的轉換點為2021年9月15日。如果您嘗試為2021年12月10日插入數據,那么將創建2021年9月15日至12月15日所需的3個分區,并將數據插入該分區。

下列情況下建議您使用間隔分區:

  • 數據按時間維度維護。

  • 維護滾動的數據窗口。

  • 不希望手動運維增加新的分區。

以下示例將orde_time作為分區鍵,按間隔劃分sales表。創建Interval Range分區表需要一個初始的轉換點,然后才能在轉換點之外自動創建新的分區。

在數據庫中創建一個新的Interval Range分區表,并向表中插入數據,示例如下:

CREATE TABLE sales
(
  id BIGINT,
  uid BIGINT,
  order_time DATETIME
)
PARTITION BY RANGE COLUMNS(order_time) INTERVAL(MONTH, 1)
(
  PARTITION p0 VALUES LESS THAN('2021-9-1')
);

在Interval Range分區表中插入數據,示例如下:

INSERT INTO sales VALUES(1, 1010101010, '2021-11-11');

插入數據后,通過SHOW CREATE TABLE查詢sales表定義。新的表定義如下:

CREATE TABLE `sales` (
  `id` bigint(20) DEFAULT NULL,
  `uid` bigint(20) DEFAULT NULL,
  `order_time` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
/*!50500 PARTITION BY RANGE  COLUMNS(order_time) */ /*!99990 800020200 INTERVAL(MONTH, 1) */
/*!50500 (PARTITION p0 VALUES LESS THAN ('2021-9-1') ENGINE = InnoDB,
 PARTITION _p20211001000000 VALUES LESS THAN ('2021-10-01 00:00:00') ENGINE = InnoDB,
 PARTITION _p20211101000000 VALUES LESS THAN ('2021-11-01 00:00:00') ENGINE = InnoDB,
 PARTITION _p20211201000000 VALUES LESS THAN ('2021-12-01 00:00:00') ENGINE = InnoDB) */

Interval Range分區自動新增加了_p20211001000000_p20211101000000_p20211201000000三個分區。

說明

_p作為前綴的分區名將會保留為系統命名規則,手動管理分區(創建新分區或者重命名分區的操作)時,將不允許使用此類型的分區名。例如,ADD PARTITIONREORGANIZE PARTITION操作將不允許使用‘_p’作為前綴的分區名;但是DROP PARTITION操作可以使用‘_p’作為前綴的分區名。

在這樣的業務場景下,此前通常需要DBA在插入值觸及轉換點之前手動增加分區,但操作不當就有可能導致新的數據插入失敗。通過創建Interval Range分區表,可以由系統自動增加分區,避免數據不能及時插入的問題。

由于分區數量最多只能達到8192,自動增加分區的數量也會受限制,可以配合分區表的生命周期管理解決方案使用,定期增加分區,同時定期將冷數據所在的分區自動遷移到OSS上。