DB2
分类:会员中心

现阶段,专业中三个品种的多寡 Table 和 Stored Procedure 在 DB2 数据库,须求寻访之。上边把利用进程中遇到的多少个难题整合治理下:

第七章:数据库备份与回复 (恢复生机的定义,db2日志,数据库和表空间的备份,数据库和表空间的上涨,数据库和表空间的前滚,recover使用程序,数据库重新建立,监察和控制备份苏醒和回复,优化备份恢复生机和余烬复起卡塔尔国
1) Redo 是指db记录了成功的操作commite之后但没立马的写入硬盘,这时开机数据库会自动做写入硬盘的操作
2卡塔 尔(阿拉伯语:قطر‎崩溃恢复生机(crash recovery)是数据库的二个成效,使数据库到达平等的意况,能够回滚未提交的数目,重做已经在内部存款和储蓄器提交的数额。选项:autorestart on ,以致可以应用db2 list utilites show detail或db2pd -until查看进程。
3卡塔尔国脱机是指在崩溃恢复生机的时候表空间发出错误
4卡塔尔国祸患复苏(disaster recovery),用HAD纳瓦拉成效来平复,原理 是将源数据复制到指标数据库制止
5卡塔尔前滚苏醒要依靠启用备份何况启用了归档日志,恢复生机数据库时且不能够用without rolling forward,数据库在还原操作结束时处于roll foward pending
6卡塔尔前滚复苏分为:前滚数据库和前滚表空间
7卡塔尔前滚表空间日常能够筛选在日记中前滚至:日志末尾(to end of log)和有些特如时期点(称为时间点苏醒卡塔 尔(阿拉伯语:قطر‎。常常两种情况用前滚表空间:表空间作复苏操作后高居前滚暂挂状态(做rollfoward database将日志应用于表空间卡塔 尔(阿拉伯语:قطر‎和崩溃复苏时遭逢叁个或三个表空间处于前滚暂挂(这种景况要先修复表空间,技能做rollfoward database将日志应用于表空间卡塔尔国
8卡塔尔前滚恢复生机要启用归档日志功用,暗中同意是平昔不的
9卡塔 尔(阿拉伯语:قطر‎日志记录任何commit到磁盘的多少,提交的数据redo ,未有付诸的数据undo
10)日志只记录DML(insert,delete,update)
11)循环日志 有 主日志(primary log files) 和 帮助日志(second log files).循环日志只可以恢复生机到备份点
12)活动日志(active log)是尚未写入磁盘的日记,三种规范任性三个原则下正是移动日志:包括还未提交或回滚的事情消息;包涵已经交由但向来不写入磁盘的工作音讯
13卡塔尔logarchmeth1=off 是循环日志
14)logarchmeth1=logretain,userexit,disk:directory_name,tsm:managment class name,vendor:libary name
15)日志计算:循环日志扶助崩溃恢复和本子恢复生机,归档日志扶助除了前多个外还大概有三个前滚恢复生机
16卡塔 尔(阿拉伯语:قطر‎备份不会去备份数据库微机配置文件或注册变量
17卡塔 尔(英语:State of Qatar)借使是在线备份(backup online)那就必定会将就算归档日志
18卡塔尔恢复生机(restore)数据库只可以是离线来做,那么些和rollforward 数据库是同样的规行矩步
19卡塔尔本地数据库目录 和 系统数据库目录都以同三个名字的公文夹:sqlbdir
20)表空间的过来自然会有rolling forward的操作以到达雷同的情形
21卡塔 尔(阿拉伯语:قطر‎能够运用db2 list tablespaces show detail或db2 get snapshot for tablespace on db查看minimum recovery time那风度翩翩增选
22卡塔 尔(阿拉伯语:قطر‎db2ckbkp -h 检查实验备份性息 db2ckrst -d dbname -t time 检查增量复苏
23)苏醒restore数据库的时候,容器的职分或名称设备与备份时的例外,就要采纳重定向复苏
24卡塔尔国drop是删除表,使用drop之后表结商谈表的数量都会被删除,truncate 和 delete是删除表里的数码,但不删除表本人,truncate 和 delete相比较,truncate要快非常多,但瑕玷正是不可能回滚,包蕴索引等都会化为带头值,数据就不恐怕恢复生机了
25)db2 select tbspace,drop_recovery from syscat.tablespaces 查看表空间的选项                    
26)drop_recover这么些选项不能够用在system temporary tablespace ; LOB ; XML上
27)复苏删除表步骤:1卡塔尔完整数据库备份2卡塔尔restore在删除表早先创设的数额库级或表空间级备份image 3卡塔 尔(阿拉伯语:قطر‎检索已删除表的对象ID 4)rollforward 数据库 5卡塔尔国重新创建表 6卡塔 尔(阿拉伯语:قطر‎用前滚的数据库导入的数量导入到表中
28卡塔尔国rollforward 会使表空间处于不可访谈的处境
29卡塔 尔(阿拉伯语:قطر‎历史文件db2rhist.asc 在db2inst1/NODE0000/SQL00001上边,及其备份文件db2rhist.bak
30)db2rhist.asc能够用list history来查阅哪
31卡塔尔国db2 list history backup all for db tomdb 列出tomdb的历史文件
32)prune histroy 命令处理恢复生机破坏了的历史文件
33卡塔 尔(阿拉伯语:قطر‎为了确认保证日志文件能够保存,能够行使backup db dbname online to /backuodir include logs,保存日志在备份影像中的操作之能是在线备份
34卡塔 尔(阿拉伯语:قطر‎离线备份:earliest log=current log   而在线备份 earliest log < current log 
35)复苏删除的历史文件:db2 restore db dbname history file 
36卡塔尔可还原数据库重新建立:表空间备份可复原数据库,部分表空间备份可还原数据库,含有log文件的在线备份可复原数据库,使用增量备份重新营造可还原数据库,使用重定向选项重新建构可复原数据库
37卡塔 尔(阿拉伯语:قطر‎db2 restore db tomdb rebuild with all tablespaces in database taken at 二零一五0317130324 用表空间备份重新建立数据库(归档日志卡塔尔
38卡塔尔用表空间重新建立之后要前滚表空间,若无相应的备份影像都能在历史文件中找到才干帕杰罗F,个中国和扶桑志文件应当要可用,如若不在数据库参数的Path to log files里面,就要内定日志文件地方(用overflow log path这些选项卡塔 尔(英语:State of Qatar)
39)[db2inst1@oc6162546036 SQL00001]$ db2 rollforward db tomdb stop
SQL1271W  Database "TOMDB" is recovered but one or more table spaces are 
offline on members or nodes "0".           qa:????为何苏醒持续 
40)部分表空间重新建立数据库,除了重新创设,还要苏醒restore pending的表空间
41卡塔 尔(英语:State of Qatar)可过来数据重新建立能够用别的备份,不可苏醒数据库只好用数据库备份

(说真话,DB2 并未 SQLServer 好用,也只怕本人是太小白了,有待于升高...卡塔尔

42)0x0100 表示:restore pending 

第六章 数据移动 (export,import.load,db2move,db2look)
1)db2 "export to table1.dat of del messages table1.log select * from table1"
SQL3015N  An SQL error "-1585" occurred during processing. 尽管有记录但是会报错 
2卡塔 尔(阿拉伯语:قطر‎import 脱机导入(allow no access), 联机导入(allow write access)
3)导入情势有:insert,insert_update,replace,db2look 前三切合对象表存在(协助的格式IXF,WSF,ASC,DEL),db2look符合没有指标表(扶助的格式PC/IXF)
4)load有三个动作选项:insert,replace,restart,terminate

