MySQL表频繁TRUNCATE,UPDATE,&选择

时间:2015-06-18 22:48:01

标签: php mysql

我正在构建一个应用程序,需要清空MySQL表并每分钟重新填充新数据。同时,预计该表将每秒接收10-15个SELECT语句。 SELECT语句通常应该非常快(每次选择10-50个中等长度的字符串)。我担心的一些事情:

是否有可能在TRUNCATE和UPDATE查询之间运行SELECT查询以返回0行?执行TRUNCATE-UPDATE查询对时,是否需要锁定表?

对于此设置,我是否应该担心任何重大的性能问题?

2 个答案:

答案 0 :(得分:-1)

最有可能是实现目标的更好方法。但是,无论如何,这都是您的问题的可能答案:您可以封装要在事务中一起执行的查询。我最喜欢的是

    else                        // you have to cover all conditions
        return "none";          // thus you should add these

编辑:上述部分是完全错误的,请参阅Philip Devine的评论。感谢。

关于性能问题:反复连​​接到服务器可能成本很高。如果你有持久连接,你应该没事。通过批量执行多个查询或使用Prepared Statements,您可以在这里和那里节省一点点。

答案 1 :(得分:-2)

为什么你需要每分钟截断它?是的,这将导致您的用户没有返回任何行。只需更新行而不是截断并插入。

第二个选项是将新值插入到新表中,将这两个表重命名为:

RENAME TABLE tbl_name TO new_tbl_name
[, tbl_name2 TO new_tbl_name2]

然后截断旧表。

然后您的用户看到零停机时间。另一个答案中的截断忽略了交易并立即发生,所以不要这样做!!