公司技术沙龙讲座--DB2的经验分享
DB2最佳实践:使用虚拟化来提高数据服务器利用率和对数据服务器的管理

DB2最佳实践:使用虚拟化来提高数据服务器利用率和对数据服务器的管理本文描述了在 IBM System p 上部署 IBMDB2 V 9 产品的最佳实践。
当你在 System p平台上运行DB2 产品,选择合适的混合虚拟功能和它们的配置达到商业目标,同时提高 IT资源的利用率是一个很大的挑战。
可以达到的商业目的是减少管理、电力、冷却、或者室内面积成本、巩固数据库服务器。
内容提要本文描述了在 IBM System p 上部署 IBM DB2 Version 9 产品的最佳实践。
当你在 System p 平台上运行 DB2 产品,选择合适的混合虚拟功能和它们的配置达到商业目标,同时提高IT 资源的利用率是一个很大的挑战。
可以达到的商业目的是减少管理、电力、冷却、或者室内面积成本、巩固数据库服务器。
例如通过优化 DB2 产品性能来增加资源利用率、增加处理器利用率、分享系统资源、在不重启的情况下使用动态资源分配,以及使用工作负载管理。
本文描述了 System p 的主要虚拟化技术,关注选择的逻辑分区类型,磁盘 I/O,和网络接口,都是工作负载管理。
以下简要描述的主要考虑因素,在本文中讨论了在这方面的主要考虑以及它们如何能够让你的业务受益。
逻辑分区类型由于基于预测的活动高峰值,大多数硬件系统严重的利用率不足,今天的企业不断面临的挑战是使系统处理器的平均使用率更高以最大化投资回报率(ROI)。
企业能高效巩固多个数据库共存在不同的物理服务器,或者在单台物理机器上共享处理器分区上的专用分区。
这共享了处理器资源,平衡了高峰和平均操作情况下的处理器请求,降低总的拥有成本(TCO)。
可以为每一个处理器分区分配服务质量来保证在较低优先级的工作负载可以获得最优基础资源时,更为重要的工作负载在需要的时候总能得到处理器资源。
在不同的共享处理器分区处理测试和生产应用程序,也能有助于提高测试结果质量像测试环境如实的模拟生产环境。
让DB2跑得更快——DB2内部解析与性能优化

精彩节摘
9.3如何定位及修复内存泄漏
在怀疑遇到内存泄漏的问题之前,必须谨慎地判断当前数据库中是否真实存在内存泄漏。判断数据库中存在 内存泄漏时需要注意以下几点:
系统中的内存在逐渐减少,甚至导致换页(paging);
SQL语句越来越慢(经常是换页导致);
随着时间增长,由DB2分配的内存在不断增加。
第3篇性能分析及内部原理剖析
第4章对优化器的原理进行了探讨,阐述了优化器的重写机制、优化原理及编译原理,并介绍了如何检查优化 器的估算结果的两种方法。
谢谢观看
并在DB2China数据库论坛担任热点讨论版块版主,主持多次热点讨论以及专家现场诊断,擅长DB2数据库及 相关产品的性能调优及故障分析,对DB2技能及实践经验有多年积累。
近年来多位业界专家一直在积极推动DB2领域的技术交流,真正理解DB2技术人员真正的需求与痛楚,是DB2 系统知识及技巧精髓的热心分享者及贡献者。
而我本人正是一名数据的信徒,多年来在著书、培训、咨询和管理等多项工作中,始终在数据的海洋中忘我 与痴迷。在受邀为本书作序之时,我回想起五年前正埋头于写作的我。那时,每日工作繁忙,仍笔耕不辍,把之 前在数据库领域的各项工作中所获得的技术积累、经验总结都尽可能地通过文字展现给读者。自认为写数据库的 书很苦,写DB2的书更苦,在出版多部著作之后,我对优秀数据库著作的评判标准,可以套用新闻界的行话: “如果事件报道得不够好,那是因为离得不够近”。
在常见的数据库问题中,性能问题不仅出现的频率较高并且很多生产系统中并不存在一个对性能问题进行隔 离的高可用机制,正因为如此,在很多关键行业的系统中,性能问题往往成为影响生产系统正常运行的最大因素。 而性能问题的影响时间有时长达数小时,这样不仅给生产系统带来了极大的负面影响,也使业务很难正常进行。
DB2命令实用技巧