================================================================================================================
第天问 基本监察和控制措施 
1卡塔尔国监察和控制工具备:快速照相监视器,事件监视器,db2pd工具,db2mtrk, activity monitor等
2卡塔 尔(阿拉伯语:قطر‎快速照相监察和控制器是在对话品级改良:有三种艺术改进:校订数据库的布局参数(db2 update dbm cfg using dft_mon_lock on) ,调用应用程序级的db2MonitorSwitches() API函数,可能实践update monitor switches using [[SwitchID]DB2。 on | off,...]
3)得到快照音讯:db2 get snapshot for dbm/database on dbname/locks on dbname/sdynamic sql on dbname
4)重新设置计数器:reset monitor for db dbalias,reset monitor all, 可以重新初始化单个数据库,全局数据库,但不可能选用性的对用快照监视器开关调控的异样监视器组重新载入参数计数器
5卡塔尔国db2pd首假使监督检查锁
6卡塔尔国为何快速照相监察和控制未有任何项,如:tablespaces ,dbm,tables
7)快速照相监察和控制的方式:get snapshot for
8)利用函数监察和控制,但是要受控于监视器按键 
9卡塔尔国利用视图监察和控制 sysibmadm情势名起始的视图
10卡塔尔国monitor switches 功能与单个数据库,dbm 是负有数据库,db2 update dbm cfg 是总开关,monitor switches是小按钮
11卡塔 尔(英语:State of Qatar)event monitor是要为特定事件类型创立
12卡塔尔db2evmon工具来格式化sql event monitor原始数据 
13卡塔 尔(英语:State of Qatar)db2mtrk是用来监督内存
14卡塔 尔(英语:State of Qatar)db2pd -version -osinfo查看版本 操作系统新闻

