`

MySQL使用event进行自动分表

 
阅读更多

新单位需要分表处理一个大的日志表。
首先,开启event功能。
SET GLOBAL event_scheduler = 1;
然后根据时间自动创建新表,并将视图更改到新表的查询。

  1. --模拟日志表
  2. create table t1 (id int,log varchar(30));
  3. --模拟视图
  4. create view v_log as select * from t1;
  5. delimiter $$
  6. CREATE EVENT test_event
  7.     ON SCHEDULE 
  8.         EVERY 1 second
  9.     STARTS str_to_date('2014-04-14 20:10:00','%Y-%m-%d %T')
  10.     COMMENT '根据日期创建一个新的日志表,并将视图修改为对新日志表的查询'
  11.     DO
  12.         BEGIN
  13.             set @cur_date=replace(curtime(),':','_');
  14.             set @sqltext=concat("create table log_", @cur_date ,"(id int);");
  15.             PREPARE c_tab_stat from @sqltext;
  16.             execute c_tab_stat;    
  17.             set @sqltext=concat("create or replace view v_log as select * from log_",@cur_date,";");
  18.             select @sqltext;
  19.             PREPARE a_view_stat from @sqltext;
  20.             execute a_view_stat;    
  21.         END $$
  22. delimiter ;
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics