db2培训笔记
DB2数据库管理最佳实践笔记-10日常运维

10.1 日常运维工具概述Runstats是run statistics的缩写,意思是收集统计信息,目的是为DB2优化器提供最佳路径选择;Reorg是重组的意思,目的是减少表和索引在物理存储上的碎片,提供性能;Reorgchk是重组前的检查Rebind是对一些包、存储过程或静态程序进行重新绑定。
几个工具的执行流程:首先通过Runstats收集表和索引的统计信息,然后执行Reorg重组,如果有必要则执行,然后再次收集统计信息。
最后,对于静态语句、存储过程等,执行Rebind绑定.10.2 Runstats在系统运行一个查询的时候,优化器需要决定用某种方式来访问数据。
只有当DB2对表中的数据有一个大概的了解,才能知道每一步操作大约需要处理多少数据,返回多少行。
当优化器了解了这些信息后,就会根据一系列的运算,判定出各种访问途径所需要消耗的资源,然后从中选择一个消耗资源最少的方法.最普通的Runstats就是统计表和索引中有多少行数据,有多少不同的数值.Runstats命令使用DISTRIBUTION参数手机数据分布.数据分布分为两种,一种叫做频率采样(Frequency),一种叫做百分比采样(Quantile)。
当收集数据分布时,两种采样方式都会被收集.其中频率采样是手机表中拥有相同数量最多的几行,比如10000行数据中9000行为10,然后500行为9,然后100行为8,剩下的部分平均分布.如果我们制定Frequency为3的话,那么系统就会记录下来有9000行10,500行9,然后100行8,剩下的部分在估算时则假定平均分布。
而百分比采样则是将整个10000行数据分成相等大小的若干段,然后记录每一段的段首和段尾的数值,当需要查询一个数据段时(比如C1〉10 AND C1<15),就可以根据每一个数据段的启始数值加上段落的大小,估算出符合查询条件的记录数量。
理论上,数据分布收集的越细致越好.但是经过细致的数据分布信息可能会导致DB2在优化SQL时需要处理更多的信息,并占用更多的系统存储空间,可能会导致性能的下降。
DB2学习笔记(实用)

1.insert into D_USER(NAME,BIRTHDAY) values ('张三','1997-2-1');insert into D_USER(NAME,BIRTHDAY) VALUES ('赵七','1995-2-3'),('王五','1973-6-3');---不能够回车换行,要么都插入要么都不插入2.主键要指定不能为空S_ID varchar(10) not null primary key3.any,all与max,mi的对应关系> ANY(sub-qurey) --- > MIN(sub-qurey) 大于any时,取的是满足条件中的最小值;小于any时取的是满足条件中的最小值;any任何一个< ANY(sub-query) --- < MAX(sub-qurey)> ALL(sub-query) --- > MAX(sub-qurey) all所有的< ALL(sub-query) --- < MIN(sub-qurey)4 . 特别注意:ALL 如果有空值的话,max和min自动忽略空值,会有结果。
而是用all则会不。
CHINESE 有空值(1) select NAME from student where CLASS='五年级A 班' and CHINESE < all(select CHINESE from student where CLASS='五年级B 班') 空值(2) select NAME from student where CLASS='五年级A 班' and CHINESE <(select min(CHINESE) from student where CLASS='五年级B 班')有结果5.union 求并集intersect 求交集except 求差集这三个加上all后,不去重复6.存在的修改,不存在的插入用Merge。
DB2使用笔记

19、concatt(参数1,连接值) --把参数1加上连接值组成一个新值。
例如: concat('aa','b') --返回是aab
把oracle表导入到db2数据库中,有些字段类型需要进行转换,具体看:oracle与db2数据类型转换
创建数据库
db2 => CREATE DATABASE DB4 ON D:\StoragePath DBPATH ON C:
db2 connect to <数据库名> user <用户名> using <密码> --连接到远端数据库
2、 db2 force application all --强迫所有应用断开数据库连接
3、db2 backup db db2name<数据库名称> --备份整个数据库数据
DB20000I CREATE DATABASE命令成功完成。
例如:select * from <表名> fetch first 10 rows only
16、coalesce(字段名,转换后的值) --对是null的字段进行值转换
例如:select coalesce(id,1) from <表名> --对表中id如果为null转换成1
db2 restore db <db2name> --还原数据库
4、db2 list application --查看所有连接(需要连接到具体数据库才能查看)
5、db2start --启动数据库
db2stop --停止数据库
6、create database <数据库名> using codeset utf-8 territory CN --创建数据库使用utf-8编码
DB2培训讲义_DB2性能优化入门

