数据库系统实现 第一章 DBMS实现概述
DBMS提供的能力
1)持久存储 DBMS在灵活性方面比文件系统要好,同时支持对非常大量数据的存储
2)编程接口
3)事务管理 DBMS支持对数据的并发存取,即多个不同的进程(称作事物)同时存取操作,事物具有原子性。DBMS还需要有恢复能力
数据库管理系统概述
DBMS有两个不同的命令来源:
1)普通用户和应用程序,他们对数据进行访问与修改
2)数据库管理员,负责建立数据库的结构与模式的人
查询处理概述
查询会沿着以下两条路径进行
查询响应
1)用户传命令给查询编译器
2)查询编译器对查询进行分析和优化,得到查询计划
3)动作序列传给执行引擎
4)执行引擎向资源管理器发出一系列对于小数据单元的请求。
5)资源管理器掌握着数据文件的数据格式,大小,索引文件等,查找数据的请求会被翻译成对页面的请求
6)请求被传送到缓冲区管理器
7)缓冲区管理器负责将数据从第二级存储器传到主存的缓存区
事物处理
事物处理器分成两个部分
a)并发控制管理器,保证事物的原子性与孤立性
b)日志和恢复管理器,负责事物的持久性
一个或多个操作组成一组,称为事物,事物处理器从操作系统得到命令,从而知道什么时候事物开始,什么时候结束。事务处理器执行以下任务
1)日志记录
2)并发控制,一般通过加锁实现
3)死锁解决,资源竞争而引发死锁的时候需要终止一个或多个事物从而使其他事物进行下去
事物的ACID属性
A:原子性(Atomicity)即事物完全执行或完全不执行
C:一致性(Consistency)
I:隔离性(Isolation),表面上看起来事物都是在没有其他事物同时执行的情况下执行的
D:持久性,事物完成之后的影响不会丢失
查询处理器
查询处理器对数据库性能的影响是最大的,它分为两个部分
1)查询编译器,将查询翻译成一种内部形式,称为查询计划。查询编译器包括三个部分
a、查询分析器,将查询命令建立为一个树结构
b、查询预处理器,对查询进行语义检查(例如检查查询中的关系是否存在),进行某些树结构转换,将分析树转换为代数操作符树
c、查询优化器,将最初的查询计划转换成对实际数据操作的最有效的操作序列
2)执行引擎,负责执行查询计划的每一步。执行引擎与DBMS中的大多数其他成分都有交互,或直接交互,或通过缓冲区。
数据库系统实现 第一章 DBMS实现概述的更多相关文章
- 《驾驭Core Data》 第一章 Core Data概述
<驾驭Core Data>系列教程综合了<Core Data for iOS>,<Learning Core Data for iOS>,<Core Data ...
- javaSE习题 第一章 JAVA语言概述
转眼就开学了,正式在学校学习SE部分,由于暑假放视频过了一遍,略感觉轻松,今天开始,博客将会记录我的课本习题,主要以文字和代码的形式展现,一是把SE基础加强一下,二是课本中有很多知识是视频中没有的,做 ...
- 第一章、Django概述
目录 第一章.Django概述 一.了解软件开发架构 二.HTTP协议 三.响应状态码 四.请求方式 五.基于wsgiref模块 六..动静态网页 七.python三大主流web框架 八.安装Djan ...
- 第一章 Windows内核概述
第一章 Windows内核概述 这一章节描述了Windows内核知识中最重要的几个概念,这些话题在这本书之后会有更详细的描述,那些会与当前的主题密切相关.要确保你理解这个章节的概念,因为这些概念构成了 ...
- Java核心技术(Java白皮书)卷Ⅰ 第一章 Java程序设计概述
第1章 Java程序设计概述1.1 Java程序设计平台 具有令人赏心悦目的语法和易于理解的语言,与其他许多优秀语言一样,Java满足这些要求. 可移植性 垃圾收集 提供大型的库 如果想要有奇特的绘 ...
- [编程笔记]第一章 C语言概述
//C语言学习笔记 第一讲 C语言概述 第二讲 基本编程知识 第三讲 运算符和表达式 第四讲 流程控制 第五讲 函数 第六讲 数组 第七讲 指针 第八讲 变量的作用域和存储方式 第九讲 拓展类型 第十 ...
- Node入门教程(2)第一章:NodeJS 概述
Node 概述 什么是 Node Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. Node.js us ...
- 【程序员翻身计划】Java高性能编程第一章-Java多线程概述
目标 重点: 线程安全的概念 线程通信的方式与应用 reactor线程模型 线程数量的优化 jdk常用命令 Netty框架的作用 难点 java运行的原理 同步关键字的原理 AQS的抽象 JUC的源码 ...
- {java学习}[第一章]软件开发概述(2017.1.11).
随机推荐
- CSS基础知识总结二
<!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/html"> ...
- 在使用mybatis中指定字段查询
1:需求:查询学过“叶平”老师所教的所有课的同学的学号.姓名: List<Map<String,Object>> selectYepingAllCourse(@Param(&q ...
- bzoj 做起走 -- bzoj 1009 GT 考试
现在每次做一道bzoj上的题,整个人都感觉升华了... 先是在网上各种搜题解.要么只有代码,要么有点讲解看不懂,对于从来没有耐心看完别人代码的我,只能一篇一篇的翻..然后终于在某2011级同学的某段话 ...
- oracle sql查询表外键关系
SELECT F.TABLE_NAME, F.CONSTRAINT_NAME, F.COLUMN_NAME, F.POSITION, P.TABLE_NAME, P.COLUMN_NAME, P.PO ...
- PHP不使用内置函数intval(),实现字符串转整数
平时我们用PHP时,将字符串转化为整型时,一般都是使用 intval() 内置函数,那么如果我们自己写,怎么写一个呢? 此时我们可以利用 ASCII 码计算得整数的特性,因为每个字符都对应一个 ASC ...
- Sparse PCA: reproduction of the synthetic example
The paper: Hui Zou, Trevor Hastie, and Robert Tibshirani, Sparse Principal Component Analysis, Journ ...
- 用C#调用C++DLL提示找不到DLL解决方法【转】
用C#调用自己写的C++ DLL(x64),总是提示找不到DLL,调试可以,发布release老是提示找不到DLL(dll文件确定存在) 原因:Visual C++的DLL分发方式没选:调试默认选择: ...
- Vagrant 入门 - 项目设置
原文地址 配置 Vagrant 项目的第一步是创建 Vagrantfile 文件.Vagrantfile 文件的目的有两个: 设置项目的根目录.Vagrant 中的许多配置选项是相对于这个根目录的. ...
- Python算法每日一题--002--求众数
给定一个大小为 n 的数组,找到其中的众数.众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素. 你可以假设数组是非空的,并且给定的数组总是存在众数. 示例 1: 输入: [3,2,3]输出: 3示 ...
- git不能先commit后再pull
本文首发hilsion的博客 今天遇到一个在使用git上的一个误区.具体的问题现象是: 我commit后再pull而不能在本地合并的情况,结果导致我的commit直接把同事的修改覆盖了.因为相对于我此 ...