DB2命令实用技巧DB2 命令实用技巧2021-09-16 13:23:59| 分类:开发学习|字号订阅1.db2里面的字符串连接可用\这个进行连接2.如何快速删除大批量的数据表(test为数据库表)最常用也是最多人用的语句:delete from test,但这种做法,效率比较低,花费时间太长,因为在删除数据时,要记数据库日志。
import from /dev/null of del replace into test//先清空,再导入数据(由于导入的文件为空,故相当于清空表数据),这种删除的速度较快ALTER TABLE test activate NOT LOGGED initially WITH EMPTY TABLE ;删除表中的数据,不记日志,这种处理最快3.导入、导出数据,支持的文件有ixf,del文件db2 \db2中把表中的数据导入到文件db2 \db2中把文件中的数据导入到表4.DB2中检查表是否已存在select * from \5.处理db2锁表问题:db2 “connect to afa”db2 “get snapshot for locks on 实例名” db2 “terminate”然后查看相关信息,找到被锁定的表,执行以下语句:db2 “force application(application handle) 注:application handle对应的是一个整数6.在服务器上创建存储过程时:应为存储过程指定特定的换行符,然后执行下面的语句: db2 -td@ -vf fileName.sql (其中@为存储过程中指定的换行符)7. 查看索引是否起作用runstats on table afa.yj_jywtk with distribution and detailed indexes all;家在应用DB2的时候可能会遇到一些看似简单的问题,特别对新手来说,我在此简单的总结一下,发布给大家,希望对大家能有所帮助,同时也欢迎大家一起探讨,共同发展,共同进步! 以下主要以DB27.X为基础的.以下的字符为小写. 本文对DB2高手来说是不用看的. 1.DB2产品的级别有那些? 企业版的NTERPRISEEDITION 工作组版WORKGROUPEDITION企业扩展版ENTERPRISEEXTENDEDEDITION 个人版的PERSONALEDITION 卫星版的SATELLITEEDITION 微型版的EVERYPLACE2.可以连接到DB2数据库的产品有哪些? DB2客户端 DB2CONNECTDB2DATAPROPAGATOR DB2NET.DATA DB2DATAJOINERDB2RELATIONALCONNECT WEBSPHERE应用服务器等3.DB2支持的通讯协议有哪些? TCP/IP NETBIOS APPG IPX/SPX NAMEPIPE 等4.DB2客户端产品有哪些?DB2运行时间客户端DB2RUNTIMECLIENT DB2管理客户端DB2ADMINISTRATIONCLIENTDB2应用程序开发客户端DB2APPLICATIONDEVELOPMENTCLIENT DB2瘦客户端DB2THINCLIENT5.一个数据库是否可以安装在多个数据库服务器上? 可以6.从哪个版本后存储过程可以用SQL语句来创建?7.1版后7.DB2提供哪些关系扩展器? 文本扩展器TEXTEXTENDER 图象扩展器IMAGEEXTENDER 音频扩展器AUDIOEXTENDER 视频扩展器VIDEOEXTENDER 空间数据扩展器SPATIALEXTENDER XML扩展器XMLEXTENDER网络搜索扩展器NET.SEARCHEXTENDER8.WINDOWS和OS/2环境下的DB2安装目录结构? 用SETUP.EXE来安装\\SQLLIB安装的根目录,包括README文件\\SQLLIB\\ADSM包含ADSTAR分布式存储管理器文件 \\SQLLIB\\BIN包含DB2工具的可执行文件 \\SQLLIB\\BND包含DB2工具的绑定文件 \\SQLLIB\\CC包含运行控制中心所需的文件 \\SQLLIB\\CFG包含默认的系统配置文件 \\SQLLIB\\CONV包含代码页转换表文件 \\SQLLIB\\DB2默认的实例目录\\SQLLIB\\DB2DAS00缺省的DB2管理服务器目录 \\SQLLIB\\DOC包含DB2联机手册\\SQLLIB\\FUNCTION默认的用户自定义函数目录\\SQLLIB\\FUNCTION\\UNFENCED默认的非隔离用户自定义函授目录\\SQLLIB\\HELP联机帮助文件 \\SQLLIB\\JAVADB2所需的JAVA类库JAVA12包含JDK1.2的支持程序\\SQLLIB\\MISC包含HTML搜索服务器文件 \\SQLLIB\\MSG\\PRIME包含信息文件\\SQLLIB\\QP包含QUERYPATROLLER的客户端文件 \\SQLLIB\\SAMPLES包含样例程序和样例脚本 \\SQLLIB\\SPMLOG包含DB2同步点管理器日志文件\\SQLLIB\\THNSETUP包含瘦客户端安装文件9.UNIX和LINUX环境下的DB2安装目录结构? 用DB2SETUP.EXE来安装安装的根目录下还将创建以下目录:README安装的根目录,包括README文件 ADM包含系统管理工具文件ADSM包含ADSTAR分布式存储管理器文件 BIN包含DB2工具的二进制可执行文件BND包含DB2工具的绑定文件 CC包含运行控制中心所需的文件 CFG包含默认的系统配置文件 CONV包含代码页转换表文件 DOC包含DB2联机手册FUNCTION默认的用户自定义函数目录FUNCTION\\UNFENCED默认的非隔离用户自定义函授目录 INSTALL包含安装程序INSTANCE包含实例脚本 JAVADB2所需的JAVA类库 LIBDB2库文件MAP包含DB2CONNECT使用的映射文件 MISC包含HTML搜索服务器文件 SAMPLES 包含样例程序和样例脚本 MSG\\$L包含DB2信息文件 10.AIX下用哪个命令来安装DB2? INSTALLP命令11.同一操作系统下可以安装多个DB2数据库? 可以的12.如何停止实例? DB2STOP13.如何启动实例? DB2START14.如何修改注册项的值? DB2SET可以修改如:设定当前实例的一个参数 DB2SETPARAMETER=VALUE设定一个全局级的参数DB2SETPARAMETER=VALUE-G(小写)查看能在配置文件注册表中设置的所有变量的列表 DB2SET-LR(小写)15.如何在CLP执行操作系统的命令? 在命令前加\作为前缀 DB2=>!DIRC:\\16.在CLP中命令过长怎么办? 用\作为续行符号17.如何获得DB2的命令的语法相关信息? DB2?显示所有DB2命令 DB2?COMMAND 显示命令信息DB2?SQLnnnn显示这个SQLCODE的解释信息 DB2?DB2nnnn显示这个DB2错误的解释信息18.如何查看当前CLP的设置? DB2=>LISTCOMANDOPTIONS19.如何更新当前CLP会话的特定项设置?DB2UPDATECOMMANDOPTIONSUSINGOPTIONS...感谢您的阅读,祝您生活愉快。
DB2培训文档.pptx

