业务需求每小时把日志表进行归档。
采用的的办法是用存储过程实现对数据表名进行交换,可以接受在交换表名时丢失少量数据。
但目前LOG表写入比较频繁。实际过程中发现经常性的执行完第一行,第二行没有执行,这导致数据库中的LOG表找不到前台写失败。大家有没有好的办法。查了一下事务但发现alter table语句是直接提交的,事务未必能起到作用还有可能造成死锁,所以没敢写成事务提交。
CREATE PROCEDURE `swap`()
BEGIN
alter table log rename to log_t1;
alter table `log_t` rename to `log`;
alter table `log_t1` rename to `log_t`;
END
采用的的办法是用存储过程实现对数据表名进行交换,可以接受在交换表名时丢失少量数据。
但目前LOG表写入比较频繁。实际过程中发现经常性的执行完第一行,第二行没有执行,这导致数据库中的LOG表找不到前台写失败。大家有没有好的办法。查了一下事务但发现alter table语句是直接提交的,事务未必能起到作用还有可能造成死锁,所以没敢写成事务提交。
CREATE PROCEDURE `swap`()
BEGIN
alter table log rename to log_t1;
alter table `log_t` rename to `log`;
alter table `log_t1` rename to `log_t`;
END
如果实在不行 就不要rename了 就直接拷贝前一个小时的数据出来 然后再删掉 前提是时间字段加索引