Php 为什么要使用innoDB和事务?

Php 为什么要使用innoDB和事务?,php,mysql,database,transactions,innodb,Php,Mysql,Database,Transactions,Innodb,所以我想开始一个浏览器游戏项目。只是为了练习 经过多年的PHP编程,今天我第一次听说了transactions和innoDB 所以我在谷歌上搜索了一下,仍然有一些问题 我第一次接触它是在一个网站上,上面说,在编写浏览器游戏时,InnoDB是必要的。因为它可能会被许多人同时使用,并且如果两个人同时访问一个数据库表(例如,有一纳秒的差异),它可能会变得混乱,数据可能会丢失,或者您的SELECT没有更新,尽管它应该在一纳秒前由访问权限更新(但脚本仍在运行,无法更改)…等等 显然,transaction

所以我想开始一个浏览器游戏项目。只是为了练习

经过多年的
PHP
编程,今天我第一次听说了
transactions
innoDB

所以我在谷歌上搜索了一下,仍然有一些问题

我第一次接触它是在一个网站上,上面说,在编写浏览器游戏时,InnoDB是必要的。因为它可能会被许多人同时使用,并且如果两个人同时访问一个数据库表(例如,有一纳秒的差异),它可能会变得混乱,数据可能会丢失,或者您的
SELECT
没有更新,尽管它应该在一纳秒前由访问权限更新(但脚本仍在运行,无法更改)…等等

显然,
transactions
通过首先处理第一次访问(直到完成),然后处理第二次访问来解决这个问题。这是正确的吗

另一个功能是,例如,如果在
事务中有
2个查询
,而第二个查询失败,它将“回滚”并“删除”(或从不应用)第一个查询的更改(成功)
查询
。对吗?所以要么一切按它应该的方式进行,要么什么都不改变。我想那太好了

另一个问题:我应该在什么时候使用事务?每次访问数据库?还是只在某些特定的数据库访问中使用它更好?我应该始终使用
try{}catch(){}

还有最后一个问题: 这笔交易如何进行? 我的理解如下:

  • 您启动一个
    事务
  • 您可以执行
    查询
    并更改
    数据库
    选择
    某些内容
  • 如果一切顺利,您可以提交更改,以便将其应用于数据库
  • 如果
    查询出现问题
    它将取消并跳转到
    catch(){}
    中,在那里您可以
    回滚
    事务,并且不会应用更改

  • 这是正确的吗?当然,除了在代码中如何
    启动
    提交
    回滚
    事务

    这是正确的。在运行查询之前,您还可以创建保存点来保存当前点。我强烈建议您查看mysql引用的文档这里解释得很清楚