© 2006 IBM公司
IBM 软件部 | DB2 信息管理软件
调用者过程find_emp通过 get diagnostics取得被调用 者的返回值,get diagnostics 必须是紧跟在call语句之后
TIP:通过返回值判断 执行状态回结果集
存储过程中的结果集可以返回给别的存储过程,也可以返回 到客户端的应用程序。
定义游标的语法如下: declare <cursor-name> cursor [with hold] with return to caller [client] for <select statement> [stmt name]
IF ( v_total >= v_min ) THEN
SET p_bonus = 'Y'; ELSE
SET p_bonus = 'N'; END IF; END bn
© 2006 IBM公司
IBM 软件部 | DB2 信息管理软件
✓传递参数
在存储过程嵌套调用过程中,参数依照出现的次序进行传递,如果数据类型不匹 配,请使用cast函数进行数据类型转换;
ELSEIF ( v_rc = 1000 ) THEN
SET p_output = 'The employee does not exist!';
ELSE
SET p_output = 'Something else went wrong.';
END IF;
END fe
--(1) --(2)
© 2006 IBM公司
© 2006 IBM公司
DB2经验总结

"OP_TIME_DTL" VARCHAR(16),
"OP_MONTH" VARCHAR(10),
"DELeabharlann T_NAME" VARCHAR(20),
"ZB_NAME" VARCHAR(50),
"ZB_CNT" DECIMAL(18, 6)
where date(substr(stat_month,1,4)||'-'||substr(stat_month,5,2)||'-01')-date(substr(char('%s'),1,4)||'-'||substr(char('%s'),5,2)||'-01')<-500
17.插入数据前创建索引会影响插入数据的速度。所以在插入数据后进行索引,创建索引后要RUNSTATS,这样索引才能生效。(ORACLE则不用)
</Hierarchy>
</Dimension>
<Dimension name="入网月份">
<Hierarchy hasAll="true" allMemberName="所有">
<Level name="入网月份" column="OP_TIME" uniqueMembers="false" type="String" orderDESC="true"/>
db2的使用

