新单位需要分表处理一个大的日志表。
首先,开启event功能。
SET GLOBAL event_scheduler = 1;
然后根据时间自动创建新表,并将视图更改到新表的查询。
- --模拟日志表
- create table t1 (id int,log varchar(30));
- --模拟视图
- create view v_log as select * from t1;
- delimiter $$
- CREATE EVENT test_event
- ON SCHEDULE
- EVERY 1 second
- STARTS str_to_date('2014-04-14 20:10:00','%Y-%m-%d %T')
- COMMENT '根据日期创建一个新的日志表,并将视图修改为对新日志表的查询'
- DO
- BEGIN
- set @cur_date=replace(curtime(),':','_');
- set @sqltext=concat("create table log_", @cur_date ,"(id int);");
- PREPARE c_tab_stat from @sqltext;
- execute c_tab_stat;
- set @sqltext=concat("create or replace view v_log as select * from log_",@cur_date,";");
- select @sqltext;
- PREPARE a_view_stat from @sqltext;
- execute a_view_stat;
- END $$
- delimiter ;