mysql 非分區錶轉化成分區表

1.創建分區表

CREATE TABLE `app_visitor_logger2` (
`item_id` INT(11) NOT NULL AUTO_INCREMENT,
`page_title` VARCHAR(50) NOT NULL COMMENT '頁面名稱',
`page_code` VARCHAR(50) NOT NULL COMMENT '頁面標識',
`user_id` VARCHAR(15) NULL DEFAULT NULL COMMENT '用戶ID',
`name` VARCHAR(20) NULL DEFAULT NULL COMMENT '用戶名',
`additional` VARCHAR(20) NULL DEFAULT NULL COMMENT '附加信息ID',
`additional_name` VARCHAR(20) NULL DEFAULT NULL COMMENT '附加信息',
`browser` VARCHAR(20) NULL DEFAULT NULL COMMENT '客戶端',
`ip` VARCHAR(15) NULL DEFAULT NULL COMMENT 'IP',
`session_id` VARCHAR(32) NULL DEFAULT NULL COMMENT 'Session ID',
`source_item_id` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '源記錄ID',
`usertype` TINYINT(1) NULL DEFAULT '0' COMMENT '用戶類型',
`scene_id` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0' COMMENT '來源ID',
`scene_name` VARCHAR(50) NULL DEFAULT NULL COMMENT '來源名稱',
`subscribe_at` DATETIME NULL DEFAULT NULL COMMENT '關注時間',
`created_at` DATETIME NULL DEFAULT NULL COMMENT '記錄時間',
PRIMARY KEY (`item_id`),
INDEX `page_code` (`page_code`),
INDEX `INX_SESSION_ID` (`session_id`)
)
COMMENT='App打點統計日誌'
COLLATE='utf8_general_ci'
ENGINE=InnoDB
PARTITION BY RANGE(item_id)
(
PARTITION p0 VALUES LESS THAN (2000000),
PARTITION p1 VALUES LESS THAN (4000000),
PARTITION p2 VALUES LESS THAN (6000000),
PARTITION p3 VALUES LESS THAN (8000000),
PARTITION p4 VALUES LESS THAN MAXVALUE
)

2. 右鍵app_visitor_logger表創建觸發器app_visitor_logger_after_insert,讓有新增數據時自動添加到app_visitor_logger2中

app_visitor_logger_after_insert

BEGIN
insert into app_visitor_logger2 select * from app_visitor_logger order by item_id desc limit 1;
END

注意: 如果表涉及到更新,刪除時一定要創建多個觸發器,如app_visitor_logger_after_update,

app_visitor_logger_after_delete

BEGIN
delete from app_visitor_logger2 where app_visitor_logger2.item_id=OLD.item_id;
END

app_visitor_logger_after_update,

BEGIN
replace into app_visitor_logger2 select * from app_visitor_logger where item_id=NEW.item_id;
END

3.

a.查看app_visitor_logger2中第一次觸發器進入數據的item_id爲344011

b.導入原有app_visitor_logger的數據到app_visitor_logger2中

insert into app_visitor_logger2 select * from app_visitor_logger where item_id > 0 and item_id <= 100000 order by item_id asc;


insert into app_visitor_logger2 select * from app_visitor_logger where item_id > 100000 and item_id <= 200000 order by item_id asc;


insert into app_visitor_logger2 select * from app_visitor_logger where item_id > 200000 and item_id <= 300000 order by item_id asc;

insert into app_visitor_logger2 select * from app_visitor_logger where item_id > 300000 and item_id <=344010 order by item_id asc;


4.修改表名並刪除觸發器

RENAME TABLE `app_visitor_logger` TO `app_visitor_logger3`;
RENAME TABLE `app_visitor_logger2` TO `app_visitor_logger`;


DROP TRIGGER `app_visitor_logger_after_insert`;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章