钟嘉田DB2高级软件工程师IBM中国系统与科技研发中心
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
访问计划
数据库设计
SQL 请求 允许复制数据 Sensitive cursor 全局 统计信息 缓存 (7.1)
表的大小, 行数 (数据) 视图 和 索引 (Radix, EVI) 工作 管理 # 或作业 对分享资源
的竞争
性能调优所用的环境应该尽可能的接近生产环境!
9 © 2012 IBM Corporation
– 访问方法 Access path ITEM used for file 1 Key row positioning used on file 1 – 相关表以及索引的信息 • 根据表以及索引的变化,决定是否需要重建访问 计划 • 例如:自从上一次运行SQL请求后,表中的某一列 被删除了 – 任何程序信息以及/或环境信息 • 例如: 最后一次创建访问计划的时间,以及安装 DB2 SMP产品选项
访问计 划
• 较少的资源共享以及重用
在Prepare阶段不会制定访问计划 在第一次执行或者打开的时候制定访问计划
© 2012 IBM Corporation
IBM中国系统与科技研发中心 --- IBM i 实验室之旅
打开访问计划
访问计划有效性验证 IF无效, THEN 重新优化 & 更新查询计划(后期绑定)
IBM中国系统与科技研发中心 --- IBM i 实验室之旅
IBM i DB2应用性能优化技巧
钟嘉田, DB2高级软件工程师
IBM中国系统与科技研发中心
© 2012 IBM Corporation
IBM中国系统与科技研发中心 --- IBM i 实验室之旅
议程
准备知识 访问计划(SQL Access Plan) 开放数据通路(ODP) 嵌入式SQL程序优化技巧
© 2012 IBM Corporation
IBM中国系统与科技研发中心 --- IBM i 实验室之旅
静态 SQL
嵌入到应用程序中的非动态SQL语句 支持的语言:
– – – – RPG COBOL C, C++ SQL Procedural Language
• SQL embedded in C
– 通常无效的原因: • 引用了不同版本的表对象 (A1) • 表的行数发生了显著的变化 (A4) • 增加了索引 (A5) 或者 删除了索引 (A6) • 内存池大小发生了改变 (AB) CQE optimizer only rebuilds pla。。。。。。。。n when there has been a 2X change in memorySELECT pool size runtime estimate greater SELECT * FROM customers * and FROM customers than 2 seconds WHERE state=:HV1 WHERE state=:HV1 SQE optimizer only rebuilds plan with 2X change in memory pool si HV1 = 'NY' HV1 =a 'IA'
Host Server
Static
编译嵌入 语句
CLI /JDBC/ PHP
Extended Dynamic
提供第三方 使用(SAP)
Dynamic
Prepare & Execute
Native (Record I/O)
SQL Optimizer
DB2
(Data Storage & Management)
© 2012 IBM Corporation
IBM中国系统与科技研发中心 --- IBM i 实验室之旅
动态 SQL 接口
DB2 for i 实现动态SQL的接口: – CLI – JDBC – Net.Data – RUNSQLSTM – Interactive SQL (STRSQL) – PHP – SQLJ
© 2012 IBM Corporation
IBM中国系统与科技研发中心 --- IBM i 实验室之旅
SQL访问计划 (Access Plans)
© 2012 IBM Corporation
IBM中国系统与科技研发中心 --- IBM i 实验室之旅
访问计划
访问计划内容
一个包含了满足每个SQL请求所需行为的信息的控 制结构 这些信息包括:
IBM中国系统与科技研发中心 --- IBM i 实验室之旅
访问计划
Static SQL perspective
程序对象 (*PGM) 或 模块对象 (*MODULE)
源程序 w/SQL
SQL 预编译器 & 语言编译器
每个SQL语句会被 -Байду номын сангаас析 -语法验证 -优化 为这个查询语句制定访问计划
访问计 划
© 2012 IBM Corporation
IBM中国系统与科技研发中心 --- IBM i 实验室之旅
执行计划Access Plan
服务器配置 服务器性能 作业, 查询属性 (QAQQINI), 优化目标 (*FIRSTIO, *ALLIO)
服务器属性 操作系统版本
SMP degree 优化, *MAX
2
© 2012 IBM Corporation
IBM中国系统与科技研发中心 --- IBM i 实验室之旅
准备知识
© 2012 IBM Corporation
IBM中国系统与科技研发中心 --- IBM i 实验室之旅
SQL接口
ODBC / JDBC / ADO / DRDA / XDA
Network
– PL/I
IBM i 上高效的SQL接口
动态 SQL
SQL 语句作为应用程序逻辑的一部分动态的生成: PREPARE,EXECUTE 和 EXECUTE IMMEDIATE
DSTRING = 'DELETE FROM CORPDATA.EMPLOYEE WHERE EMPNO = 33'; EXEC SQL PREPARE S1 FROM :DSTRING; EXEC SQL EXECUTE S1;
– – – – – –
Embedded Dynamic SQL ODBC, OLE DB, .NET System i Navigator SQL requests REXX Query Manager & Query Mgmt DB2 Web Query
由于在执行前不能知道要执行怎样的SQL,因此性能开销相对与静态SQL大些。
SQE编译过程中不会创建访问计划 第一次执行时制定访问计划
© 2012 IBM Corporation
IBM中国系统与科技研发中心 --- IBM i 实验室之旅
访问计划
Dynamic SQL perspective
动态 SQL语句
作业的工作内存
每个 SQL 准备阶段: -解析 -语法验证 -优化 为该语句制定访问计划