DML性能问题:查询优化
同时还要考虑到 RUNSTATS/REORG 因素。 RUNSTATS 命令可以更 新表中的统计信息。当表中的数据经过频繁的增删改后其相应的统计 信息会发生变化,而优化器选择执行计划的时候是根据这种统计信息 来计算的,所以运行 RUNSTATS 此时显得尤为重要。 REORG 可以 整理数据存储的物理结构,也能减少数据扫描的时间,提高查询的性 能。 从存储方面应当注意的是选取裸设备的 DMS 要比 SMS 性能要好,因 为它少了一层文件系统的缓冲而直接访问缓冲池。
学会使用 optimize for n rows 子句,它可以提高前面 n 条记录的显示 速度。这样可以使用户能够先快速查看这 n 条记录,然后再看其他纪 录。减少了用户的等待时间。
DML性能问题:查询优化
针对复杂查询时可以将数据库配置参数 DFT_QUERYOPT( 缺省查询 优化类 ) 的值设得高一些(7 或 9),针对简单查询可以将它设得低一 些 (3 或 5),因为设置越高优化器所作的分析就越深入,耗费在生成计 划上的时间就越多。 针对 C/S 结构的查询可以将查询语句写在服务器端生成存储过程来减 少数据的网络传输以及客户端的压力。而经过编译的存储过程执行得 更加高效。
DB2培训讲义
性能优化入门
有关的概念
DB2 性能优化的三个方面
内存 CPU I/O
内存因素
在内存方面,主要是考虑缓冲池 (BUFFERPOOL) 的使用。缓冲池是 一片用来缓冲从磁盘上读取的数据和索引的内存区域,这些数据和索 引信息在缓冲池中进行运算后最终还要写回磁盘。缓冲池的页面大小 有四种 (4K,8K,16K,32K),分别对应四种不同页面大小的表空间。缓冲 池的大小决定了能够从磁盘上缓冲数据的容量大小。当然缓冲池也不 是越大越好,缓冲池过大可能会导致连接数据库的时间过长,因为在 连接数据库时要为数据库的缓冲池分配内存空间。可以通过计算缓冲 池的命中率来评估缓冲池的使用效率:缓冲池命中率 =(1-(( 数据物理 读 + 索引物理读 )/( 数据逻辑读 + 索引逻辑读 ))) *100%,缓冲池命中 率越大说明缓冲池的使用效率高。缓冲池命中率太小说明缓冲池太小 应当调大。其中的数据物理读,索引物理读以及数据逻辑读和索引逻 辑读都可以从缓冲池的快照中获取。
DB2-培训内容

2024/9/22
8
DB2 旳总体构造
2024/9/22
9
DB2 旳总体构造
DB2 Environment
DB2 Instance
DB2 DataBase
DB2 DataBase
DB2 Instance
DB2 DataBase
DB2 Environment (db2set)
DB2 Instance (db2i…)
DB2 培训内容纲要
DB2简介
DB2 产品简介 DB2 旳总体构造 DB2 连接
DB2 SQL
数据库对象操作(DDL+) 数据操作(DML) 高级SQL
DB2 管理
数据存储 系统维护 监控和优化
附录
2024/9/22
1
DB2 产品简介
2024/9/22
2
DB2 产品简介
2024/9/22
2024/9/22
19
DB2 SQL
RETRIEVING DATA(查询)
Retrieving the Entire Table Projecting Columns from a Table Changing the Order of the Columns Restricting Rows from a Table Limiting Result Table Size Selecting Columns from Multiple Tables Using Correlation Names DB2 Functions(Row、Column) Subquery(子查询)
DB2 DataBase(db)
2024/9/22
10
DB2 连接
2024/9/22
循序渐进db2笔记-日常维护