db2的使用DB2是IBM公司开发的关系型数据库管理系统,它可以运行在多个操作系统平台上,如Windows、Linux、Unix和IBM的主机操作系统等。
DB2的功能非常强大,可以用于各种企业级应用程序的开发和部署。
在本文中,我们将详细介绍DB2的使用,包括安装、配置、管理和编程等方面。
一、DB2的安装和配置1、先前准备(1)确定需要安装的DB2版本和操作系统平台,以及应用场景和需求;(2)确保计算机符合DB2的最低系统要求,包括硬件和软件配置等;(3)获取适用于操作系统的DB2安装介质,可以从IBM官网或授权渠道获取。
2、安装过程(1)下载安装介质并解压缩至指定位置;(2)运行安装程序,按照提示进行安装,可以根据需要选择安装路径和组件;(3)在安装向导中选择“完整安装”,可以安装DB2服务器、客户端、控制台和示例数据库等组件;(4)在安装向导中设置DB2实例的参数,如实例名称、端口、用户名和密码等,这些参数将决定DB2服务器的启动和运行方式;(5)完成安装后,可以通过命令行或控制台查看DB2实例状态,控制服务器的启停和配置。
3、基本配置(1)启动DB2服务器可以通过控制台或命令行方式启动DB2服务器,如下:Linux/Unix平台:db2startWindows平台:db2cmd,进入命令行模式,输入db2start启动服务器。
(2)连接DB2实例db2 connect to DATABASE user USERNAME using PASSWORDDATABASE为数据库名称,USERNAME为用户名,PASSWORD为密码。
(3)创建数据库db2 create database DATABASEDATABASE为数据库名称。
(4)设定权限和用户PRIVILEGE为权限名称,USER为用户名,OBJECT为对象名称。
二、DB2的管理1、数据库的备份和还原2、数据库的维护TABLENAME为表名称。
公司技术沙龙讲座--DB2的经验分享
a)设置当前会话不自动提交
b)设置当前锁等待时间(lock timeout [not wait | :number])
2021/4/6
6
c)设置当前数据库停顿
9、使用merge对多张表进行合并
10、常用的OLAP(online analytical processing)在线分析 函数
• ROW_NUMBER • RANK • COUNT • MIN • AVG • SUM
改善insert出现的锁超时:使用DB2_SKIPINSERTED环境变量
导致死锁:tran1 lock A , tran2 lock B | tran2 lock A , tran1 lock B
改善死锁最根本的还是需要针对应用的以上这种情况进行调整
8、常用的会话级命令 语法:Байду номын сангаасdb2 ? update command options db2 ? set current
2021/4/6
7
制造测试数据
1、递归SQL语法和基本概念
递归 SQL 在 DB2 中通过公共表表达式 (CTE,Common Table Expression) 来实现。递归 SQL 由递归 CTE 以及对递归 CTE 结果 的查询组成。那什么是递归 CTE 呢?简言之,如果 CTE 中的 FULLSELECT 在 FROM 子句中引用到 CTE 本身,就是递归 CTE。递 归 CTE 包含以下三个组成部分:
Size = 25 byte Size = 28 byte
… Row Data n
OX11 ROW DATA
清单3 更新Row1 后的页
Row Data 1 Row Data 2
Size = 30 byte (由于UPDATE后,COL3在原来的基础上增加了5个字节) 出现了OVERFLOW,接着COL3页上保存下一表空间页的指针地址
DB2入门培训讲义
五、数据库系统效能
几张关键的系统表
SYSCAT.TABLES SYSCAT.COLUMNS SYSCAT.COLDIST SYSCAT.INDEXES SYSCAT.TABLESPACES
RUNSTATS 索引
建立索引的方法 where条件的索引的顺序 索引的副作用
DB2安装、使用
Windows 下的安装、使用
仅安装客户端 DB2 Connect 安装服务器端 DB2 PE Server + DB2 Connect
RS/6000下的安装、使用
如RS/6000上已安装DB2,则只要在登录用户的profile中引用db2inst1的 profile或手工添加相应环境变量,即可使用DB2,前提是DBA已授权此用户 足够权限。
DB2 UDB中的标准SQL设施
View SQL存储过程 触发器 事务处理 索引
DB2 数据库中的模式名 - SCHEMA
模式是一个标识符,如用户 ID, 它帮助分组表和其他数据库对象。模 式可以归个人拥有,拥有者可以控制对数据以及其中的对象的存取。
模式也可以是数据库中的对象。它可以在创建模式中的第一个对象时 自 动创建。这样的对象可以是任何可以由模式名限定的对象,如表、索引、 视图、程序包、单值类型、函数或触发器。若要自动创建模式,则您必 须 拥有 IMPLICIT_SCHEMA 权限,也可以隐式地创建模式。 模式名用作两部分对象名的第一部分。创建一个对象时,可将其分配给 特定模式。若不指定模式,则它被分配给缺省模式,缺省模式通常是创 建该对象的人员的用户 ID。名称的第二部分是对象名。例如,名为 Smith 的用户可以 有一个名为 SMITH.PAYROLL 的表。 简单的比喻:假如DB等同于公司,模式相当一个部门名称。
新员工培训--DB2数据库基础
面向成功
开放交流
协作创新
价值提升
SQL介绍—SQL基础—delete delete
删除表中符合条件的记录
语法:DELETE FROM 表名称 where …;
面向成功
开放交流
协作创新
价值提升
SQL介绍—SQL基础—select select
查询表中符合条件的记录
语法:SELECT 字段1,… FROM 表名称 where …;
连表查询
內连接 join,inner join select a.*,b.* from a join b on a.字段1=b.字段1 where … 结果:a表、b表中都存在的记录。 外连接 左外连 left join ,left outer join select a.*,b.* from a left outer join b on a.字段=b.字段 结果:a表记录都保留 右外联 right join ,right outer join select a.*,b.* from a right outer join b on a.字段=b.字段 结果:b表记录都保留 面向成功 开放交流 协作创新 价值提升
随需应变
快速构建
卓越品质
成就你我
2013中创软件新员工培训
DB2数据库基础
中创软件
2013年7月
培训提纲
一、DB2 数据库的构成
二、SQL介绍 三、DB2的安装 四、操作练习
面向成功
开放交流
协作创新
价值提升
DB2构成—什么是数据库系统 数据库系统是由数据库及其管理软件组成的系统。
数据库
存储在计算机内的、有组织、可共享的数据集合。
(转)Db2数据库性能优化中,十个共性问题及难点的处理经验
(转)Db2数据库性能优化中,⼗个共性问题及难点的处理经验为了帮助⼤家更好地进⾏DB2的性能优化,社区组织社区专家针对⼀些共性问题及难点分享经验。
以下内容来⾃活动“Db2数据库性能优化经验交流”,主要由以下社区专家及会员分享:leilin、topzgm、岳彩波、beyondmch、yellow-fin等提醒:⽂章末尾有彩蛋,如果你是Db2达⼈,可不要错过~01如何发现性能问题?通过什么定位?1、收集信息。
2、分析3、找到问题点解决第⼀步操作系统级别性能CPU监控:ps -elf | sort +5 -rn | more 第6列代表CPU使⽤的计数器I/O使⽤率:iostat -D 收集磁盘I/O信息内存占⽤率:讨论的内存指的是虚拟内存(virtual memory),包括物理内存(physical memory)与交换空间(swap space)vmstat -> avm 当前系统中已经激活的虚拟内存页的数量(该数值不包含⽂件系统缓存)vmstat -> fre 系统中平均空闲页的数量(不能完全代表系统中可⽤的空闲内存:⽂件系统缓存驻留内存,并不会返还给空闲列表,除⾮被虚拟内存管理器盗取)svmon -> clnt与in use交叉项代表有多少内存被⽂件系统使⽤(加上free项,可以初步认为是该系统中可以被应⽤程序所使⽤的内存)第⼆步数据库级别性能1. db2grep -dump | more 查看服务器安装了⼏个DB2版本2. ps -elf | grep db2inst1 查看数据库进程的CPU计数器3. db2 get dbm cfg | grep -i dft_mon 确认快照打开4. 实例级快照,了解当前实例有多少应⽤程序在执⾏db2 get snapshot for database manager -> Remote connections & Local connections5. 数据库级快照连接数信息:applications connected currently,appls executing in db manager currently锁信息:锁总数,锁等待数量,锁等待总时间,当前数据库锁列表占⽤内存,死锁次数,锁升级次数,锁超时次数排序信息:排序是CPU杀⼿,过多的排序会造成CPU的极⼤消耗;排序溢出是说,如果排序堆⽆法容纳排序数据,就会被溢出到临时空间;排序是⼀种状态,根源在SQL语句;数据索引I/O信息:逻辑读 DB2向缓冲池请求的次数逻辑读越多,需要的物理I/O就越少物理读如果请求的数据页不在缓冲池,需要从磁盘中读取数据页的次数吞吐量或事务信息:提交/回滚事务数,执⾏动态和静态语句次数,增删改查次数( rows read / rows selected ) 是⼀个⾮常重要的性能指标,它表⽰为了检索⼀⾏数据需要读取多少⾏,该值越⼤,表⽰代价越⾼,需要的I/O 越多,可调优的余地越⼤事务⽇志信息:⽇志I/O在很⼤程度上会影响数据库整体的性能6. 应⽤程序快照在数据库快照中发现存在⼤量的逻辑读,通过应⽤程序快照可以细化到某条特定的语句7. 表空间快照在数据库快照中发现存在⼤量的逻辑读,通过表空间快照可以轻松地定位哪个表空间被频繁使⽤8. 表快照如果发现⼀个表的页数很少,但是读的⾏数⾮常多,那么可以合理地猜测该表在某些查询语句中可能处于NLJOIN的内部⼦节点9. 动态SQL快照:SQL执⾏次数,总共读的⾏数,消耗的CPU,逻辑物理读数量,排序数量等第三步内存使⽤监控1. db2pd -osinfo系统内存使⽤情况2. db2pd -dbptnmem整个实例的内存使⽤情况3. db2pd -memsets内存段使⽤情况在实例中会有多个不同的内存段,每⼀个内存段中可能有⼀个或者多个内存池ipcs -a | grep 578814120 内存段映射到操作系统共享内存IPC段FMP与trace内存段很少造成性能问题4. db2pd -mempool深⼊内存池信息5. db2pd -db <dbname> -memsets / -mempool数据库级别内存段和内存池信息02优化过程中的优先级问题?在Db2优化过程中,我已知的有如下⼿段1.索引2.sql语句优化(分析执⾏语句后重写sql)3.runstats信息收集请问优化过程中,⼊⼿的优先级顺序是什么呢,还有其他⼿段吗?这“三板斧”已经可以解决很多问题了,DB2的优化⼿段很多,如果想深⼊了解,上传⼏个⽂件供参考。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Row Data 2
Row Data 1
清单3 更新Row1 后的页
Size = 30 byte (由于UPDATE后,COL3在原来的基础上增加了5个字节) 出现了OVERFLOW,接着COL3页上保存下一表空间页的指针地址 Size = 28 byte
Row Data 2
… Row Data n
7、模拟死锁、锁超时 (合理使用with ur也可以提高并发性)
导致锁超时:Lock table | Update table | Delete table | Insert table 改善update\delete出现的锁超时:在where语句后面指定的条件记录是唯一的可以加 上with ur改善锁超时 或者使用环境变量DB2_EVALUNCOMMITTED 改善insert出现的锁超时:使用DB2_SKIPINSERTED环境变量 导致死锁:tran1 lock A , tran2 lock B | tran2 lock A , tran1 lock B 改善死锁最根本的还是需要针对应用的以上这种情况进行调整
a)使用递归制造N条数据 b)把递归SQL声明成游标,然后把生成的数据导入表中 c)把递归SQL生成的数据导出文件中
日常问题解决方法(DBA篇幅)
– 执行update\delete\insert SQL语句时事务日志已满问题 解决 – 删除表字段不能对表进行访问的问题解决 – 对表增加generated always字段后出现表挂起状态解决 – 使用db2pd + snapshot排除锁超时原因 – 对出现锁超时的应用进行排查 (DB2_CAPTURE_LOCKTIMEOUT锁超时报告) – 对被引用的数据库对象无法重命名问题解决(V9.5或者 更早版本) – TOP SQL捕获 – 使用empty table快速清理一张大表的全部测试数据 – 使用import\load replace快速清理一张大表的全部测试 数据 – 使用not logged快速清理一张大表的部分数据
8、常用的会话级命令 语法: db2 ? update command options db2 ? set current
a)设置当前会话不自动提交
b)设置当前锁等待时间(lock timeout [not wait | :number]) c)设置当前数据库停顿
9、使用merge对多张表进行合并
COL1
清单1
COL2 CHAR(10)
COL3 VARCHAR(10) POINT Address:0x11
COL4 CHAR(6)
OX11 ROW DATA
INT
VARCHAR的页溢出(OVERFLOW):
Row Data 1
清单2 更新前满 负荷的页
Size = 25 byte Size = 28 byte … Row Data n
nljoin(显示嵌套循环连接,为外部表中的各行访问内部表一次) 示例:
使用db2advis对SQL进行索引建议 语法:db2advis –h 1、使用之前需要创建辅助表: $DB2HOME/sqllib/MISC/EXPLAIN.DDL 2、案例1:已存在的索引 3、案例2:不存在的索引
CHAR和VARCHAR 数据保存方式:
10、常用的OLAP(online analytical processing)在线分析函数 • ROW_NUMBER • RANK • COUNT • MIN • AVG • SUM
制造测试数据 1、递归SQL语法和基本概念
递归 SQL 在 DB2 中通过公共表表达式 (CTE,Common Table Expression) 来实现。递归 SQL 由递归 CTE 以及对递归 CTE 结果的查询组成。那什么 是递归 CTE 呢?简言之,如果 CTE 中的 FULLSELECT 在 FROM 子句中引用 到 CTE 本身,就是递归 CTE。递归 CTE 包含以下三个组成部分: • 初始查询 初始查询是 CTE 中对基本表进行查询的部分。CTE 定义中的 第一个 FULLSELECT 必须不包含对 CTE 自身的应用,即必须是初始查 询。 • 递归查询 递归查询就是通过对 CTE 自身的引用,从而启动递归逻辑 的查询。递归查询需要遵循以下几个规则 : – 递归查询和初始查询结果必须包含相同数量的数据列; – 递归查询和初始查询结果数据列的、长度等必须一致; – 递归查询不能包含 GROUP BY 或者 HAVING 子句; – 递归查询不能包含 Outer Join; – 递归查询不能包含子查询 (Subquery); – 递归查询必须用 UNION ALL 联结。 • 终止条件 终止条件通常是隐性的,即如果前一次递归查询返回的结 果集为空,则终止递归;但是也可以在递归查询中设定终止条件, 如限定递归查询的深度等。
常见的SQL编写、优化和SQL高级应用 1、合理使用约束也可以增强查询性能 2、尽量把set value改写成 values into 3、使用new table和old table减少对数据库操作次数
4、如果允许的话,可以使用syscat.tables.card代替count(*)
5、如果只有查询,尽量把存储过程改用自定义函数 6、获取DB2错误码消息(sqlerrm、db2 ? sqlcode)
DB2技术经验分享
SQ要的指标)
语法:db2expln -h
tbscan(表扫描,它通过从数据库读取所有必需的数据页进行检索行) 示例:select * from tabname(无索引表) ; ixscan(扫描表索引,产生有序的行流) 示例:select * from tabname(有索引表) ; hsjoin(显示一个散列连接,其中一个或多个表在连接列上是混编的) 示例: msjoin(显示合并连接,其中外部表和内部表都必须按连接谓词的顺序排列) 示例: