杭州绿城乐居建设管理有限公司网站韶关网站设计公司
news/
2025/10/1 11:55:02/
文章来源:
杭州绿城乐居建设管理有限公司网站,韶关网站设计公司,单页设计思路,wordpress 账号插件目录
一、事务的概念
二、事务的核心特性
三、事务操作中的常见BUG
3.1 脏读
3.2 不可重复读
3.3 幻读
四、隔离级别
五、使用事务 一、事务的概念 “事务”是指一组操作#xff0c;在逻辑上是不可分割的#xff0c;组成这组操作的各个语句#xff0c;或者全部执行成…目录
一、事务的概念
二、事务的核心特性
三、事务操作中的常见BUG
3.1 脏读
3.2 不可重复读
3.3 幻读
四、隔离级别
五、使用事务 一、事务的概念 “事务”是指一组操作在逻辑上是不可分割的组成这组操作的各个语句或者全部执行成功或者全部执行失败。 不同的环境对“事物”这一概念有不同的称呼在数据库中这个概念就被称为“数据库事务”。 二、事务的核心特性
事物具有以下特性
核心特性说明原子性通过事物将多条语句组合在一起使这些语句在执行的时候不可被分割。一致性事务中的各个操作语句或者全部执行成功或者全部执行失败保持了执行结果的一致。持久性事务本身也是由操作语句组成的每一条执行成功的语句带来的数据修改都是持久化存在的。隔离性用于解决多事务并发执行时可能出现的BUG隔离性提高了数据的准确性但降低了程序的运行速度。 三、事务操作中的常见BUG
3.1 脏读
介绍脏读就像名字一样意思是读到的数据是脏的是被污染的。脏读是由于数据库中的数据没有被正确地更新导致在事务提交时读取的数据是错误的。举例事务1持续更新数据A在事务1未更新完毕时事务2读取了数据A。此时数据A仍然在被事务1改动那么事务2读取的数据就是一个错误的数据。解决方案降低事务的并发当发生写操作时其他事务不能读直到写操作执行完毕。写的时候不能读
3.2 不可重复读
介绍不可重复读是由于数据库中的数据虽然被正确地更新但是因为在读的过程中发生并发访问导致数据再次被更新此时事务就根据读取的错误数据提交了。举例事务1更新数据A并正常提交。事务2开始读操作多次读取数据A。但发生了并发访问事务3再次更新数据A。此时事务2还在持续读取数据A但得到的数据已经发生改变。解决方案降低事务的并发当发生读操作时其他事务不能写直到读操作执行完毕。读的时候不能写
3.3 幻读
介绍幻读和不可重复读十分相似都是在读数据的过程中数据发生改变而导致读取的数据前后不一致只是幻读获得的错误数据规模更大比如幻读带来了错误的结果集。个人粗略的认为幻读是不可重复读的进阶版。举例事务1更新数据A并正常提交。事务2开始读操作多次读取包含数据A在内的数据集合并根据数据集合进行了各种运算产生了结果集。事务3并发访问将数据A删除了此时事务2读取的数据集合就不包括数据A了那么此时事务2完成提交后得到的结果集就与第一次不同了就好像产生了幻觉一样通俗来讲就是“见了鬼了怎么两次得到的结果不一样”。解决方案通常采用串行化的事务执行方式即不再发生任何并发。 四、隔离级别 从上文可以得知使用事务时可能出现一些BUG。虽然出现了BUG但一般都会有相应的解决方法而MySQL中也提供了一些“锦囊妙计”来帮助使用者避免BUG这就是隔离级别。
MySQL提供了四种隔离级别
隔离级别说明并行程度隔离程度效率数据准确度可能出现的BUGread uncommitted读未提交。没有任何限制。最高最低最高最不准确脏读、不可重复读、幻读read commited读已提交。写操作加锁。高低高不准确不可重复读、幻读repeatable read可重复读默认的隔离级别。读操作加锁写操作加锁。低高低准确幻读serializable串行化。读操作加锁写操作加锁。不并行最高最低最准确无 以上四种隔离级别供使用者根据需求进行使用和调整以适应不同情况。越往下隔离级别越高隔离级别高能够带来准确的数据但同时会导致程序执行效率变低这就需要程序员根据不同的实际情况进行取舍了。 五、使用事务
使用事务的步骤
开启事务start transaction;打包SQL语句由多条SQL语句组成一个逻辑上的不可分割的整体回滚或提交 rollback/commit;
回滚(rollback)是指在事务提交时如果发生错误可以回滚到事务开始时撤销所有已经执行的SQL语句。回滚可以用于确保数据的一致性避免数据不一致的情况。使用Java进行编程时 rollback 一般会在代码里抛出异常cry/catch 捕获时使用。简单来讲回滚代表SQL全部执行失败。
提交(commit)是指在事务完成时可以确认所有SQL语句都已经成功执行确认将事务的数据写入到数据库中。简单来讲提交代表SQL全部执行成功。 阅读指针 - 《JDBC编程》
链接生成中.........
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/923816.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!