串行等价化 事务 并发 加锁 死锁

原创 2012年03月22日 21:21:22

        串行等价性,满足串行等价性的事务,可以让CPU在不同事务间切换,轮有执行。这样的当事务中含有需要长时间访问磁盘的操作时,就可以执行其他事务,提供资源利用率。同时对于短事务可以降低响应时间。

        事务的串行等价性,指事务所含指令交叉执行的结果与串行一个一个执行结果似乎一样的。

    事务具有串行等价的充分必要条件,如果不同事务访问的资源有重叠,含有冲突操作时,那么不同事务访问资源的顺序必须一样。

        比如: 事务A,先访问i,再访问j资源;而事务B,先访问j,再访问i资源。访问还是冲突的(如读写冲突、写写冲突),那事务A与事务B将不满足串行等价。这样就无法实现CPU在不同事务间来回切换执行。

        对于不满足串行等价的事物,服务器可以通过串行化对象访问来达到事物的串行等价

        这就好比两个线程访问资源是冲突的,那么我就加锁强制两个线程串行的访问资源。

        不同人编写的事务不同,访问的资源不同,CPU如何在这些事务的指令上切换也是随意的,那么怎么能保证这些事务执行的结果是对的呢。

        简单的做法是加互斥锁,一个对象一把锁,一个时刻只有一个人可以访问、修改该对象,同时直到事务中所有的操作执行完了才一并释放锁。这就是两阶段加锁。

        加锁必然降低并发,那么就通过修改锁,提出了读锁、写锁分离、层次锁等概念来减低锁的粒度、锁强度从而增强并发。比如一个队列,在队列头部插入,在队列结尾删除。如果只有一把锁,那么插入和删除就不能并发执行。如果有两把锁将插入和删除区分开,则会减少冲突,提高并发。

       有加锁必然就有死锁的情况出现。那么死锁与什么有关?  串行等价性到底有什么作用?

        1.  串行等价性让计算资源可以充分利用,不用一个事务接一个事务的执行。

        2.  但运行调度和切换执行事务操作后如何保证事务的正确性,特别是当不同事务访问相同资源时,常用方法就是加锁。

        3. 加锁就有死锁情况出现,死锁与加锁、解锁的调用方式有关。比如同时等待多个锁,同时释放多个锁;还是对一个对象加锁、释放,然后再一个对象加锁、释放;这些方式的不同就会引发死锁。
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

事务的隔离级别,加锁的细节,以及两者之间的关系。 同时也说明了 索引 与 锁 之间的关系,以及死锁成因的简化的情况

背景   MySQL/InnoDB的加锁分析,一直是一个比较困难的话题。我在工作过程中,经常会有同事咨询这方面的问题。同时,微博上也经常会收到MySQL锁相关的私信,让我帮助解决一...

Python3防止死锁的加锁机制

你正在写一个多线程程序,其中线程需要一次获取多个锁,此时如何避免死锁问题。 在多线程程序中,死锁问题很大一部分是由于线程同时获取多个锁造成的。如一个线程获取了第一个锁,然后在获取第二个锁的 时候发生阻...

MYSQL 加锁以及死锁分析

1    背景    1 1.1    MVCC:Snapshot Read vs Current Read    2 1.2&#...

线程加锁两次-死锁问题实验

今天遇到了这个问题,晚上回来写个例子试试,试试证明还是会死锁的。一个不同线程分别加锁的例子,这种情况是不会死锁的。#include #include pthread_mutex_t mutex...

加锁与解锁,多步事务回滚

// 加锁与解锁 class Mutex { } void lock(Mutex m) { } void unlock(Mutex m) { } void ...

Sequelize 事务大并发下造成的死锁问题。

环境 Mysql 5.6 Innodb 1.起因我们有个需要事物的业务场景,上线之初一直运行正常,可是在晚上高峰的时候一直会有逻辑错误的问题,刚开始绝的是逻辑有问题。在阿里RDS后台发现出现大量的锁...
  • bugall
  • bugall
  • 2016-05-13 11:45
  • 2163

数据库事务原理及并发、死锁

1. 什么是数据库事务 1.1 数据库事务是指作为单个逻辑工作单元执行的一系列操作(SQL语句)。这些操作要么全部执行,要么全部不执行。 1.2 通过ACID实现数据库事务模型 1.2.1 原子...

mysql事务和 MySQL 加锁处理分析(原文博客讨论太激烈了,看评论可以看一天,这篇文章也没看完)

原文地址:http://hedengcheng.com/?p=771#_Toc374698322 背景   MySQL/InnoDB的加锁分析,一直是一个比较困难...

事务中的加锁顺序问题

事务中的加锁顺序问题   事务中分有4中级别的 下面直接引联机帮助 SET TRANSACTION ISOLATION LEVEL     { READ COMMITTED ...

[总结]数据库管理(事务、ACID、并发、封锁、可串行化、隔离、……)

1、数据库事务 1.1 数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作。 1.2 事务的4个特性(ACID): (1)原子性(atomic)(...
  • folio
  • folio
  • 2012-04-07 00:50
  • 3695
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)