一、什么是事务、
事务实际上就是处理多个操作的时候必须同时进行,比如A给B五十块钱必须两个人同时给不能出现同时减少和增加的情况。比如一根绳上的蚂蚱。
二、事务的四个特性
事务的特性包括原子性,一致性,持久性,隔离性。
原子性:事务的特性就像原子一样不可分割,必须同时发生,如果遇到主机突然断电的情况下,会把操作以日志的形式进行体现。也就是记录数据库的关键操作。
一致性:数据库的数据要进行约束也就是数据不能凭空增多也不能凭空减少。
持久性:数据库的数据要永久保存在文件里面,也就是持久性。
隔离性:隔离性也就是操作的进行不会影响其他的操作。
三、不考虑隔离性会导致问题
首先隔离性在外面日常中非常重要比如微信支付转账等等都会用到隔离性。
如果不考虑隔离性的话会导致很多问题
1,脏读问题:进行读写操作的时候我们常常都会经历脏读,脏读实际上就是在写的时候同时进行读取,假如此时写的进行修改,读取就不会快速反应而是会读取失效的数据。
解决方案: 我们将对写入进行加锁,即写完才能进行读取。但是此时会降低效率,也就是并发的效率没有之前高。
2.不可重复读:不可重复读也就是两次读取的数据不一样,也就是写入的时候的两次读取的时候写入进行修改从而导致最后的结果出现不一致。
解决方案:;对读取也进行加锁,同时将会降低效率。
3.幻读:幻读的原因是虽然对读取和写入都进行加锁但假如在并发中读取其他的事务会导致程序出现幻读即结果集不一样。
解决方案:引入串行化,串行化也就是效率比较低,但是准确性特别高适合用在游戏充值这种比较需要。
(四种隔离级别)
1、Read Uncommited(读取未提交内容)
特点:效率值最高但是数据最不准确。
2、Read committed(读取提交)
特点:对写入进行上锁。即保证必须写完才能读取
3、Repeatable Read(重复读)
特点:既对写入进行上锁也对读取进行上锁 大大降低了效率值,但是提高了准确
4、Serializable(可串行化)
特点:将并发性大大降低,一个一个执行大大提高了准确性。