当前位置: 首页 > 面试题库 >

PDO / PHP / MySQL中的性能:事务与直接执行

冯宏放
2023-03-14
问题内容

我正在遍历多个值(例如1到100),并在循环内执行准备好的语句。

与在循环内直接执行相比,使用事务(在循环结束后提交)有优势吗?

这些值并不相互依赖,因此从该角度来看不需要进行事务处理。


问题答案:

如果您的查询是INSERT,请参见第7.2.19页。MySQL手册中INSERT语句的速度给出了两个有趣的信息,这取决于您是否使用事务引擎:

使用非事务引擎时:

要加快对非事务性表使用多个语句执行的INSERT操作,请锁定表。

这将提高性能,因为在所有INSERT语句完成后,索引缓冲区仅刷新一次到磁盘。通常,索引缓冲区刷新与INSERT语句一样多。如果可以使用单个INSERT插入所有行,则不需要显式的锁定语句。

并且,使用事务引擎:

为了更快地插入事务表,您应该使用START TRANSACTION和COMMIT而不是LOCK TABLES。

所以我猜想使用事务可能是个好主意-但我想这可能取决于服务器上的负载,是否同时使用同一张表有多种用途以及所有这些…

我链接到的页面上有更多信息,所以请随时阅读;-)

而且,如果您正在执行更新语句:

获得快速更新的另一种方法是延迟更新,然后在以后连续进行许多更新。如果锁定表,一起执行多个更新要比一次执行一次更新快得多。

因此,我想可以说与插入相同。

顺便说一句:可以肯定的是,您可以尝试两种解决方案,microtime例如在PHP方面使用它们进行基准测试;-)



 类似资料:
  • 问题内容: 在PHP文件说: 如果您以前从未遇到过事务,则它们提供4个主要功能:原子性,一致性,隔离性和持久性(ACID)。用外行的术语来说,事务中执行的任何工作,即使它是分阶段进行的,都可以保证在提交时安全地应用于数据库,并且不受其他连接的干扰。 题: 这是否意味着我可以让两个单独的php脚本同时运行事务,而又彼此不干扰? 通过 “ 干扰 ” 细化我的 意思 : 假设我们有下表: 如果我有两个脚

  • 本文向大家介绍PHP PDO:连接到MySQL / MariaDB服务器,包括了PHP PDO:连接到MySQL / MariaDB服务器的使用技巧和注意事项,需要的朋友参考一下 示例 有两种方法可以连接到MySQL / MariaDB服务器,具体取决于您的基础结构。 标准(TCP / IP)连接 由于PDO被设计为与旧的MySQL服务器版本(不支持预准备语句)兼容,因此您必须显式禁用该仿真。否则

  • 本文向大家介绍php下pdo的mysql事务处理用法实例,包括了php下pdo的mysql事务处理用法实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php下pdo的mysql事务处理用法。分享给大家供大家参考。具体分析如下: php+mysql事务处理的几个步骤: 1.关闭自动提交 2.开启事务处理 3.有异常就自动抛出异常提示再回滚 4.开启自动提交 注意:mysql只有这个Inn

  • 问题内容: 我经常看到使用PDO 或使用PDO的代码。是否只是出于某种原因而将论点转为皱眉? 我知道实际上绑定到了变量,并且可以设置两个方法都绑定的参数类型,但是如果仅插入字符串怎么办? 我经常看到上面的内容,但是我个人更喜欢: 它不是那么冗长,从视觉上来说,让输入“进入”查询对我来说更有意义。但是,我几乎看不到它的使用。 当您不必利用前者的特殊行为时,是否有理由更喜欢使用方法而不是传递参数? 问

  • 问题内容: 他们俩都做同一件事,只是做事不同吗? 除了使用之间还有什么区别 和 ? 问题答案: 运行标准SQL语句,并要求您正确转义所有数据,以避免SQL注入和其他问题。 运行一个准备好的语句,该语句使您可以绑定参数,以避免需要转义或引用参数。如果您多次重复查询,效果也会更好。准备语句的示例: 最佳实践是坚持准备好的语句并提高安全性。

  • 本文向大家介绍讲解MySQL中的事务特性,包括了讲解MySQL中的事务特性的使用技巧和注意事项,需要的朋友参考一下 一个事务是一个连续的一组数据库操作,就好像它是一个单一的工作单元进行。换言之,永远不会是完整的事务,除非该组内的每个单独的操作是成功的。如果在事务的任何操作失败,则整个事务将失败。 实际上,会俱乐部许多SQL查询到一个组中,将执行所有的人都一起作为事务的一部分。 事务的特性: 事务有