mysql如何進行分割槽
阿新 • • 發佈:2018-12-10
分割槽型別
RANGE分割槽:基於屬於一個給定連續區間的列值,把多行分配給分割槽。
LIST分割槽:類似於按RANGE分割槽,區別在於LIST分割槽是基於列值匹配一個離散值集合中的某個值來進行選擇。
RANGE分割槽
基於屬於一個給定連續區間的列值,把多行分配給分割槽。
這些區間要連續且不能相互重疊,使用VALUES LESS THAN操作符來進行定義。以下是例項。
Sql程式碼:
CREATE TABLE members ( id INT, joined DATE NOT NULL ) PARTITION BY RANGE COLUMNS(joined) ( PARTITION a VALUES LESS THAN ('1960-01-01'), PARTITION b VALUES LESS THAN ('1970-01-01'), PARTITION c VALUES LESS THAN ('1980-01-01'), PARTITION d VALUES LESS THAN ('1990-01-01'), PARTITION e VALUES LESS THAN MAXVALUE );
LIST分割槽
CREATE TABLE `ts_rta_visit_from` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `STAT_DATE` varchar(8) NOT NULL COMMENT '統計日期(日期:YYYYMMDD)', `STAT_MINUTE` varchar(4) DEFAULT NULL COMMENT '統計分鐘(分鐘:HHMM)(每5分鐘一個取值,一天共288個取值,從0000-2355)', `SITE_ID` varchar(2) DEFAULT NULL COMMENT '站點', `TERMINAL_TYPE_ID` varchar(1) DEFAULT '1' COMMENT '終端型別編碼', `NEW_OLD_UV_FLAG` varchar(1) DEFAULT NULL COMMENT '新老訪客標識', `VISIT_FROM_ID` varchar(2) DEFAULT NULL COMMENT '訪問來源編碼', `VISIT_FROM_CLASS_ID` varchar(1) DEFAULT NULL COMMENT '訪問來源大類編碼', `COMPARE_PERIOD_ID` varchar(2) DEFAULT NULL COMMENT '對比時間段編碼', `CD_PV_NUM` int(11) DEFAULT NULL COMMENT '當天累計瀏覽量', `CD_UV_NUM` int(11) DEFAULT NULL COMMENT '當天累計訪客數', `CD_VISIT_NUM` int(11) DEFAULT NULL COMMENT '當天累計訪問次數', `CD_VISIT_DURATION` bigint(20) DEFAULT NULL COMMENT '當天累計訪問時長', `CD_URL_NUM` int(11) DEFAULT NULL COMMENT '當天累計頁面數', `DATA_TIME` varchar(8) DEFAULT NULL COMMENT '資料處理時間', PRIMARY KEY (`ID`,`STAT_DATE`) ) ENGINE=InnoDB AUTO_INCREMENT=4177 DEFAULT CHARSET=utf8 COMMENT='應用層_實時分析_流量來源分析\n\n兩份資料:一份到流量來源小類,一份到流量來源大類' /*!50500 PARTITION BY LIST COLUMNS(STAT_DATE) (PARTITION p20151010 VALUES IN ('20151010') ENGINE = InnoDB, PARTITION p20151011 VALUES IN ('20151011') ENGINE = InnoDB, PARTITION p20151203 VALUES IN ('20151203') ENGINE = InnoDB, PARTITION p20151204 VALUES IN ('20151204') ENGINE = InnoDB, PARTITION p20151205 VALUES IN ('20151205') ENGINE = InnoDB, PARTITION p20151206 VALUES IN ('20151206') ENGINE = InnoDB, PARTITION p20151207 VALUES IN ('20151207') ENGINE = InnoDB, PARTITION p20151208 VALUES IN ('20151208') ENGINE = InnoDB)
新增分割槽
alter TABLE `test1` add PARTITION(
PARTITION p20180629 VALUES LESS THAN (20180630) ENGINE = InnoDB
);
ALTER TABLE ts_rta_visit_channel ADD PARTITION (PARTITION p20151207 VALUES IN ('20151207') ENGINE = InnoDB);
刪除分割槽
alter table `test1` drop PARTITION p20180629;