### DB2 使用经验积累知识点概览 #### 一、DB2专有名词解释 - **INSTANCE(实例)**:DB2中的实例是指运行DB2数据库管理系统的环境,它为多个数据库提供了一个共享的服务环境。每个实例都有一个独立的进程空间,可以包含多个不同的数据库。 - **DB2ADMINISTRATIONSERVER(管理服务器)**:DB2管理服务器是一种用于集中管理和监控DB2环境的工具。它可以监控多个DB2实例,并提供一系列管理功能,如性能监控、配置管理等。 - **CONTAINER(容器)**:在DB2中,容器是存储数据库文件的一种逻辑结构,类似于文件系统中的目录。容器可以是文件系统中的目录,也可以是磁盘分区的一部分。 - **DRDA(Distributed Relational Database Architecture,分布式关系数据库架构)**:DRDA是IBM开发的一种标准协议,用于实现不同DB2实例之间的数据交换。通过DRDA,DB2可以与其他支持该协议的数据库进行通信。 - **DARI (Database Application Remote Interface)**:DARI是一种远程接口技术,用于实现客户端应用程序与远程数据库之间的交互。 - **SPM(SQL Performance Monitor)**:SQL性能监视器是DB2提供的一个工具,用于监控SQL语句的性能。 - **FCM(File Control Manager)**:FCM是DB2中的文件控制管理器,负责管理数据库文件的读写操作。 - **ADSM(Automated Data Storage Management)**:ADSM是一种自动化的数据存储管理系统,用于管理DB2数据库中的存储资源。 - **DCE(Distributed Computing Environment)**:DCE是一种分布式计算环境,提供了多种服务来支持分布式应用程序。 #### 二、DB2编程 - **执行文件中的脚本**:在DB2中可以通过`RUNSQLSCRIPT`命令执行存储在文件中的SQL脚本。 - **创建存储过程**:创建存储过程时,需要注意在`CREATE`关键字后不应使用`TAB`键,以避免语法错误。 - **使用临时表**:临时表是在会话期间创建并在会话结束时自动删除的表。它们可以用来存储临时数据,但需要注意的是,临时表不能建立索引。 - **从数据表中取指定前几条记录**:可以使用`ROWNUM`或`FETCH FIRST n ROWS ONLY`来获取表中的前几条记录。 - **游标的使用**:游标允许用户逐行处理查询结果。需要注意的是,在使用游标时必须正确使用`COMMIT`和`ROLLBACK`来管理事务。 - **类似DECODE的转码操作**:可以使用`CASE`表达式来实现类似Oracle中`DECODE`的功能。 - **类似CHARINDEX查找字符在字符串中的位置**:可以使用`POSITION`函数来查找一个字符串在另一个字符串中的位置。 - **类似DATEDIF计算两个日期的相差天数**:可以使用`JULIANDAY`函数结合简单的数学运算来计算两个日期之间的差值。 - **写UDF(User-Defined Function)**:UDF允许用户定义自己的函数,这些函数可以在SQL语句中使用。 - **创建含IDENTITY值(即自动生成的ID)的表**:在创建表时可以指定某一列具有`GENERATED ALWAYS AS IDENTITY`属性,以实现自增长的主键。 - **预防字段空值的处理**:可以通过设置默认值或使用`COALESCE`函数来处理可能为空的字段。 - **取得处理的记录数**:可以使用`ROW_COUNT()`函数来获取最近执行的SQL语句所影响的记录数。 - **从存储过程返回结果集(游标)**:存储过程可以返回一个游标,这样就可以在外部应用程序中获取存储过程的结果集。 - **类型转换函数**:DB2提供了多种类型转换函数,如`CAST`、`CONVERT`等,用于将一种数据类型转换为另一种数据类型。 - **存储过程的互相调用**:存储过程可以相互调用,但需要注意递归调用的问题。 - **C存储过程参数注意**:当使用C语言编写存储过程时,需要注意参数的传递方式和类型。 - **存储过程FENCE及UNFENCE**:FENCE和UNFENCE是用来控制并发访问存储过程的关键字。 - **SP错误处理用法**:可以使用`EXCEPTION`块来捕获并处理存储过程中出现的异常。 - **VALUES的使用**:VALUES子句可以用来插入单行或多行数据。 - **给SELECT语句指定隔离级别**:可以在`SELECT`语句中使用`WITH (READ UNCOMMITTED, NOWAIT)`来指定隔离级别。 - **ATOMIC及NOT ATOMIC的区别**:ATOMIC表示事务中的所有操作要么全部成功要么全部失败;NOT ATOMIC则允许事务中的某些操作独立于事务成功或失败。 - **C及SQL存储过程名称都要注意长度**:存储过程的名称有一定的长度限制,通常不超过128个字符。 - **怎样获得自己的数据库连接句柄**:可以通过`DB2CONNECT`命令或者使用API函数来获取数据库连接句柄。 - **类似于ORACLE的NAMEPIPE**:DB2也支持类似的命名管道机制来实现进程间通信。 - **类似于ORACLE的TRUNCATE清表但不记日志的做法**:可以使用`TRUNCATE TABLE`语句来快速清空表中的数据而不记录日志。 - **用CLI编程批量的INSERT**:使用DB2 CLI编程时,可以通过批处理的方式一次性插入多条记录,提高插入效率。 #### 三、DB2一些不好的限制 - **临时表不能建索引**:DB2中的临时表不允许创建索引。 - **CURSOR不能定义为WITH UR(可以但…)**:虽然DB2允许定义带有`WITH UR`的游标,但在实际应用中可能会遇到性能问题。 - **CURSOR ORDER BY以后不能FOR UPDATE**:当游标包含`ORDER BY`子句时,不能使用`FOR UPDATE`选项。 - **程序中间不能自由改变隔离级别**:一旦程序开始执行,其隔离级别不能在中途改变。 - **UPDATE不能用一个表中的记录为条件修改另一个表中的记录**:DB2不支持跨表的更新操作。 - **如果显示调用存储过程时传NULL值要注意**:在调用存储过程时,如果参数为`NULL`,可能会导致意外的行为。 #### 四、DB2编程性能注意 - **大数据的导表的使用(EXPORT, LOAD, IMPORT)(小心)**:对于大数据量的操作,建议使用`EXPORT`和`LOAD`命令,而不是`IMPORT`,因为后者性能较低。 - **SQL语句尽量写复杂SQL**:在编写SQL时,尽量避免简单重复的查询,可以通过复杂的嵌套查询来提高效率。 - **SQLSP及CSP的选择**:根据具体的应用场景选择使用SQL存储过程还是C存储过程。 - **查询的优化(HASH及RR_TO_RS)**:利用哈希索引和`RR_TO_RS`特性来优化查询性能。 - **避免使用COUNT(*)及EXISTS的方法**:使用`COUNT(*)`和`EXISTS`可能会降低查询效率,应考虑使用其他方法。 - **COMMIT的次数要适当**:频繁的提交事务会导致性能下降,应该合理地控制`COMMIT`的频率。 - **INSERT和UPDATE速度比较**:通常情况下,批量的`INSERT`比逐条的`INSERT`更快,而`UPDATE`操作的速度则取决于更新的范围和条件。 - **使用临时表取代一条一条插入**:对于大批量数据的插入,使用临时表可以显著提高效率。 - **循环次数很多时注意减少执行语句(附例子)**:减少循环中的SQL执行次数可以提高整体性能。 - **看程序执行时间及结果DB2BATCH**:使用`DB2BATCH`命令来查看程序的执行时间和结果。 - **看程序或语句具体的执行计划SHELL(改写后的语句)**:通过查看执行计划来分析SQL语句的执行路径,从而找出性能瓶颈。 - **两个表做JOIN的不同方式的区别**:不同的JOIN方式会影响查询的性能,例如`NOT IN`、`EXCEPT`和`NOT EXISTS`。 #### 五、其他系统和DB2的交互 - **DELPHI中从DB2取BIGINT的数据**:在DELPHI中使用合适的驱动程序和数据类型映射来处理从DB2获取的大整型数据。 #### 六、DB2表及SP管理 - **权限管理**: - **数据库权限控制**:控制对整个数据库的访问权限。 - **schema权限控制**:控制对模式(schema)的访问权限。 - **tablespace权限控制**:控制对表空间的访问权限。 - **table权限控制**:控制对特定表的访问权限。 - **package权限控制**:控制对包(package)的访问权限。 - **建存储过程会占用很多的系统资源(特别是IO)**:创建存储过程时会消耗较多的系统资源,尤其是IO资源。 - **看存储过程文本**:可以使用`DB2 LIST PROCEDURE`命令查看存储过程的具体文本。 - **看表结构**:可以使用`DESCRIBE TABLE`命令查看表的结构。 - **看表的索引信息**:使用`DB2 LIST INDEXES`命令查看表上的索引信息。 - **查看各表对SP的影响(被哪些SP使用)**:通过检查存储过程的源代码或使用DBA工具来确定哪些表被特定的存储过程引用。 - **查看SP使用了哪些表**:同样地,可以通过检查存储过程的源代码来确定存储过程使用了哪些表。 - **查看FUNCTION被哪些SP使用**:通过检查存储过程的源代码或使用DBA工具来确定哪些存储过程使用了特定的函数。 - **查SP的ID号**:使用`DB2 LIST PROCEDURES`命令可以查看存储过程的ID号。 - **从SP的ID号查存储过程名称**:通过存储过程的ID号反查存储过程的名称。 - **创建及使用SUMMARY TABLE**:SUMMARY TABLE是DB2中的一个特殊表,用于存储汇总数据。 - **修改表结构**:可以使用`ALTER TABLE`命令来修改现有的表结构。 - **给一个表改名**:使用`RENAME TABLE`命令可以更改表的名字。 - **得到一个表或库的相关脚本**:使用`DB2 EXPORT SCHEMA`命令可以导出表或库的相关脚本。 - **在对表操作的性能下降后对表做整理**:可以使用`REORG`命令对表进行重组,以恢复性能。 - **查看语句的执行计划**:使用`EXPLAIN PLAN`命令可以查看SQL语句的执行计划。
剩余113页未读,继续阅读
- 粉丝: 72
- 资源: 7
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 智慧工地综合解决方案——用有思想的技术, 创造无处不在的美好PPT(42页).pptx
- 智慧工地产品方案Word(39页).doc
- HTTP请求流程深入解析与性能优化技术指南
- 智慧工地产品方案Word(179页).doc
- 57页-项目管理+验工计价+智慧工地解决方案.pdf
- 56页-金祺创智慧工地解决方案.pdf
- 51页-智慧工地解决方案.pdf
- 51页-智慧工地整体解决方案(四川).pdf
- 苹果手机撕膜机sw16可编辑全套技术资料100%好用.zip
- 49页-智慧工地整体解决方案.pdf
- 47页-数字孪生智慧工地解决方案.pdf
- 48页-智慧工地监管平台解决方案.pdf
- 48页-5G智慧工地解决方案.pdf
- 48页-智慧工地可视化解决方案.pdf
- 白色简洁风格的宠物猫咪整站网站模板.zip
- 白色简洁风格的宠物乐园网页CSS模板下载.zip