2011-04-09 83 views
0

目前MySQL是删除MySql记录时间超过半小时或1800秒?

DELETE FROM `sessions` WHERE `expires` < UNIX_TIMESTAMP(); 

不知道我怎么会让它做我想做的事情。我正在考虑使用PHP和做unixtime-1800,然后在MySQL中使用它,这将是我的应用程序的好处。不知道你是否可以在MySQL中做到这一切,因为我只是想知道。

的PHP,我不得不将不会停这样

<?Php 
$time = time() - 1800; 
mysql_query("DELETE FROM `sessions` WHERE `expires` < $time;") 
?> 
+0

什么过期列包含?它是日期和时间吗? – 2011-04-09 17:02:14

+0

它有Unix时间。 – Keverw 2011-04-09 17:02:36

回答

1

就的。减去多少秒你想

DELETE FROM `sessions` WHERE `expires` < (UNIX_TIMESTAMP() - 1800); 

你多久计划运行此查询?

+0

每隔10分钟我就在想。 – Keverw 2011-04-09 17:06:05

+0

所以'会议'专栏应该永远不会超过...... 1000行? – Khez 2011-04-09 17:08:27

+0

它可以......我的意思是我们只会有几个成员,但如果它增长,我想我们会陷入麻烦?不知道什么是周围的工作。 – Keverw 2011-04-09 17:13:48

1

你可以简单地做:

DELETE FROM `sessions` WHERE `expires` < (UNIX_TIMESTAMP() - 1800); 
0

这种做法会导致高负荷的系统上巨大的性能下降。第一个建议是每半小时创建一个新表,并按照某种逻辑刷新旧表。

编辑:好吧,半小时GC可能没有那么大的降级,但这通常是一个糟糕的设计。