MySQL表分區細節邏輯

一、建表時進行分區

  • Range分區表建表語句如下,其中分區鍵必須和id構成主鍵和唯一鍵:
create table if not exists inv_onhand_quantity_test_t
(
  STORAGE_ID      bigint auto_increment
  comment '主鍵',
  ITEM_ID         int                                not null
  comment '物料ID',
  ITEM_NUM        varchar(100)                       null
  comment '物料編碼',
  TRAY_ID         int                                null
  comment '托盤ID',
  TRAY_NUM        varchar(16) charset utf8mb4        null
  comment '托盤號',
  LOCATION        varchar(16) charset utf8mb4        null
  comment '庫位',
  ONHAND_QUANTITY double                             null
  comment '庫存數量',
  WORKORDER_NUM   varchar(32) charset utf8mb4        null
  comment '工單號',
  TASK_NUM        varchar(32) charset utf8mb4        null
  comment '任務號',
  UOM             varchar(4) charset utf8mb4         null
  comment '物料單位',
  MANAGE_GROUP    varchar(16) charset utf8mb4        null
  comment '管理組別',
  SUBINV_ID       int(4)                             null
  comment '倉庫ID',
  ITEM_LIS        varchar(100) charset utf8mb4       null
  comment '物料序列號',
  ITEM_BAT        varchar(100) charset utf8mb4       null
  comment '物料批次號',
  SOURCE_TYPE     int(4)                             null
  comment '來源類型:',
  SUPPLIER_ID     varchar(200) default '0'           null
  comment '供應商ID',
  SOURCE_NUMBER   varchar(100)                       null
  comment '來源單號',
  IS_TAKINGSTOCK  int(2) default '0'                 null
  comment '0 未操作 1 盤點計劃中',
  CREATE_TIME     datetime default CURRENT_TIMESTAMP not null,
  CREATE_USER     varchar(16)                        null,
  UPDATE_TIME     datetime default CURRENT_TIMESTAMP null,
  UPDATE_USER     varchar(16)                        null,
  ORGANIZATION_ID int                                null
  comment '庫存組織ID',
  PRIMARY KEY (`STORAGE_ID`, `CREATE_TIME`),
  UNIQUE KEY `id_UNIQUE` (`STORAGE_ID`, `CREATE_TIME`)
)
  -- 分區
  PARTITION BY RANGE COLUMNS (CREATE_TIME)
  (PARTITION p08 VALUES LESS THAN ('2019-08-31')
    ENGINE = InnoDB,
  PARTITION p09 VALUES LESS THAN ('2019-09-30')
    ENGINE = InnoDB,
  PARTITION p10 VALUES LESS THAN ('2019-10-31')
    ENGINE = InnoDB);

二、建表後進行分區(消耗資源巨大)

  • 創建分區
ALTER TABLE inv_onhand_quantity_t PARTITION BY RANGE columns (CREATE_TIME)
(
PARTITION p_6 VALUES LESS THAN ('2019-06-30'),
PARTITION p_9 VALUES LESS THAN ('2019-09-30'),
PARTITION p_12 VALUES LESS THAN ('2019-12-31'));
  • 添加新分區
alter TABLE `inv_onhand_quantity_copy1_t`
  add PARTITION (
  -- PARTITION p_11 VALUES LESS THAN ('2019-11-30') ENGINE = InnoDB,
  PARTITION p_max VALUES LESS THAN MAXVALUE
  );
  • 刪除分區
alter table `inv_onhand_quantity_copy1_t`
  drop PARTITION p_max;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章