请使用支持现代 CSS 与 JavaScript 的浏览器播放课件
DBPA · 13.2

语言处理层与数据存取层

把 SQL 集合操作逐步转换为记录存取动作

VER. 2608.3 Built with impress.js

学习目标

完成本节后,你应该能够

  1. 01区分 DDL、DML 和 DCL 的处理重点
  2. 02说明数据字典如何支持名称解析、权限、约束和视图消解
  3. 03按顺序描述 DML 的分析、检查、优化和逐步束缚
  4. 04说明数据存取层向上提供元组原语、向下依赖缓冲区接口
  5. 05区分记录存取、事务、日志、控制信息、排序合并、路径维护和封锁子系统
  6. 06用更新索引的例子说明存取路径为何必须同步维护
2/12
LEARNING OBJECTIVES

语言处理层把用户语言转换成内部调用

三类数据库语言进入同一套分层处理

DDL、DML 与 DCL 经语言处理层进入内部调用

DDL

CREATE TABLECREATE VIEW:形成内部表示并登记数据字典

DML

SELECTINSERTUPDATEDELETE:检查、消解、优化并逐步束缚

DCL

GRANTREVOKE:登记权限定义,并参与执行时授权判断

Takeaway

三类语言都在语言处理层汇合,但 DDL、DML 和 DCL 的处理重点不同

3/12
LANGUAGE PROCESSING

DML 的四步束缚把集合表达变成记录原语

案例:SELECT Sno, Grade FROM HonorStudent WHERE Sno = '20180003'

DML 从 SQL 经过检查和优化变成记录存取原语
  1. 01分析与名称转换:把外部名称转换为内部名称
  2. 02字典检查与视图消解:检查语义、权限和约束,把视图转换为基本表操作
  3. 03选择存取方案:依据统计、索引和存储信息选择存取路径
  4. 04绑定记录原语:把集合操作落实为 FINDNEXTGET 等元组调用
4/12
DML BINDING

数据字典支撑语句的语义、权限和完整性检查

静态检查和执行时检查共同维护正确性;视图消解还要先读取视图定义

检查环节依据处理时机典型问题
词法/语法SQL 语言规则分析阶段语句结构错误
名称与语义关系、属性和类型定义处理阶段对象不存在或类型不符
权限用户与权限定义处理阶段,必要时运行时无权读取或更新
完整性约束和当前数据状态静态检查与执行时检查主码、参照或动态规则冲突
视图消解视图定义绑定前转换把视图操作转换为基本表操作
Takeaway

名称、类型和部分范围可在处理阶段检查;主码、参照完整性和动态规则通常还要在写操作执行时验证

5/12
DATA DICTIONARY CHECKS

数据存取层按元组落实执行方案

向上提供记录/元组接口,向下依赖系统缓冲区的页面和存储器接口

Takeaway

向上提供一次一个元组的导航式接口,逻辑存取路径可以是文件或索引;向下依赖缓冲区接口,不直接暴露物理块

6/12
DATA ACCESS LAYER

记录存取原语与事务原语组成执行接口

记录原语面向单个元组和逻辑存取路径;事务原语负责边界,不暴露物理块

定位与扫描

FINDFIRSTNEXTPRIORLAST

读取与更新

GETINSERTDELETEREPLACE

事务边界

BEGIN TRANSACTIONCOMMITROLLBACK

Takeaway

前两组负责记录访问,事务原语负责事务边界;逐步束缚把集合语句转换为有顺序的调用序列,结果取决于语义和存取路径

7/12
ACCESS PRIMITIVES

记录访问需要多个子系统协作

数据存取层由多个职责不同的子系统组成

子系统核心职责协作对象
记录存取与事务管理元组查找、更新和事务边界缓冲区、日志
日志登记写入日志并支持 UNDOREDO事务管理、恢复
控制信息管理读取数据字典和控制信息语言处理层
排序/合并有序输出、连接预处理和索引建立记录与路径
存取路径维护更新数据时保持索引一致数据更新
封锁子系统并发控制和锁表管理事务管理
Takeaway

更新带索引的记录时,记录存取与事务管理、封锁、路径维护和日志登记共同协作

8/12
FUNCTION SUBSYSTEMS

相关索引必须与表数据保持同一状态

更新元组时若遗漏相关索引维护,会产生错误存取路径

Takeaway

修改索引键时必须同步更新索引项;修改非索引属性时索引项可能不变。路径维护保证数据可访问,日志支持恢复,封锁支持并发,排序/合并支持有序输出和中间运算

9/12
PATH MAINTENANCE

本节回顾

语言处理层负责检查、消解和优化;数据存取层负责按记录执行并维护事务边界

检查

名称、权限、约束和视图消解

束缚

集合语句变成 FINDGETNEXT 等记录调用,并通过上下层接口传递

子系统

记录、事务、日志、排序、路径和封锁子系统共同完成一致的执行

Takeaway

视图查询 → 数据字典检查与视图消解 → FINDGETNEXT → 数据存取子系统协作;更新索引键时由路径维护保持表与索引一致

10/12
RECAP

本节知识地图

11/12
KNOWLEDGE MAP

本节问题

  1. 01给定 HonorStudent 视图查询,如何按顺序完成分析、检查、视图消解、优化和束缚?
  2. 02数据字典怎样支持名称、权限、完整性检查和视图消解?
  3. 03FINDGETNEXT 如何把集合请求变成记录访问?
  4. 04数据存取层的上下层接口连接什么?逻辑存取路径有何作用?
  5. 05ORDER BY 或连接何时需要排序/合并?
  6. 06更新索引键时,记录、事务、封锁、日志和路径维护如何协作?
12/12
CHECK YOUR UNDERSTANDING