请教:事务未提交数据的查询

请教:事务未提交数据的查询,第1张

打开全日志后可以看。

打开的方法是:

1、5.0的版本

在配置文件的mysqld段中,增加

log=/var/log/mysql.log(或者其他的你想放日志的路径)

然后重启数据库

2、如果是5.1的版本

在配置文件的mysqld段中,增加

general_log_file=/var/log/mysql.log

然后重启数据库

5.1版本也可以不用重启,全局设置一下,方法是:

set global general_log=1

set global general_log_file=/var/log/mysql.log

打开日志后,查看未提交事务的方法为:

连接到数据库后,会分配一个连接id,然后追踪此连接id,找到此连接执行的所有sql,如果有begin,而没有commit,那么这个语句就是未提交的。

1.

在同一事务条件下,回滚和不提交,表现是一样的

但是还有些差别

事务处理,是将 *** 作事件交给数据库(模拟)运行,直到commit *** 作,才使得修改实际产生效果,你可以看做是未提交事务都是处于一个临时库中进行

回滚是对于同一个事务,如果产生了错误,那么取消这个临时库中的 *** 作,不对实际数据产生影响

最主要的区别在于,如果不回滚,这些临时 *** 作会持续到这个个connection结束为止,也就是虽然你看不到,但是临时库的 *** 作依然存在,而回滚是即时生效,其实都是回滚了,只是时间点的不一样

2.

我说你在开玩笑吧。没有提交事务并不代表你对数据库的改变不存在,如果是脏读的隔离层级你修改数据到提交完成前的变更其他访问者也是可以看到的。只有你提交后这部分修改才确认不会变更而已,哪怕设定了其他隔离级别也可以看到了。

如果你不回滚,那么线程就停在哪里搁着?制造出数据库死链放着不管直到数据库认为这个连接超时自动断开并自动回滚?

ISOLATION_READ_UNCOMMITTED:允许读取其他并发事务还未提交的更新,会导致事务之间的3个缺陷发生,这是速度最快的一个隔离级别,但同 时它的隔离级别也是最低


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9972686.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存