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引用的文档这里解释得很清楚