DB2系统架构,SQL语句生命周期
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
db2sysc 是DB2数据库服务主进程
可用命令 “db2pd –edus”显示其工作线程
主要工作线程及功能
– db2tcpcm TCP侦听, db2ipccm IPC侦听
– db2agent 客户端服务线程,接受请求、编译、执行语句,返回结果
– db2pfchr 预读线程,从磁盘读页面到bufferpool
DATAGURU专业数据分析社区
COMMIT语句在DB2数据库中的处理过程
1. 客户端将语句发给Coordinator agent 2. Agent将COMMIT日志写入Log Buffer 3. Agent等待 Logger将Log Buffer中内容写入磁
盘 4. Logger写磁盘 5. Logger发送信号给等待中的Agent 6. Agent释放锁 7. Agent返回成功信号给客户端
Smith
3
Partition 0
Bill
M
Mary
F
Bill
1
Mary
1
Mary
2
Bill
2
Partition 1
DATAGURU专业数据分析社区
Zool
F
Zool
2
Zool
Partition 2
1
Zool
3
DB2 数据库架构
工作线程 及内存
DATAGURU专业数据分析社区
数据存储
DB2数据库基础存储单元-页面
Fast communication manager
Database Partition
data log
data log
Data
Log
data log
data log
DATAGURU专业数据分析社区
DB2 for OLAP (数据如何分布)
CREATE TABLE customer ( cust_id VARCHAR(20)
DB2数据库性能优化 第1课
- DB2系统架构,SQL语句生命周期
DATAGURU专业数据分析社区
本课目标
完成本课后,你应该能够
– 理解不同工作负载的区别(OLTP, OLAP) – 为不同工作负载选择合适的数据库功能版本 – 了解数据库内部基本结构:基本存储单元,工作线程,内存,功能部件 – 理解SQL语句在数据库引擎中处理的过程
Communication Memory Communication Memory
I
per local connection
13
DATAGURU专业数据分析社区
db2start
DB2内存-数据库内存区域
OVERFLOW
Package Cache Catalog Cache
Utility Heap
Database Heap
DATAGURU专业数据分析社区
INSERT语句在DB2数据库中的处理过程
1. 客户端将语句发给Coordinator agent 2. Agent检查Package cache中是否有已编译过的
该语句,没有的话编译并生成执行计划(access plan) 3. 将编译生成的执行计划保存到Package cache 4. Agent开始执行 5. Agent搜索能够存放的下该记录的数据页面 6. 找的到的话,将该页面从表空间对应的存储读 入Bufferpool(找不到需要分配新页面) 7. 在Lock list产生该行记录的X lock 8. 产生INSERT语句相关日志,并写入Log Buffer 9. 将记录写入Bufferpool中页面(此时该页面在内 存中内容与存储上不一致,称之为脏页面) 10. 将INSERT语句成功执行的返回码(sqlcode=0) 发送给客户端
Gender F M M M F
Sales cust_id Smith Smith Smith
Zool Zool
Hash(cust_id)
Qty 1 2 3 1 2
1
2
3
4
5
6
7
8
0
1
2
0
1
2
0
1
I
32768
2
0
customer
Smith
F
Woe
M
sales Smith
1
Woe
1
Smith
2
Woe
2
– db2pclnr 将脏页面写入磁盘
– db2loggw/ db2loggr 日志写入/读取线程
– db2stmm 自动内存调节
– db2dlock 死锁检测线程
DATAGURU专业数据分析社区
DB2内存
INSTANCE MEMORY (per partition)
Memory owned/allocated by db2sysc process
在存储及内存中的基本访问单元 主要分为数据页面,索引页面 大小4K, 8K, 16K, 32K OLTP系统更多随机IO ,避免页面更新冲突,倾向选择小页面;OLAP系统更看中顺序IO,通常选 择大页面
DATAGURU专业数据分析社区
数据页面结构及RID
Slot
剩余可用空间
删除记录后空 间,REORG之 后可用
DATAGURU专业数据分析社区
法律声明
【声明】本视频和幻灯片为炼数成金网络课程的教学资料 ,所有资料只能在课程内使用,不得在课程以外范围散 播,违者将可能被追究法律和经济责任。
课程详情访问炼数成金培训网站 http://edu.dataguru.cn
DATAGURU专业数据分析社区
炼数成金逆向收费式网络课程
Tran DB2
Log
Database
Core DB2
DATAGURU专业数据分析社区
Single Database View
Tran 1
Tran 2
Tran 3
DB2
DB2
DB2
Log
Shared Data Access
DB2 pureScale Data Sharing
- Ideal for active/active OLTP/ERP scale out
Overflow Reserved
LOCKLIST
Shared Sortheap
BUFFERPOOLS
Blue areas denote committed memory
DATABASE MEMORY DATAGURU专业数据分析社区
数据库是耗用内存最大的地方, 通常将内存分配给 BUFFERPOOLS及 SORTHEAP 原则是使操作系统有剩余的可 用物理内存,不要用到paging space
DATAGURU专业数据分析社区
OLTP与OLAP对比
用户 功能 DB 设计 数据 存取 工作单位 用户数 DB 大小 时间要求 主要应用
OLTP 操作人员,低层管理人员 日常操作处理 面向应用 当前的, 最新的细节的, 二维的分立的 读/写数十条记录 简单的事务 上千个 100MB-GB 具有实时性 数据库
OLAP 决策人员,高级管理人员 分析决策 面向主题 历史的, 聚集的, 多维的集成的, 统一的 读上百万条记录 复杂的查询 上百个 100GB-TB 对时间的要求不严格 数据仓库
来源: http://baike.baidu.com/link?url=rOI_OV_l1bBN46vfsKOHaNxeRpUEBQhz4qNxdqY4It3yDoRl6-6Kw4yoT2fu9_LU_5b2wJldjuhdoq05IKz1xq
Page 473
Page Header
3800 -1 3400
Record 2 Record 0
page# 1056
Page 1056
Page Header
3800 3700
slot#
1 RID
473,2
Record 0
RID (Row ID) 可指向唯一一条记录,物理存在于索引页面,或数据页面中有记录溢出的位置。有三 种大小的RID, 4字节,6字节及8字节,与表空间属性及表是否做RANGE分区有关
DB2 for OLTP
Core DB2 DB2 pureScale 用于可用性要求很高,处理能力需要水平扩展的系统
DATAGURU专业数据分析社区
DB2 for OLAP
DB2 DPF (Data Partitioning Feature) – Shared Nothing Architecture 数据库由多个数据库分区构成 每个数据库分区可运行在不同的节点上 每个数据库分区拥有独立的资源 (Engine, LogMg., LockMg., Caches, etc.) SQL任务可以在所有分区上并行处理 分区数据库对用户和应用而言是透明的
DATAGURU专业数据分析社区
索引页面及B+树索引结构
Page 287
Page Header
Slot
3800 3700
Key value:RID Key value: RID,RID
SELECT * FROM t1 WHERE id=170
DATAGURU专业数据分析社区
DB2进程与线程
DB2自V9. 5之后使用多线程模式
DATAGURU专业数据分析社区
DB2主要功能版本
Single Database View SQL 1
SQL 1’
DB2
SQL 1’’
DB2
SQL 1’’’
DB2
Log
Part 1
Log
Part 2
Log
Part 3
DB2 Data Partitioning Feature
- Ideal for warehousing and OLAP scale out and massively parallel query processing
关于逆向收费式网络的详情,请看我们的培训网站 http://edu.dataguru.cn
DATAGURU专业数据分析社区
DATAGURU专业数据分析网站
FAQ时间
,gender CHAR(1)) DISTRIBUTE BY HASH(cust_id);
CREATE TABLE sales (
cust_id VARCHAR(20)
,qty
INTEGER)
DISTRIBUTE BY HASH(cust_id);
Custom e r cust_id Smith Bill W oe Zool Mary
DATAGURU专业数据分析社区
课后作业
pureScale适合什么类型的应用? OLAP系统关键的设计要求是什么? DB2是多进程模式还是多线程模式? db2agent有哪些功能? DB2中内存主要应该分配给哪些区域? Package cache有什么作用? DB2锁在什么时候出现,保存在什么地方,什么时候释放?
DBMS memory FMP memory
db2start
Database A Memory
APPL Memory
Database B Mຫໍສະໝຸດ Baidumory
APPL Memory
Private Memory
database activation
I
三类内存 实例内存 数据库共享内存 私有内存
LOCAL
LOCAL
– (炼数成金)是专业数据分析网站,提供教育,媒体,内容,社区,出版,数据分析业务等服务。我们 的课程采用新兴的互联网教育形式,独创地发展了逆向收费式网络培训课程模式。既继承传统教育重学 习氛围,重竞争压力的特点,同时又发挥互联网的威力打破时空限制,把天南地北志同道合的朋友组织 在一起交流学习,使到原先孤立的学习个体组合成有组织的探索力量。并且把原先动辄成千上万的学习 成本,直线下降至百元范围,造福大众。我们的目标是:低成本传播高价值知识,构架中国第一的网上 知识流转阵地。
SELECT语句在DB2数据库中的处理过程
1. 客户端将语句发给Coordinator agent 2. Coordinator agent检查Package cache中是否
有已编译过的该语句,没有的话编译并生成执 行计划(access plan) 3. 将编译生成的执行计划保存到Package cache 4. Coordinator agent开始执行,调用Subagents 做并行扫描及排序 5. Subagents发送异步读请求给Prefetchers 6. Prefetchers将数据页面从表空间对应的存储读 入Bufferpool 7. Subagents从Bufferpool读取数据并排序 8. Coordinator agent将排好序的记录发给客户端