================================================================================================================
第十章 运营数据库必得思谋的数据库设置
1卡塔尔国db2 get dbm cfg show detail里面包车型客车Delayed Value 与Current Value在在线配置的情事下,值应该是相等的
2卡塔尔db2pd -dbptnmem能够查看数据库内存总结信息
3)通信设置无法大器晚成并配置(在线配置,包罗注册变量,节点配置,端口配置卡塔尔;
  内部存款和储蓄器设置中instance_memory可以少年老成并动态更新;
  self_tunning_mem单分区多分区DPF能够一齐配置;
  数据库分享内部存储器能够合营配置(databse_memory,那几个内部存款和储蓄器分享配置决定于slef_tunning_mem 是ON的情况);
  缓存池大小能够协作配置(IBMDEFAULTBP是暗中同意的缓冲池,当syscat.bufferpools目录表中该缓冲的NPAGES值为-1是,db2数据库配置参数    BUFFPAGE调整缓冲池大小,不然会忽略BUFFPAGE参数,并用NPAGES参数钦定的页数创设缓冲值卡塔尔;
  pckcachesz能够合营配置(程序包告诉缓存用来高速缓存数据库上的静态和动态SQL和XQuery语句的兼具section卡塔 尔(阿拉伯语:قطر‎;
  catalogcache_sz高速缓存能够采纳的数据库堆中最大空间(以页总括卡塔 尔(英语:State of Qatar)能够一同配置;
4卡塔尔国数据库微型机须求从磁盘I/O实行的越少,品质越好
5卡塔 尔(英语:State of Qatar)BPH奥迪Q7缓冲池命中率应该超越九成(能够利用SYSIBMADM.BP_HITRATIO总括命中率卡塔 尔(英语:State of Qatar),个中的字段:SNAPSHOT_TIMESTAMP ,DB_NAME ,BP_NAME  ,TOTAL_HIT_RATIO_PERCENT ,DATA_HIT_RATIO_PERCENT,INDEX_HIT_RATIO_PERCENT)
6卡塔尔程序包高速缓存(pckcachesz)不提议设置automatic ,它使SQL不用拜候系统目录,以至动态SQL或XQuery免去编写翻译这一步,当中能够是用下边那一个讲话判别是或不是满意急需:
select (1-pkg_cache_inserts/pkg_cache_lookups)*100 as pchr,pkg_cache_num_overflows from sysibmadm.snapdb
7)catalogcache_sz(高速缓存)使用情状查看:db2 get snapshot for dabtabase on dbname|grep -i "catalog")中的catalog cache overflows这一项,不为0将在追加:db2 update db cfg using catalogcache_sz XX
8)locklist达到maxlocks时,数据库微电脑会对应用程序挂起的锁定实行从行到表的锁定晋级
9)db2 event monitor
记录下音讯后用db2evmon -path 命令展开

1.db2 update monitor switches using lock on statement on

2.create event monitor lockmonitor for deadlocks, statements  write to file ‘c:dulog’ 
  db2 "create event monitor dlockevm for deadlocks with details history write to file '/home/db2inst1/locks'"

3.set event monitor lockmonitor state 1

最后
4.set event monitor lockmonitor state 0 

5.db2evmon -path /home/db2inst1/deadlock > deadlock.txt

6 more sqltrace.txt

================================================================================================================
第十意气风发章 平时运作维护 runstats,reorg,rebind,健康检查,数据库监控
1)总结消息是记录各样数据库对象消息,并保存在数据库系统表目表中,优化器会根据这几个音讯接收最低的试行费用
1卡塔尔国db2运行的工本是指CPU成本(以指令数计卡塔尔国和I/O(以寻道数和页的改变数计卡塔 尔(阿拉伯语:قطر‎,开销的单位是timeron,数据库总计音讯引用误差过大,就有非常大希望招致质量难题
2) 静态SQL在runstats之后须求重新bind,因为在bind此前就曾经规定,则会并发计算消息不一致等的状态,但动态SQL就无需,因为动态SQL语句的拜见计策是基于总计音信在运维是动态变化的
3卡塔 尔(英语:State of Qatar)runstats就好像小车的GPS
4)  静态 SQL:静态 SQL 语句平常用来嵌入式 SQL 应用中,在程序运营前,SQL 语句必需是明确的,举个例子 SQL 语句中关系的列名和表名必得是存在的。静态 SQL 语句的编写翻译是在应用程序运转前行行的,编译的结果会蕴藏在数据库内部。而后程序运转时,数据库将一直试行编译好的 SQL 语句,裁减运作时的开拓。
    动态 SQL:动态 SQL 语句是在应用程序运转时被编写翻译和实践的,举个例子,使用 DB2 的交互作用式工具 CLP 访谈数据库时,顾客输入的 SQL 语句是不鲜明的,因而SQL 语句只可以被动态地编写翻译。动态 SQL 的行使超级多,多如牛毛的 CLI 和 JDBC 应用程序都利用动态 SQL。 
 依照编制程序方法的分化,DB2 的应用程序开还足以分为嵌入式 SQL 编制程序和非嵌入式编制程序 :

    嵌入式 SQL 编制程序将 SQL 语句嵌入到宿主语言 (host) 的次第中,比方 C/C 程序。因为宿主语言不识别 SQL 语句,先要对程序举行预编写翻译,把 SQL 语句转换为对 DB2 服务的调用,天公地道写源代码,最终再采纳宿主语言的编译器对应用程序进行编写翻译。嵌入式 SQL 都须要被绑定到一定的数据库中,可分为嵌入式静态 SQL 和嵌入式动态 SQL。
    非嵌入式应用程序无需预编写翻译,且方法很多,如 CLI、JDBC、ODBC、ADO.NET 等等,那么些点子中都应用动态 SQL。表 2点数了广泛的 DB2 编制程序接口。 
5卡塔 尔(英语:State of Qatar)db2 reorgchk update statustucs on table all 对全表实行runstats,若是有批量的多少插入时候,就需求做runstats
6)对特定表的runstats,db2 -v runstats on table tablename and indexs all
7)查看是不是执行了runstats: syscat.tables中的stats_time列显示的值能够查阅是不是运维,当为null时,就是未有运维runstats;syscat.indexes也足以用这种措施行检查测
8卡塔尔在表中运维runstats有三种客商访问选项:allow read access,allow write access(暗中同意卡塔 尔(英语:State of Qatar)
9卡塔尔国9.5事先的runstats之能在单区(单个数据库分区卡塔尔国进行计算,所以只要不是在享有数据库分区中千篇后生可畏律发表,那么会现身总括新闻不均等,即就要runstats从前各种的对各类分区之间重新分发数据,用那一个命令:redistribute database partition group
10卡塔 尔(阿拉伯语:قطر‎db2rbind能够用于重新绑定数据库中拥有应用程序包,使用 db2 flush package cache dynamic删除程序包缓存器中享有当前缓存的动态SQL,并强制隐式的编写翻译一下央求
11)stat_heap_sz是代理个人内部存款和储蓄器的一片段,钦点了runstas总结的具有内部存款和储蓄器堆的最大值,运转是分配,落成时释放,最佳是能增大其值
12卡塔 尔(阿拉伯语:قطر‎当定义了runstats调治(thrittling,在那之中的参数util_impact_priority,util_impact_lim),并且该调度可操作时,runstas常常会话费越多的光阴,但对生育系统影响极小
例:db2 runstats on table tablename and indexes all util_impact prioriy 10 ,如果util_impact_lim 10 ,表达职业负荷约束在10%下
13卡塔 尔(英语:State of Qatar)在自动化总括音讯配置在此之前,要经过运营sysinstallobjects存款和储蓄过程创设查询反馈库,即在设置auto_stats_prof on,auto_prof_upd on之前,要用call sysinstallobjects(toolname,action,tablespacename,schemaname)
14卡塔 尔(阿拉伯语:قطر‎在接受runstats对特定表和目录进行时,必需利用完全约束的表名和索引名
15卡塔尔搜罗分布式总结音信:db2 runstats on table tablename with distribution and indexes all
16)runstats有很各类不一样的选项进行压实优化成效:
   在一定的列和目录实行
   搜罗分布式总括新闻
   包罗频率和分位数总括信息
   包蕴列组总计音信
   包含like statistics的runstats
   包括计算消息配置文件的runstats
   带有抽样的runstats
   带有系统页级抽样的runstats
   reorgchk搜罗全数表的数据库计算新闻:reorgchk update statistics on table / schema
   边load边做计算音信,边创造索引边总括新闻
17卡塔尔国重新组合表要比runstats计算音信时间更长,能够先实施runstats绑定程序包总括音信,若无改进能够再扩充reorg
18)v8早先只好离线重新组合,v8之后能够一齐也能够离线:钦定了选项inplace正是一路重新组合,暗中同意是离线脱机重新组合
19卡塔 尔(英语:State of Qatar)有关心珍贵组的快慢音讯将记录在数据库活动的历史记录文件中,能够用db2 list history命令展开,也得以用表快速照相来见识重新组合进程(db2 get snapshot for table on db,不关怎样设置数据库监视表开关,都会记录表重新组合监视数据
20)若是系统开展的夭折恢复生机且步向替换进程,那么早晚要使重新组合表操作完结
21卡塔尔国脱机表重新整合必要将别本复制到一时表空间,但在线重新组合表不会
22卡塔 尔(英语:State of Qatar)联机表重新组合会创制二个.OLLacrosse的二进制的文件记录重新组合时要用的音讯,如:LSN 重新组合项目,下个腾出的范围,索引标志,是为着掩护数据集群依然回收空间等
23卡塔 尔(英语:State of Qatar)联机表重新组合包括八个级次:select N pages,vacate the range,fill the range,truncate table 
24)假使要对联机表重新整合进展双重新组合合,必需先暂停(db2 reorg table tbname inplace pause),工夫整合
   发出resume乞求之后,若无再一次钦点推行的咬合项中truncate的选项,将沿须原本的截断表选项truncate
   在restore 和 backup的时候无法拓宽重新整合
25)监视在线重新组合表方法:快速照相(get snapshot),管理视图(snaptab_reorg),表函数(snap_get_tab_reorg)
26)由于脱机表重新组合是风流罗曼蒂克道的,由此脱机表重新整合中的任何不当都会重临给实用程序
   联机表重新组合是异步的,由此并未有SQL音讯写入CLP,查看再次回到SQL错误,请发出list history reorg
