Mysql 交易:固定/犯罪/ 和回滚
我更新了我的数据库引擎 PhpMyAdmin 从 MyISAM 到 INNODB, 解决回滚。
这是我的要求 SQL :
这是结果 :
1/ 因此,操作员告诉我触摸了 2 线条,但更改不会出现在任何地方 /没有我的 DB, 既不在网站上/。 我以为
允许我可视化更改 /临时 DB/, 然后,如果我满足请求 "commit". /我明白我需要
刷新 DB, 但如果我。
, 然后改变将是永久性的/.
2/ 然后我不明白的意思
, 如果我在提交之前没有看到效果。 这两个请求之间有什么区别 :
AND
3/ 如果我理解正确,那么所有这些函数都是一样的 :
这是我的要求 SQL :
START TRANSACTION;
UPDATE jkm_content SET state=0 WHERE title IN /'title-1','title2'/;
这是结果 :
start transaction;# MySQL returned an empty result set /i.e. zero
rows/.
UPDATE jkm_content SET state=1 WHERE title IN /'title-1','title2'/;# 2 rows affected.
1/ 因此,操作员告诉我触摸了 2 线条,但更改不会出现在任何地方 /没有我的 DB, 既不在网站上/。 我以为
start transaction
允许我可视化更改 /临时 DB/, 然后,如果我满足请求 "commit". /我明白我需要
commit
刷新 DB, 但如果我。
commit
, 然后改变将是永久性的/.
2/ 然后我不明白的意思
rollback
, 如果我在提交之前没有看到效果。 这两个请求之间有什么区别 :
START TRANSACTION;
UPDATE jkm_content SET state=0 WHERE title IN /'title-1','title2'/;
AND
START TRANSACTION;
UPDATE jkm_content SET state=0 WHERE title IN /'title-1','title2'/;
ROLLBACK;
3/ 如果我理解正确,那么所有这些函数都是一样的 :
START TRANSACTION
BEGIN
BEGIN WORK
没有找到相关结果
已邀请:
2 个回复
风见雨下
赞同来自:
您的产出将包括 'Hi there'. 但是,如果您与数据库运行第二个连接,则不会显示新行,直到您从第一个连接修复事务。 尝试使用命令行使用两个数据库连接使用此数据库。
您没有看到您网站的影响,因为在两个数据库连接中不能具有相同的交易 /将在您的请求开始时进行与数据库的新连接。/.
2/ 当数据库连接关闭时,未记录的所有交易都会回滚。 因此,如果这是你唯一的两个请求,没有区别。 但是,之间存在差异
3/ 是的,这一切都是一样的。
知食
赞同来自:
/ 直到交易是固定的。
交易回滚之间存在巨大差异,并将永久保存永久 /或直到发动机因超时而杀死她/. 后者意味着服务器无法释放分配以支持事务的资源。 除了 , 像你一样做
, mysql 必须为受影响的行提供独占锁,而且没有其他交易可以更新/删除这些行。 如果您有一个留下事务打开的应用程序,那么您很可能会发现自己所有连接都忙碌,或者等待,或者很多血易 .
是的,他们都开始了新的交易 mysql.