织梦网站打不开,wordpress 酒店模板,怎么自己编写网站,全网霸屏推广营销系统一个事务的开始和结尾必须是 start transaction | commit; rollback 事务特性 1.原子性#xff1a;多个操作打包成一个整体#xff0c;要么全部执行#xff0c;要么一个都不执行。 不过这里的“一个都不执行”并不是真正的全不执行#xff0c;只是看起来与没执行一样。… 一个事务的开始和结尾必须是 start transaction | commit; rollback 事务特性 1.原子性多个操作打包成一个整体要么全部执行要么一个都不执行。 不过这里的“一个都不执行”并不是真正的全不执行只是看起来与没执行一样。如果是中间戳错了就自动把前面已经成功执行的操作进行还原rollback回滚就是通过日志记录数据库事务操作的中间过程按照原操作的逆操作进行。 2.一致性事务执行前后数据可以对上依靠约束 3.持久性事务里执行的操作都是持久生效的最终会被写在硬盘里一旦事务执行成功所有操作产生的修改都会被写在硬盘里。 4隔离性并发执行事务的时候隔离性会在执行效率和数据可靠之间做出权衡~ 隔离描述的是同时执行的事务之间相互的影响~ 隔离性越高并发性就越低数据越可靠性能就越低银行转账。反之就是点赞数。 临时的并非准确的 我们称之为“脏读”。解决脏读问题就得给 写 操作加锁。在进行写操作时可以使用锁来保证数据的一致性避免其他事务对数据进行读取。提交前不能读 不可重复读问题指的是同一个事务中多次查询同一数据行时由于其他事务修改了该行数据导致该事务中多次查询到的结果不一致出现了“不可重复读”的现象。解决办法就是给读操作加锁。读的时候不能去修改 幻读是指在一个事务内多次执行相同的查询语句但由于其他事务插入、更新或删除了符合查询条件的数据行导致每次查询返回的结果集不一致的情况。与不可重复读类似幻读也可能破坏了事务的隔离性和数据的一致性。 幻读可以看成是不可重复读更进一步比如一个事务在多次读的时候虽然读到的数据是一样的但是结果集是不一样的第一次读假设是10条记录第二次读是11条记录11条中的10条与之前是一样的但多出来一个。 解决办法就是串行化彻底放弃并发执行事务一个接一个执行。串行化并发性最低隔离性最高效率最低隔离性最高 小结 在并发执行事务的过程中可能产生以下问题 1脏读 读到了写事务提交之前的中间数据脏数据写加锁提交之前不能读 2不可重复读 一个事务之内多次读取同一个数据发现数据不一样在读的过程中另一个事务修改了数据读加锁读的时候不能修改了 3幻读 一个事务之内多次读到的数据值相同但是结果集不同彻底串行化完全放弃并发执行 四种隔离级别默认是repeatable read RC进行了写和读加 越往下隔离级别越高并发性越低 数据可靠越高性能越低 read uncommitted 不做任何处理,事务间随意并发 read committed 对写操作加锁,解决了读脏数据问题 repeatable read 对读写操作加锁,解决了读脏数据问题,不可重复读问题 serializable 严格串行化,解决了三个由并发引起的问题,并发程度最低,隔离性是最高的