这一章看起来是讲存储引擎的.作者抱怨数据库被黑为“monolithic”.不可拆分为可复用的组件:但是实际上除了事务存储引擎管理模块,其他模块入解析器.重写引擎.优化器.执行器.访问方式都是代码相对独立的,他们提供窄接口(宽接口功能强大如Socket,窄接口单一职责入TcpListener)给其他模块调用.存储引擎一般有以下四个深深纠缠的组件:1. A lock manager,并发控制2. A log manager,恢复3. A buffer pool,数据库I/O分段处理4. Access…
<Anatomy of a Database System>这篇发表于87年.一共48页的论文据说是DBA入门必看,但是找了全网没有找到中文翻译.这篇文章对关系型数据库确实有提纲挈领的作用,看完能带来融会贯通的感觉,值得抄写一遍,如有任何抄写不当的地方请诸位看官留言. 1. 文章结构   文章把数据库划分为4块,chap2.4.5.6都对应上图每一块:chap3浅显的讲了磁盘存储的设计.     2. Process Manager 这一章讲数据库的并发模型,稍微翻下chap2的图片就能明白,…
查询解析 解析会生成一个查询的内部展示.格式检查包含在解析过程中. 每次解析一个SELECT,步骤如下:1. 从FROM里找到表名,转换成schema.tablename.这一步需要调用目录管理器catalog manager检查表是否在系统目录里,并将表的内部查询结构这类元数据缓存起来.2. 根据上一步缓存起来的信息,校验属性引用.在这一步中,属性类型用来确定函数.比较运算.常量表达式,举例说明,(EMP.salary * 1,15)<7500 这里乘法和比较符号对应的1.15和7500默认是…
公共模块 1. 使用基于上下文的内存分配器进行内存分配 除了教材里常提到的buffer pool,数据库还会为其他任务分配大量内存,例如,Selinger-style查询优化需要动态的规划查询:hashjoin和排序需要分配大量私有空间.正确管理内存给编程和性能带来挑战,商业数据库系统一般使用context-based基于上下文的内存分配器. context上下文是指一个包含了连续虚拟内存区域链表的内存数据结构:每个region区域包含一个头信息,头信息通过标签或指针指向上下文头信息. Cont…
使用裸设备,还是使用文件系统?   描述 pros cons 裸设备 顺序读磁盘快比随机要快10-100倍,DB比OS更懂磁盘负载,因此很多DB是直接管理数据块如何存放的. DB对裸设备的管理,比文件系统成熟得早,加上性能高,以及可忽略文件系统之间的差异,写裸设备也是推荐的. 要求DBA给DB划分整个磁盘: 同时裸设备接口随OS不同而不同,因此阻碍了商业化DB使用此方式: 最后裸设备不支持raid.san.nas.随着时间迁移,裸设备的优势已经不明显了. 文件系统 创建一个大文件,通过文件偏移量…
事务机制 事务(Transaction)是数据库区别于文件系统的重要特性之一.事务会把数据库从一种一致状态转换为另一个种一致状态.在数据库提交工作时,可以确保其要么所有修改都已经保存了,要么所有修改都不保存. InnoDB存储引擎中的事务完全符合ACID的特性. 原子性(atomicity) 原子性是指整个数据库事务是不可分割的工作单位.只有使事务中所有的数据库操作执行都成功,才算整个事务成功.如果事务中任何一个SQL语句执行失败,那么已经执行成功的SQL语句也必须撤销,数据库状态应该退回到执行…
1.事务                                                                                   1.1.事务的基本概念和使用示例 数据库事务,是指作为单个逻辑工作单元执行的一系列操作,要么完整地执行,要么完全地不执行. 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源.通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠.一个逻辑工作单元要…
一.事务控制 1.简单事务控制 redis可以使用mult命令将之后的命令都存放在队列中,只有使用exec命令时才全部执行. 127.0.0.1:6379> multi OK 127.0.0.1:6379> set age 10 QUEUED 127.0.0.1:6379> set age 20 QUEUED 127.0.0.1:6379> exec 1) OK 2) OK 127.0.0.1:6379> get age " 如果我们打过几条命令发现有错,可以使用d…
事务时需要在同一处理单元中执行的一系列更新处理的集合.通过使用事务,可以对数据库中的数据更新处理的提交和取消进行管理. 事务处理的终止指令包括COMMIT(提交处理)和ROLLBACK(取消处理)两种. DBMS的事务具有原子性(Atomicity).一致性(Consistency).隔离性(Isolation)和持久性(Durability)四种特性,统称为ACID特性. 举个例子,比如你在一个销售部门工作,这个时候领导分配给你一个工作: "zifeiy,我们决定把运动T恤的销售单价下调100…
2014-12-24 Created By BaoXinjian…