jer*_*oen 5 php mysql sql pdo transactions
我循环遍历许多值(例如1到100)并在循环内执行预准备语句.
使用事务是否有优势 - 在循环结束后提交 - 与循环内的直接执行相比?
这些值不是相互依赖的,因此从这个角度来看不需要事务.
如果您的查询是 INSERT,请参见第 7.2.19 页。MySQL 手册的INSERT 语句的速度提供了两个有趣的信息,具体取决于您是否使用事务引擎:
使用非事务性引擎时:
要加快使用多个语句对非事务表执行的 INSERT 操作,请锁定表。
这有利于性能,因为在所有 INSERT 语句完成后,索引缓冲区仅刷新到磁盘一次。通常,索引缓冲区刷新次数与 INSERT 语句的数量一样多。如果可以使用单个 INSERT 插入所有行,则不需要显式锁定语句。
并且,使用事务引擎:
为了获得更快的事务表插入,您应该使用 START TRANSACTION 和 COMMIT 而不是 LOCK TABLES。
所以我猜测使用事务可能是一个好主意 - 但我认为这可能取决于服务器上的负载,以及是否有多个用途同时使用同一个表,以及所有这些......
我链接到的页面上有更多信息,所以请不要犹豫,阅读它;-)
而且,如果您正在执行更新语句:
获得快速更新的另一种方法是延迟更新,然后稍后连续进行多次更新。如果锁定表,一起执行多个更新比一次执行一个更新要快得多。
所以,我猜对于插入来说也可以这样说。
顺便说一句:当然,您可以尝试这两种解决方案,microtime例如在 PHP 方面对它们进行基准测试;-)