我有一个服务器,它发送多达20个UPDATE
语句到一个单独的MySQL服务器每3-5秒为一个游戏。我的问题是,将它们连接在一起是否更快(UPDATE;UPDATE;UPDATE
)。在事务中执行这些操作是否比提交事务更快?单独执行每个UPDATE
会更快吗?
任何有见地的人都将不胜感激!
发布于 2012-11-04 06:20:27
这在某种程度上取决于服务器的连接方式。如果服务器之间的连接是持久的,那么您可能看不到连接语句和多个单独语句之间的很大区别。
但是,如果执行涉及建立连接、执行SQL语句,然后断开连接,则通过一次执行多条语句可以节省数据库服务器上的大量资源。建立连接的过程往往是昂贵和耗时的过程,并且由于机器是分开的,因此增加了DNS解析的开销。
对我来说,建立连接、开始事务、单独执行语句、提交事务并断开与数据库服务器的连接是最合理的。在这种情况下,是将所有UPDATE
语句作为单个连接还是作为多个单独的语句发送,可能不会有太大区别,特别是如果这只是涉及这两个服务器之间的常规通信,并且您不需要期望它随着用户负载而扩展。
事务的使用假设您的UPDATE
语句的3-5秒周期性突发在某种程度上是逻辑相关的。如果它们不是相互依赖的,那么您可以跳过节省一些资源的事务。
对于任何关于性能的问题,最好的答案是,如果您当前的系统满足了您的性能和伸缩需求,那么您还不应该过多地关注微优化。
发布于 2012-11-04 06:33:20
将这些更新封装到单个事务块中总是更快。这样做的代价是,如果块中的任何东西都失败了,那就是什么都没有发生--你将不得不再次重复你的工作。
另外,请记住,只有在使用InnoDB引擎时,MySQL中的事务才能工作。
https://stackoverflow.com/questions/13214014
复制相似问题