数据库事务相关知识总结

    从硬件资源的维度分析,数据库性能出现瓶颈主要包括三方面内容:内存、磁盘和CPU。数据库中的所有数据都存储在磁盘中,当数据库从磁盘中读取或写入数据库页面时,会消耗内存,当内存不够时,数据将被分页写入磁盘,这对性能是很大的损失。同理,如果系统磁盘出现问题,读写磁盘的数据都会导致读写数据速度变慢。

    【并发性】是指多个线程在相同时间访问或者更改共享数据。一般情况下,一个系统在互不干扰的情况下可以激活的并发用户的进程数越多,说明系统的性能越强。

进行并发时,容易产生以下几种情况的异常:

    【丢失更新】指两个进程对同一个数据进行读取操作,并且同时试图对该数据值进行更新时,很容易导致更新初始值错误的现象。

    【脏读】指对提交的数据进行读取操作,一个进程对数据进行了修改,但是未提交,即没有更新成功,但是另一个进程已经读取到修改后的值并开始使用了。

    【不可重复读】是指一个进程在同一个事务中对数据进行了两次读取操作,有可能两次读取结果不一致。

    【幻影】指一个处理插入和删除一行数据的事务,在处理该事务时,该数据行被另一个事务读取到了。

    事务是数据库并发控制的基本单元,可以执行一个或多个动作。事务分为显式事务和隐式事务,显式事务是指显式地开始一个事务并显式地提交或者回滚事务。而隐式事务是指自动提交事务,如果语句执行失败,自动回滚或取消这个事务。

    事务必须满足ACID特性。

              1【原子性】一个事务是一个整体,如果执行过程中有一个动作失败,事务中之前所有的动作都必须回滚,回到之前没执行的状态。

              2【一致性】在一个用户未提交他的事务前(比如更新一个字段),其他用户 Select 出来的结果都一样。

              3【隔离性】并发事务之间互相影响的程度,比如一个事务会不会读取到另一个未提交的事务修改的数据。

                        事务的隔离级别从低到高有:

                        读取未提交Read Uncommitted:最低的隔离级别,什么都不需要做,一个事务可以读到另一个事务未提交的结果。所有的并发事务问题都会发生。

                        读取提交Read Committed:只有在事务提交后,其更新结果才会被其他事务看见。可以解决脏读问题。

                        可重复读Repeated Read:在一个事务中,对于同一份数据的读取结果总是相同的,无论是否有其他事务对这份数据进行操作,以及这个事务是否提交。可以解决脏读、不可重复读。

                        可串行化Serialization:事务串行化执行,隔离级别最高,牺牲了系统的并发性。可以解决并发事务的所有问题。

            4【持久性】事务提交后,对系统的影响是永久的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值