那海蓝蓝的博客

生活点滴,微风拂去

数据库事务处理的艺术:事务管理与并发控制---书序

与海翔新书作序 海翔在数据库管理系统领域的第二本著作《数据库事务处理的艺术:事务管理与并发控制》马上就要出版了,他邀请我写个序,我没有犹豫就欣然答应了。事后,我自己都觉得奇怪会这么痛快,但细细想来,还是有充分理由的。这个序得写! 首先,我对在数据库核心技术领域长期辛勤耕耘的人表示尊敬。数据库是...

2017-11-16 09:55:01

阅读数 1423

评论数 1

InnoDB---序列化隔离级别的实现

序列化的实现     InnoDB对于序列化的实现方式,是通过两种方式实现的。     第一种,当SELECT语句在一个显式的事务块内,如执行表11-9中的编号为1的情况,将施加LOCK_S锁,根据表11-6(记录锁事务锁相容表)可知,LOCK_S锁排斥写锁,所以序列化隔离级别下只允许并发地读...

2017-04-19 14:18:59

阅读数 616

评论数 1

InnoDB---可重复读隔离级别的实现

可重复读的实现     可重复读隔离级别,简称RR,在2.1.1节,我们说过:     Repeatable Read(可重复读):一个事务在执行过程中可以看到其他事务已经提交的新插入的记录(读已经提交的,其实是读早于本事务开始且已经提交的),但是不能看到其他事务对已有记录的更新(即晚于本事务...

2017-04-19 14:18:55

阅读数 1173

评论数 0

InnoDB---读已提交隔离级别的实现

对于读已提交隔离级别的实现方式,从逻辑上需要明确两个部分,一是加锁部分二是解锁部分。加锁,对应的是获取数据,确保在指定的隔离级别下读取到应该读到的数据。解锁则意味着要在适当的时机释放锁且不影响隔离级别的语义还能提高并发度。     加锁部分,实现分为两个方面:一是加锁的时候,读已提交隔离级别不加...

2017-04-19 14:18:44

阅读数 1505

评论数 1

InnoDB---读未提交隔离级别的实现

读未提交的实现     对于读未提交隔离级别,此级别不会对记录加锁,有如下几种情况: 1  对系统表的数据操作,是数据引擎自己发出的数据查询操作,使用读未提交隔离级别,目的是不与其它事务因锁的存在而冲突。 2  在row_search_mvcc()、row_sel_get_clust_rec...

2017-03-13 19:11:58

阅读数 2159

评论数 1

MDL--元数据锁的锁请求与锁等待+元数据锁类对象

1 元数据锁的锁请求与锁等待     元数据锁在MySQL Server层,按照锁的状态被细分为两种,一种是已经施加的锁,一种是等待施加的锁即锁请求,这样被区分的原因,如MySQL对“class MDL_request”的代码注释作了解释: /**   A pending metadat...

2017-03-13 19:11:50

阅读数 1481

评论数 1

MySQL--MDL,元数据锁的粒度

MySQL Server层定义了如下的元数据锁的粒度,这些锁较多,超出了读锁和写锁两种锁粒度,这是因为读锁和写锁通常是理论上根据概念探讨的范畴,而在工程实践中会根据实际情况进行细化,以最大限度地提高并发度。 /**     Type of metadata lock request.  ...

2017-03-13 19:11:46

阅读数 963

评论数 0

事务的模型

事务的实现,在不同的数据库系统中是不同的,这是因为事务有着不同的模型,在Jim Gray的《事务处理概念与技术》一书的第四章事务模型中,把事务分为: q  平板事务(Flat Transactions):事务块中的所有SQL语句,构成一个逻辑单元,要么都成功,要么因之一失败都回滚。Postgre...

2017-03-13 19:11:41

阅读数 430

评论数 1

InnoDB定义的Mutex--02

InnoDB定义的Mutex的作用     在许多对象(如数据缓冲区、字典表、系统锁表、双写缓冲区等)上、在许多操作作用的对象(如事务、回滚段等)上,InnoDB都定义了很多系统锁,用以保护某个对象。这些系统锁,就是上一节讨论的Mutex。定义好的Mutex的具体作用,详情参见表11-5。  ...

2017-03-13 19:11:37

阅读数 527

评论数 1

InnoDB定义的Mutex--01

InnoDB定义的Mutex     InnoDB在ib0mutex.h文件中定义了六种自定义的Mutex如下: q  OSBasicMutex:OS的Event定义的Mutex,依赖于具体的OS;施加锁只尝试一次。如下面的初始化代码段等。 q  OSTrackMutex:继承自OSBasi...

2017-03-13 19:11:31

阅读数 487

评论数 1

InnoDB---深入理解事务提交--03

四 深入讨论:什么是“事务提交”?     在标题三中,我们认为InnoDB不符合预写日志机制,这是基于事务提交的标志设置是在刷出日志之前完成的,这一点,是基于InnoDB的代码实现的意图来下的结论。InnoDB认为在内存的状态设置了提交标志就算是“事务提交”完成了。     但是,传统的数据...

2017-03-13 19:11:27

阅读数 377

评论数 1

InnoDB---深入理解事务提交--02

三 为什么说InnoDB不符合WAL预写日志机制?     在标题二中我们提出这样的一个调用栈: innobase_commit_low(trx)     -> trx_commit_for_mysql()         -> trx_commit(trx)      ...

2017-03-13 19:11:23

阅读数 279

评论数 1

InnoDB---深入理解事务提交--01

当事务正常执行结束时,事务的提交操作,是实现事务原子性的主要操作之一,这个过程很重要。如下我们重点分析事务提交过程中一些重要环节。   一 事务提交的整体过程     InnoDB和MySQL Server联合实现了事务的提交全程,相关过程参见表10-2,在这个表里面,从上到下,是一个事务提...

2017-03-13 19:11:18

阅读数 399

评论数 1

InnoDB---UNDO日志与回滚

事务通过trx_rsegs_t与系统表空间和临时表空间等物理存储联系起来的方式如下: /** Rollback segments assigned to a transaction for undo logging. */ struct trx_rsegs_t {     /** und...

2017-03-13 19:11:13

阅读数 922

评论数 1

InnoDB---事务和并发控制相关的文件

<div style="mso-element:para-border-div;border:solid #CCCCCC 1.0pt;mso-border-alt: solid #CCCCCC .75pt;padding:4.0pt 31.0pt 4.0pt 4.0pt;backg...

2017-03-13 19:11:05

阅读数 316

评论数 1

长事务的管理

直观感觉,一个事务花费很长时间不能够结束,就是一个长的事务,简称长事务( Long Transaction )。在OLTP类型的数据库系统中,一个事务的执行时间通常会很短,所以不会感觉其执行时间漫长。 长事务的概念不一而足:在Oracle中,运行时间超过6秒的事务就被视为长事务。Informix...

2017-03-13 19:11:01

阅读数 3482

评论数 1

Orca优化器--基本结构和基本对象

1 Orca框架结构 1.1 Orca与database的关系    图一 Orca与数据的关系图   1.2 Orca内部架构   图二Orca内部架构图   说明:图一和图二源自Orca: A Modular Query Optimizer Architecture for ...

2017-03-13 19:10:54

阅读数 790

评论数 1

Greenplum Orca 优化器目录结构

├─cmake              构建相关├─data               测试数据├─libgpdbcost        代价模型│  ├─include│  │  └─gpdbcost│  └─src├─libgpopt│  ├─include         头文件│  │...

2017-03-13 19:10:49

阅读数 862

评论数 1

事务的属性--严格性(Strictness)

严格性(Strictness)     A schedule is strict - has the strictness property - if for any two transactions T1, T2, if a write operation of T1 precedes a c...

2017-03-13 19:10:45

阅读数 490

评论数 0

事务的属性--可恢复性(Recoverability)

可恢复性(Recoverability) Recoverability means that committed transactions have not read data written by aborted transactions (whose effects do not exist...

2017-03-13 19:10:40

阅读数 1334

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