
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
数据库事务是大多数软件编程开发程序员在学习软件开发的时候需要重点掌握的一个编程知识点,而本文我们就通过案例分析来简单了解一下,数据库事务状态与并行问题分享。
事务其实是一个抽象的概念,由一个有限的数据库操作序列构成,对应着一个或多个数据库操作,这些操作所执行的不同阶段大致上有以下几个状态:
活动的(active)
事务对应的数据库操作正在执行过程中,我们就说该事务处在活动的状态
部分提交的(partiallycommitted)
当事务中的后一个操作执行完成,但是由于操作都在内存中执行,所造成的影响并没有刷新到磁盘时,我们就说该事务处在部分提交的状态
失败的(failed)
当事务处在活动的或者部分提交的状态时,可能遇到了某些错误(数据库自身的错误、操作系统错误或者直接断电等)而无法继续执行,或者人为的中止当前事务的执行,我们就说该事务处在失败的状态。
中止的(aborted)
如果事务执行了半截变为失败的状态,比如我们上面唠叨的转账事务,当小B的钱被扣除,小A的钱没有增加时遇到了错误从而导致当前事务处在了失败的状态,那么就需要将小B的账户余额调整为未转账之前的金额,换句话说,就是要撤销失败事务对当前数据库造成的影响。我们将这个撤销的过程称之为回滚。当回滚操作执行完毕的时候,也就是数据库恢复到了执行事务之前的状态,我们就说该事务处在了中指的状态。
提交的(committed)
当一个处在部分提交的状态的事务将修改过的数据都同步到磁盘上之后,我们就可以说该事务处在了提交的状态。
随着事务对应的数据操作执行到不同阶段,事务的状态也在不断变化。
事务并行遇到的问题
让T1,T2排队执行牺牲性能这并不是我们想要的方案,我们想要的是既想保持事务的隔离性,又想让服务器在处理访问同一数据的多个事务时尽量高些,舍弃一部分的隔离性来提升性能。我们知道数据库是一个客户端/服务器架构的软件,对于同一个服务器来说,可以有若干个客户端与之链接,每个客户端与服务器连接上之后,就可以称之为一个会话(Session)。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei456学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。