27卡塔 尔(英语:State of Qatar)联机重新组合索引,假设钦赐了allow write access那几个选项,将会重新建立该表的有着索引,命令:db2 reorg index index_name for table table_name[clean up /clean up all /cleanup only pages]
28)PCTfree是指 在开创索引的时候为其定义的可用空间百分比
29卡塔 尔(英语:State of Qatar)db2 "select 'revoke select  on '||rtrim(tabschema)||'.'||rtrim(tabname)||' from public;' from syscat.tables " > script.sql 利用目录表做的脚本rvoke public的权位
30)脱机表重新整合须要的额外部存款和储蓄器储空间保存表的黑影别本,脱机索引重新组合没有须要,联机表重新整合供给的是越来越多的日志空间,联机索引重新整合要求越来越多的日志空间和影子别本存款和储蓄空间
31卡塔 尔(英语:State of Qatar)rebind会对应用程序在实行前开展绑定,绑定和基于总结音信和数据库对象成立三个主次包,那么些程序包便是实行安排
32卡塔 尔(英语:State of Qatar)所以大器晚成旦张开了计算或是重新整合,那将在再度举行rebind
33)runstats > reorgchk > reorg > rebind/db2rbind > runstats 循环
34卡塔尔syscat.packages表中的valid值标记当前的程序包是还是不是可用,假诺是X值,就表示当前的顺序包是不可用,那么就须要再行绑定
35卡塔 尔(英语:State of Qatar)db2diag.log 错误日志,db2inst1.nfy布告日志。那七个要求平常检查
36卡塔 尔(阿拉伯语:قطر‎DMS表空间的剩余查询是用,db2 list tablespaces show detail ,SMS表空间对应的容器用操作系统查看剩余空间df -k 
37)DB2有数不完工具用于监察和控制数据库和实例活动 举个例子:snapshot monitors/sql snapshot函数 ; event monitor ; sysibmadm动态品质试图
38卡塔尔国 db2 list utilities show detail 能够监察和控制 LOAD ,BACKUP ,RESTORE, RUNSTATS