14.1.1 查看是否有僵尸进程
在UNIX中,若父进程在一定的时间内无法收集到状态信息,则系统就会残留一个defunct进程。因为defunct进程是已经停止的,所以使用杀死进程的方法来杀defunct进程是无效的。defunct进程不使用CPU或硬盘等系统资源,而只使用极少量的内存用于存储退出状态和资源使用信息。
select * from sysibmadm.TOP_DYNAMIC_SQL order by NUM_EXECUTIONS desc fetch first 5 rows only;
此语句返回执行频率最高的5个动态SQL语句的所有执行时间、排序执行次数和语句文本详细信息。
为了标识执行时间最长的动态SQL语句,请检查AVERAGE_EXECUTION_TIME_S值最大的5个查询:
select * from sysibmadm_EXECUTION_TIME_S desc fetch first 5 rows only;
14.2.7 监控排序次数最多的SQL语句
select STMT_SORTS,SORTS_PER_EXECUTION,substr(STMT_TEXT,1,60) as STMT_TEXT from TOP_DYNAMIC_SQL order by STMT_SORTS desc fetch first 5 rows only;
通过inspect命令检查数据库是否一致:
db2 inspect check database results keep db_check.out
db2inspf db_check.out db_check.txt #检查文件,查看数据库是否一致
14.1.3 查看诊断日志判断是否有异常
DB2学习总结(1)——DB2数据库基础入门

DB2学习总结(1)——DB2数据库基础⼊门DB2的特性完全Web使能的:可以利⽤HTTP来发送询问给服务器。
⾼度可缩放和可靠:⾼负荷时可利⽤多处理器和⼤内存,可以跨服务器地分布数据库和数据负荷;能够以最⼩的数据丢失快速地恢复,提供多种备份策略。
DB2数据库启停启动数据库:db2start停⽌数据库:db2stop检查存在的数据库LIST DATABASE DIRECTORY数据库连接、断开CONNECT TO databasenameCONNECT RESET创建、删除数据库CREATE DB databasename注:如果已经连着⼀个数据库的话,就创建不了数据库,会报“应⽤程序已经与⼀个数据库相连”的错DROP DB databasename第⼆节表数据类型可分为数值型(numeric)、字符串型(character string)、图形字符串(graphic string)、⼆进制字符串型(binary string)或⽇期时间型(datetime)。
还有⼀种叫做DATALINK的特殊数据类型。
DATALINK值包含了对存储在数据库以外的⽂件的逻辑引⽤。
数值型数据类型包括:⼩整型,SMALLINT:两字节整数,精度为5位。
范围从-32,768到32,767。
⼤整型,INTEGER或INT:四字节整数,精度为10位。
范围从-2,147,483,648到2,147,483,647。
巨整型,BIGINT:⼋字节整数,精度为19位。
范围从-9,223,372,036,854,775,808到9,223,372,036,854,775,807。
⼩数型,DECIMAL(p,s)、DEC(p,s)、NUMBERIC(p,s)或NUM(p,s):⼩数型的值是⼀种压缩⼗进制数,它有⼀个隐含的⼩数点。
压缩⼗进制数将以⼆-⼗进制编码(binary-coded decimal,BCD)记数法的变体来存储。
⼩数点的位置取决于数字的精度(p)和⼩数位(s)。
循序渐进db2笔记-索引讲解

