触发器之前和更新当前时间戳时的性能差异-mysql

lnlaulya  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(443)

所以,我和我的朋友就使用before trigger或on update current\ timestamp来更新 updated_at 列。正如名称所说,该列的目的只是存储行最后一次更新的时间。
他为同一事件设置了触发器 BEFORE ```
BEGIN
set NEW.updated_at := current_timestamp();
END

我认为我们应该在updatecurrent\u timestamp上使用这个属性,因为这是mysql提供的默认触发器 `AFTER` 事件。
我试图在文档中搜索性能差异,但什么也没找到。有什么帮助吗?
k4ymrczo

k4ymrczo1#

毫无疑问 ON UPDATE CURRENT_TIMESTAMP 这种方法比触发器更快(特别是在重载情况下),因为它更简单。您当然可以将其视为默认触发器,但它实际上已内置到数据库的更新代码中。dbms中的执行路径不需要任何特殊的逻辑来处理事务,而触发器需要。
时间戳更新与任何其他更新同时发生;既不在它之前,也不在它之后。如果回滚更新(事务性地),则时间戳更改将与其余更改的列一起回滚
对于未来的程序员来说,理解表也稍微容易一些,因为他们只需查看列定义,而不必知道触发器(但这是一个见仁见智的问题。)
但是,还有更重要的设计决策需要讨论(也是一个意见问题。)

相关问题