================================================================================================================
第十六章 数据库常用工具
1)db2cfexp ,db2cfimp 实例配置音讯导入导出
2)db2exfmt,db2expln是用来查阅已搜集并写入解释表(explain_instance)的圆满批注多少
3卡塔 尔(阿拉伯语:قطر‎visual explain查看特定SQL语句选取的拜谒安顿的图形化表示GUI解释工具
4)timeron是db2优化器使用的后生可畏种资本衡量单位,用于总括查询完全实施所需的日子和能源数量
5卡塔 尔(阿拉伯语:قطر‎采访安插是db2用于实施db2语句的路径和步骤,这是颇负可用解释工具呈现的消息
6卡塔尔syscat.packages是用来囤积数据库中的以程序包的花样的拜见安顿
7卡塔 尔(阿拉伯语:قطر‎查看静态SQL,动态SQL用 db2expln
8卡塔 尔(阿拉伯语:قطر‎db2exfmt是直接管理已搜聚并村混在表明表中的圆满疏解多少或表明快速照相数据,输出是根据文本的报告
9卡塔尔db2advis索引设计工具,测量试验借使创设了目录,SQL施行费用可以提升多少,
10)使用db2advis第一步是要采摘和描述提须求Design advisor的行事负荷
11卡塔尔db2batch 是风华正茂种口径测验工具,是以意气风发组sql和xquery语句作为输入,动态的备选语句的实行时间,并回到结果集
12卡塔 尔(英语:State of Qatar)db2dart 数据库风华正茂致性检查工具和修复工具,这么些实用程序会从来从硬盘中读取数据库的数码和元数据开展相比,因而不可能对具有活动总是的数据库运营该工具
13) db2look 可以提取数据库定义语言DDL;生成缓冲池,表空间和数据库分区组音讯 ; 创造数量定义语言DDL ;搜集数据库子集的总括数据和DDL。以致用db2look来构建立模型拟测量试验数据库

条件搭建

(1)DB2Client

DB2 客户端:DB2 v9.1

设置到位后,能够通过cmd命令行查看 DB2Client 相关音讯:

  • db2level:查看DB2Client版本信,包括32/64位

在开班一向运转 db2cmd 来运作 db2cmd.exe 运维 db2命令行程序,执行 db2:

图片 1

而后,能够推行连接数据库、访问数据等操作。

db2命令行连接数据库

catalog tcpip node runnode_My remote IP server Port
catalog database calldb_Dest as calldb_My at node runnode_My

再凭 顾客名和登陆密码 就能够访问数据库了。个中,DB2 数据库暗中同意端口是 50000。

connect to calldb_My user 用户名 using 密码

(2)Quest Central

DB2 可视化学工业具:Quest Central for DB2 v5.0.2.4

有关心册码

  • Quest Central for DB2:2-95710-05964-91891-64750 和 Bergelmir/CORE
  • Knowledge Xpert for DB2:147851648424638496327 和 stenny

设置之后,运营遇到如下难点:

图片 2

解决方式:程序上点击鼠标右键-->属性-->包容性;勾选以致极情势运维这么些程序(宽容windowsXP卡塔尔;勾选以管理人身份运路程序,就可以减轻。

具体操作

经过 db2命令 连接到数据后,在 Quest Central 首页会展现已一而再的料理数据库的接二连三结点。

除 Quest Central 外,还应该有其余 DB2可视化工具,可扩充学习。

14)

第十八章 v10.1的新特点 

功底运用

此前多是用 SQLServer,初次操作 DB2 数据库,虽说语法多数周围,依旧各个不顺手。

有关DB2,相关质地和本本推荐:

  • 牛新庄 -《绳趋尺步DB2》《深刻深入分析DB2》《DB2品质调解与优化》
  • 《DB2 Express-C 连忙入门》

此外,可参考:DB第22中学中原人民共和国社区;

三个服务器能够建多少个实例,二个实例下得以建四个数据库,叁个数据库能够包含多少个表空间。

多少个注意事项

  • SQL 语句必须要以 ; 结尾
  • declare 定义变量不要带 @,那是与 SQL Server 的区分
  • SQLSTATE 和 SQLCODE 能够提供 SQL 命令的运市场价格况
  • 存款和储蓄进程调用:call ProcedureName(inVal, ..., inVal, ?, ... , ?);,在那之中,? 是出口参数占位符
  • NULL 对于完整性约束和查询带给负效应,建议表中最佳未尝空值,在建表时抬高非空节制
  • 表存款和储蓄在表数据空间,索引存款和储蓄在目录数据空间
  • 分区进步系统品质

常用命令

(1)查询

// 查看表字段信息
[1]. describe table schemaName.tableName;
[2]. describe select * from schemaName.tableName;
// 查看表索引信息
[1]. describe indexes for table schemaName.tableName show detail;
[2]. select * from syscat.indexes where tabname='大写的表名';

(2)删除

// 删除索引
drop index schemaName.indexName;

(3)重命名

// 重命名 表名
rename table schemaName.oldTabName to newTabName;
// 重命名 字段
alter table schemaName.TabName
    rename column oldColName to newColName;

中间,表 oldTabName 不要有外键限定和视图援引。别的,尽量幸免字段重命名。

建表

已知存在表 tabSqh,成立 tabSqh 的副本 tabSqh_Copy:

CREATE TABLE tabSqh_Copy like tabSqh;
INSERT INTO tabSqh_Copy select * from tabSqh;

细心,该办法只复制表结会谈表数据,tabSqh_Copy 未有相关的表约束,必要手动增加:

alter table tabName
    add constraint P_tabName primary key(IDKey);
alter table tabName1
        add constraint F_IDKey foreign key (IDKey)
                references tabName2 (IDKey)
on delete restrict on update restrict;        

任何有关限定增添方法如是之。

SELECT 高档用法

此地介绍 select 在 DB2 中的 3 种尖端用法:

(1卡塔尔国复制表结构

CREATE TABLE new_table_name LIKE table_name; 

(2卡塔尔国制造结果表

CREATE TABLE new_table_name AS (
    SELECT * FROM table_name
) DEFINITION ONLY; 

(3卡塔 尔(阿拉伯语:قطر‎创立物化查询表(MQT卡塔尔国

create table new_table_name AS (
    select * from table_name
) data initially deferred refresh deferred;   
refresh table new_table_name; 

物化表SELECT语句看似二个询问,未有当真造成表,类型展现为Query,但它完全能够当表来用。 

删表

(1卡塔 尔(阿拉伯语:قطر‎删除单行数据或批量去除数据:方法2比办法1属性好

// 方法1
DELETE FROM tabName WHERE 过滤条件  
// 方法2
DELETE FROM  
(  
    SELECT * FROM tabName WHERE 过滤条件  
);

(3卡塔尔全表数据删除

// 方法1
DELETE FROM tabName;
// 方法2
DROP TABLE ...
CREATE TABLE ...
// 方法3
ALTER TABLE tabName ACTIVATE NOT LOGGED INITIALLY WITH EMPTY TABLE;

(4卡塔 尔(英语:State of Qatar)直接删除表

DROP TABLE tabName;

临时表

DB2的有的时候表基于会话(session卡塔尔,且会话之间人机联作隔开分离。当会话甘休时,有时表的多少被删除,有时表也会被剔除。

不经常表的法力:

  • 保留中间结果集,以便职分的后续管理
  • 制止复杂的SQL语句,将一条较为复杂的SQL语句分解成多条简单的SQL语句,提升运转效用

    // 创立有的时候表
    DECLARE GLOBAL TEMPORARY TABLE session.TmpTableName LIKE rvc.TableName INCLUDING COLUMN DEFAULTS
    WITH REPLACE
    ON COMMIT PRESERVE ROWS NOT LOGGED;
    // 向一时表中插入数据 INSERT INTO session.TmpTableName SELECT * FROM rvc.TableName WHERE <过滤条件>;

内部,NOT LOGGED 代表不记录日志,WITH REPLACE 表示若已存在不常表则替换之,ON COMMIT PRESE牧马人VE ROWS 表示commit后照旧保留表中的数据。之后,不时表能够看成是普通表,查询、联表均可。

至于session有的时候表的多少个难题:

有关session有时表调控选项 ON COMMIT PRESE景逸SUVVE ROWS的解释:

只顾,全局不常表允许创造索引、但不一样意创设主键和唯生龙活虎限制。成立的一时半刻表同原表有同意气风发的表结构,可是相关列的属性(主键、外键、唯后生可畏约束、索引等卡塔 尔(英语:State of Qatar)消息是绝非的。

此外音讯可参看:DECLARE GLOBAL TEMPORARY TABLE - IBM;

DGTT 与 CGTT

上述有的时候表均为 DGTT(已注脚的全局有时表卡塔 尔(英语:State of Qatar),DB 9.7 起首援救CGTT(已成立的全局临时表卡塔 尔(阿拉伯语:قطر‎。

共同点:

  •  支持基于会话的数据
  •  匡助索引,但不协理唯生机勃勃限定或主键

两岸都扶持基于会话的多少。

CGTT 优点:

  •  长久化的,在系统安装时优先创造、供以往分享之,而 DGTT 是在某三次复中扬言、仅供该会话使用;
  •  幸免在各客商会话开头时宣称有的时候表的供给;
  •  选取与平常表相符的情势准则,而 DGTT 必需是恒久的情势 SESSION;

创建 CGTT:

CREATE GLOBAL TEMPORARY TABLE <table_name> (
    <column_name>  <column_datatype>,
    <column_name>  <column_datatype>,
…  )
ON COMMIT [PRESERVE|DELETE] ROWS
ON ROLLBACK [PRESERVE|DELETE] ROWS 
[NOT LOGGED|LOGGED] 
DISTRIBUTE BY HASH ( col1,..)
IN <tspace-name>;

其它详细新闻可参看:DB2 临时表 - DGTT 和 CGTT;

索引

目录是铁定的事情键值的集聚,每叁个键值指向表的一整套。

目录是黄金年代把双刃剑,当表的目录过多时,数据删除、插入和更新频率会裁减,当索引过少大概陈设不客观时会影响多少的询问效用。尽量不要在含有 null 值的字段上树立(单列卡塔尔索引,因为索引不会蕴藏该条记录的新闻。

对此构成索引,教导列(组合索引中排在最左边的列卡塔尔国对查询语句中where条件的熏陶最大。因而,应该对索引键中的列按重复值由少到多的逐一排序,该排序会使索引键提供最好品质。

优点:

  •  加速查询速度
  •  制止不必要的表扫描 或 排序操作
  •  减弱死锁的发出
  •  唯风华正茂性索引保险数据的唯生龙活虎性

缺点:

  •  额外的存放空间
  •  索引创制和维护的耗费时间

总括音讯

数据库对象的总计参数音信,如表的数据量大小、占用的页数、表的行数、索引的情形和各市的分区情状等。

二个SQL在写完并运维之后,大家只是告诉DB2去做哪些,并不是什么去做。具体什么做,决意于优化器。优化器为了扭转最优的实行布置,要求调控当前的种类新闻、目录中的计算新闻等。runstats 命令正是用来搜聚数据库对象的景况音信,对优化器生成最优的实行陈设重大。

对数据表频仍的insert, update,会形成数据仓库储存款和储蓄中现身物理碎片,runstats能够对数据库进行数据整合,有助于数据块一而再三回九转化、进步数据存取的频率,原理肖似于OS中的磁盘碎片收拾。

// 针对表
runstats on table schemaName.tableName;
// 针对表和索引信息
runstats on table schemaName.tableName [with distribution] and [detailed] indexes all;
// 针对某个单一索引
runstats on table schemaName.tableName for/and indexes schemaName.indexName;

1)

实行安排

在关系型数据库调优进程中,SQL语句是涉嫌品质难点的至关重要原因,而实践安插则是表达SQL语句实行进度的言语。

  •  差异数据库之间对于施行安顿的代表方法各不肖似
  •  每一遍导入存款和储蓄进度,生成的储存进度施行布置不确定完全相似,受当前的数据库参数、总计音信的熏陶

SQL语句的试行进度大器晚成共包括七个关键环节:

  •  数据读取情势(scan卡塔 尔(阿拉伯语:قطر‎:表扫描 or 索引围观
  •  表之间怎么举办接二连三(join卡塔尔国:蕴含Nest Loop 、Merge Join、Hash join及半老是等、多表间的连接各样选择

至于多表间连接的逐意气风发接纳主题素材:

无论是在同等条SQL语句中含有了不怎么张表连接,同一时刻唯有两张表张开连接,但多表间的连接各样也是决定品质的重大原因。数据库对于表的依次的拈轻怕重,遵照五个表之间总是后得出的行数进行排序,倘使总括音讯与实际景况不是相当大,有超级大可能率会引致由于总是各类不当而形成的特性难题。

有关音信请参见:DB2实行安排浅析;

对此有个别复杂的SQL,提议接受Quest Central 中的 SQL Turning 功用,相比较直观。

SQL语句试行陈设的别的查看方法:

(1)db2expln

db2expln施行安排分为三局地:

  •  当前访问推行安排的言语
  •  施行布署详细音信
  •  试行铺排图:从下往上,从左往右,依据号码从大到小的顺序实行阅读

在cmd命令行运转 db2expln 命令,能够查看该命令的利用匡助。

db2expln -d 数据库名称 -u 用户名 密码 -q "sql语句"[-f "文件名.sql"] -t -o 输出文件名.out

其间,文件名.sql 中的多条独立的SQL语句各占1行,行末不要带分号。

db2expln -d dbName -u sqh cmb@2018 -q "sql语句" -g -t -o tmp_sqh.out
db2expln -d dbName -u sqh cmb@2018 -f "sqh.sql" -g -t -o tmp_sqh.out

对上述命令的表达:

  • -t:输出到极点,-o:输出到文件
  • -q:实践叁个SQL语句,-f:奉行有个别保存了多条SQL语句的公文
  • -g:图形化呈现
  • -z:钦定SQL语句间的相间符

参考:使用 db2expln 的 DB2 SQL质量优化示例;

(2)db2exfmt

该办法要求在DB2安装目录 ...IBMSQLLIBMISC 下有 explain.dll 文件,有待于进一层学习。

有关查看存款和储蓄进程的执行布置

首先,获取存款和储蓄进度相对应的包

SELECT bname, bschema, pkgname, pkgschema 
FROM syscat.packagedep
WHERE btype='T' AND pkgname in (
     select bname from sysibm.sysdependencies where dname in (
            select specificname from syscat.procedures where procname='存储过程名称' AND procschema='存储过程模式名称'
     )
);

然后,再通过如下命令获取包中的实践安排

db2expln -d 数据库名称 -u 用户名 密码 -g -c 包模式名称 -p 包名称 -s 0 -t -o tmp_sqh.out

在乎,上述代码获取存款和储蓄进程对应的包,某个景况下询问不到音讯,至于为啥还不理解,再提供另大器晚成种艺术

select c.PROCSCHEMA, c.PROCNAME, b.* 
from syscat.STATEMENTS b, syscat.PROCEDURES c, syscat.ROUTINEDEP d
where b.pkgname = d.bname
      AND c.SPECIFICNAME = d.SPECIFICNAME
      AND c.PROCSCHEMA   = d.ROUTINESCHEMA
      AND c.PROCSCHEMA   = '存储过程模式名称' AND c.PROCNAME = '存储过程名称'; 

小结之,鉴于数据仓库储存款和储蓄进程进行铺排的多变性,建议:

  •  runstats rebind
  •  删除重新建立 

runstats 命令参见上述总结音信部分,下边给出别的常用命令

// 重新绑定包
rebind package pkgSchemaName.pkgName;
// 更新 package cache 中的执行计划
flush package cache dynamic;

留意,runstats 仅是立异实施安排的一方面(对动态SQL生效、但对存款和储蓄进程无效卡塔尔,另一面还需 rebind 包(周旋异存款和储蓄进程实行安插才使得卡塔尔国。

================================================================================================================================================================================================================================

================================================================================================================================================================================================================================

本文由亚洲城ca88com手机版发布于会员中心,转载请注明出处:DB2

上一篇:这里有最全的设计风格,Behance上爆火的2017设计趋 下一篇:没有了
猜你喜欢
热门排行
精彩图文
  • 生产环境下搭建mongodb复制集高可用环境,单机复
    生产环境下搭建mongodb复制集高可用环境,单机复
    情形描述:有三台ubuntu服务器,,每台服务器桐月经有mongodb实例。创制3个mongo2.4的新实例,分别作为四个复制集节点,同时保险了日前单节点情状的安居 规划:
  • 雪域17日旅行攻略,机票最低190元
    雪域17日旅行攻略,机票最低190元
    雪域17日旅行攻略,机票最低190元。冬辰参观去何方?许六人都不会首荐江西,因为太远.因为太冷,因为开支太高.因为高原反应 喜欢 评论 浏览 天数:1
  • 严肃的谈一谈非主流与杀马特
    严肃的谈一谈非主流与杀马特
    近些日子一贯在纠缠三个小说的内容,小编不精通该用什么样的办法表明出来。于是写了删,删了改,却依然未能使和煦称心如意。想着那年就快截至了,
  • 1的单节点安装
    1的单节点安装
    Win10上利用子系统搭建hadoop当地开辟情形及常见难点一蹴而就 服务器遭遇:Ubuntu15.04、jdk1.7、Hadoop2.7.1 1的单节点安装。说明 满心激励的备选攻读hadoop,没悟
  • 集聚温商力量,第十四届全国各地温州商会年会
    集聚温商力量,第十四届全国各地温州商会年会
    ca亚洲城666最新网址,  集聚温商力量,第十四届全国各地温州商会年会郑州温商再获殊荣。商家着重报讯(新闻报道工作者朱颜北) 前不久,来自全国各