索引类型唯一索引它确保表中没有两个数据行具有完全相同的键值来帮助维护数据完整性。
尝试为已经包含数据的表创建唯一索引时,将检查组成该索引的列中的值是否唯一,如果包含具有重复键值的行,索引创建将失败。
为表定义了唯一索引之后,每当在索引中添加或更改键时就会强制唯一性(包括插入、更新、装入、导入和设置完整性以命名一部分)。
引:唯一索引用来保证数据的唯一性,唯一索引一般性能要高于非唯一索引,只允许列表中出现一个键值,允许显示单个NULL。
例句:CREATE UNIQUE INDEX <IDX_NAME> ON <TAB_NAME>非唯一性索引维护频繁使用的数据值的排序顺序,这仅仅用于提高查询性能,不用于对关联的表强制执行约束。
引:数据库管理器使用唯一索引和NOT NULL约束的组合来实现主键约束和唯一键约束。
可以说大部分的索引是非唯一索引,这和数据的分布有关系,一般的数据都具有可重复性特性,所以他们不能被定义为唯一索引。
非唯一索引可以使用命令:CREATE INDEX <IDX_NAME> ON <TAB_NAME> (<COLNAME>)集群索引数据页中行的顺序对应于索引中行的顺序。
这就使得给定表中只能存在一个集群索引。
在某些关系数据库管理系统中,集群索引的叶子节点对应于实际数据,而不是对应于指定位于其他地方的数据的指针。
集群索引作用:如果对表进行了重组,那么会按照索引键的顺序将行插入数据页中。
集群索引改善了以键的顺序扫描整张表的性能。
引:群集索引允许对数据页采用更线性的访问模式,允许更有效的预取,并且避免排序。
群集索引是要求数据在插入时,做更多的操作,将相临的数据条目放入相同的页,使得查询速度更快,因为每次访问索引页要将所有的索引条目都访问完毕才移到下一页,保证了缓存池中任何一个时刻都只有一个索引页存在。
群集索引的特点:提高查询速度,数据页以键的顺序排列;以键的顺序扫描整张表;插入和更新需要做更多的事情,不建议经常插入和更新的表上做群集索引非集群索引两者都只包含索引结构中的键和记录标识。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、Tablespace●表空间分为dms与sms 设定后不可以修改,库中必定存在syscatspace/systmpspace 两个sms类型的表空间。
可创建userspace/usertmpspace(用户临时表空间用于临时表)●Systmpspace: 在小根据使用情况自动分配动态伸缩,仅在需要时才分配磁盘空间,并在使用后进行回收,pagesize=4●Syscatspace: 在数据库中创建的任何对象都以在系统编目表空间中增加记录的方式体现●Dms、sms、containerDms可以为对应多个container,不能为目录,而Sms只能提定一个目录且不能增加。
表空间是数据存储的逻辑位置定义,容器则是数据存储的物理位置定义2、Instance●在一个实例中数据库是完全独立的,各自有系统编目表(放在SysCatspace中)●若为当前会话设置 DB2INSTANCE 环境变量,则其值为当前实例。
要设置DB2INSTANCE 环境变量,输入:set db2instance=<new_instance_name>●若没有为当前会话设置DB2INSTANCE 环境变量,则DB2 UDB 使用系统环境变量中DB2INSTANCE 环境变量的设置●如果根本没有设置 DB2INSTANCE 环境变量,则 DB2 UDB 使用注册表变量DB2INSTDEF。
要在注册表的全局级别设置 DB2INSTDEF 注册表变量,输入: db2set db2instdef=<new_instance_name> -g●查询当前实例 db2 get instance●实例命令(db2ilist db2icrt db2drop db2stop db2start)●attach to nodename user username using password (在客户端登陆到实例上)●当更新实例级别或数据库级别的参数后,有些可以立即生效,有些需要重新启动实例才可生效。
immediate 显式指明更改立即生效,deferred 显式指明更改在重起实例后生效。
3、在AIX中创建实例时必须有一个相同的用户名存上4、关于在AIX小机上建库注意事现●需查询\etc\servise 中的开放端口与服务名称与dbm cfg 中的SVCENAME保持一致database manager config file 数据库管理配置文件db2 update dbm cfg using SVCENAME <name>netstat –a|grep db2c_instname,看看监听是否起来db2 get dbm cfg●更改相关的注册表变量(在sqllib 下)Db2set db2codepage=1386Db2set db2country=86Db2set db2comm=tcpipDb2 terminate●创建/usr/opt/db2_08_01/instance/db2icrt -u db2inst1 <instance_name>●显示一个注册表变量的级别db2set rvn –all显示一个实例级别概要文件设置的注册表值db2set -i (-g)db2 list db directory6、导出数据库完整的定义到脚本文件,包括表,视图,函数,数据库参数等db2look -d sample(数据库)-a -e -l -x -m -f -o(参数)samplesql.out(输出文件)7、查询节点db2 list node directory8、创建或删除编目●db2 => catalog tcpip node node_name remote hostname|ip_addressserver service_name|port_number [remote_instance instance_name][system system_name] [ostype os_type]db2 => terminate●Db2 catalog database <新别名> as <数据库> node <节点>例:CATALOG DATABASE b as b_on_ic AT NODE instnc_c●Uncatalog node9、表空间●表空间是一种存储结构,它包含表、索引、大对象和长型数据。
表空间驻留在数据库分区组中。
它们允许将数据库和表数据的位置直接指定到容器上。
(容器可以是目录名、设备名或文件名。
)●单个表空间可跨多个容器。
●一个数据库至少必须包含三个表空间a.目录表空间,它包含该数据库的所有系统目录表。
此表空间称为SYSCA TSPACE,它不能被删除。
IBMCA TGROUP 是此表空间的缺省数据库分区组。
●目录表空间,它包含该数据库的所有系统目录表。
此表空间称为SYSCA TSPACE,它不能被删除。
IBMCA TGROUP 是此表空间的缺省数据库分区组。
10、创建DAS服务DB2(R)管理服务器(DAS)响应来自DB2 管理工具和配置助手(CA)的请求。
例如,DB2 管理工具允许您启动、停止和设置服务器的数据库管理器配置参数。
CA 使用管理服务器来帮助用户编目客户机上的数据流程:AIX上创建用户组db2admin ,创建DAS用户das/usr/opt/db2_08_01/instance/dascrt -u <DASUser>启动 DAS:作为 DAS 所有者登录。
使用下列其中一个命令运行启动脚本:. DASHOME/das/dasprofile (对于 Bourne 或 Korn shell 程序)source DASHOME/das/dascshrc (对于 C shell)其中 DASHOME 是 DB2 管理服务器的主目录。
要启动 DAS,使用 db2admin 命令: db2admin start9、关于数据库相关命令●激活数据库connect to <dbslias> , active db <dbalias>deactivate database <dbalias>db2 list applications [show detail]db2 force application (6, 5)db2 f orce application all●查询命令list active databases (活动状态的数据库)db2 list db directory (查询当前有多少个数据库)●显示数据库相关的参数 Database Configuration (在数据库一级的)get db cfg for <datalias> show detail11、数据库恢复类型: version recovery(版本恢复) crash roll forwardd前滚恢复是指复原了数据库或表空间备份映像后,重新应用记录在数据库日志文件中的事务。
崩溃恢复是指在完成并落实所有更改(这些更改是一个或多个工作单元(事务)的一部分)之前如果发生故障,会自动恢复数据库。
这是通过回滚未完成的事务,并完成在发生崩溃时仍在内存中的已落实事务来实11.监视●DIAGLEVEL - (0-4) (default 3)0 - NO error logging1 - Log (severe error)2 - Log (severe and non-severe errors)3 - Log (severe, non-severe, and warning messages)4 - Log (severe, non-severe, warning and informational message)修改:db2 update dbm cfg using diaglevel=<级别>db2 update dbm cfg using diagpath=</home/yaolijun/sqllib/db2dump>●DIAGPATH –valid directoryDb2diag.logDb2alert.log 警告日志Pid.dmp(s) Tpid.000 二进制文件●MonitorSnapshot monitor (快照)Event Monitor (事件)GET MONITOR SWITCHES (查询monitor 开关)UPDATE MONITOR SWITCHES USING {switch-name {ON | OFF} ...}12、设置DB2 环境正确设置db2环境非常重要,它控制着DB2 的运行与功能∙DB2 概要文件注册表(是特定于DB2 的变量,它影响DB2 系统的管理、配置和性能。
) 参数修改通常需重启实例,db2set –lr db2set –all∙操作系统环境变量export DB2INSTANCE=PROD∙DB2 数据库管理器配置参数get dbm cfg∙DB2 数据库配置参数13、权限(5种权限)SYSADM(系统管理权限) 拥有管理实例的全部特权,并且还有对底层数据库中数据的访问权。
SYSCTRL (系统控制权限)和SYSMAINT(系统维护权限) 在管理实例、实例的数据库和数据库对象方面有一定的特权。
这些权限没有对数据的访问权。
DBADM(数据库管理权限)有对指定的数据库执行管理任务的特权。
它还拥有对数据库的全部数据访问权。
LOAD 有对特定数据库运行装入实用程序的特权。
14、锁锁的类型in/is/ix/six/s/u/x/zi:intent s:share x:exclusive 互斥b u:update z:superexclusive隔离级别是在预编译或应用程序与数据库绑定时指定的UR: 未落实的读的CS: 游标稳定性RS: 读稳定性RR:可重复读15. 性能主要因素:磁盘(Disk), 内存(Memory), 处理器(CPU), 网络(Network),90%的性能瓶颈可能来自于磁盘的IO竞争;其次是内存,一方面是指物理内存的总量要满足需求,另一方面是指与内存相关的配置参数应正确配置;当然处理器的性能也很重要,多路CPU会对哪些依赖计算能力的复杂SQL查询起到显著的效果;网络不属于主要因素,属于客观的环境因素,是指过慢的网速会对数据的传输造成影响。
DB2的参数配置分为两个级别,一个是实例级别,另一个是数据库级别。
对数据服务性能影响较大的参数主要在数据库级别配置。
16、模式系统模式集是和每个数据库一起创建的,并且它们被放置到SYSCATSPACE 表空间中:模式是用于数据库中创建的数据库对象的高级限定符。