- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
IDB2相关程序优化建议v0.1
DB2相关程序优化建议
程序开发建议
注意程序锁的使用
DB2有十分严格的锁机制,存在锁升级的概念,锁也需要占用一定的缓存空间,当程序的行级锁达到一定数量后可升级为表级锁,表锁达到一定数量后可升级为库级锁,将整个数据库锁住。所以在写程序的时候我们要十分关注程序锁的使用,尤其是对应并发性高的程序。
隔离级别主要用于控制在DB2根据应用提交的SQL语句向DB2数据库中的相应对象加锁时, 会锁住哪些纪录, 也就是锁定的范围。 隔离级别的不同, 锁定的纪录的范围可能会有很大的差别。
隔离级别分为RR/RS/CS/UR这四个级别。 下面让我们来逐一论述:
1. RR隔离级别: 在此隔离级别下, DB2会锁住所有相关的纪录。 在一个SQL语句执行期间, 所有执行此语句扫描过的纪录都会被加上相应的锁。具体的锁的类型还是由操作的类型来决定, 如果是读取,则加共享锁; 如果是更新, 则加独占锁。由于会锁定所有为获得SQL语句的结果而扫描的纪录, 所以锁的数量可能会很庞大, 这个时候,索引的增加可能会对SQL语句的执行有很大的影响,因为索引会影响SQL语句扫描的纪录数量。
2. RS隔离级别:此隔离级别的要求比RR隔离级别稍弱,此隔离级别下会锁定所有符合条件的纪录。 不论是读取, 还是更新, 如果SQL语句中包含查询条件,则会对所有符合条件的纪录加相应的锁。 如果没有条件语句, 也就是对表中的所有记录进行处理,则会对所有的纪录加锁。
3. CS隔离级别: 此隔离级别仅锁住当前处理的纪录。
4. UR隔离级别:此隔离级别下,如果是读取操作,不会出现任何的行级锁。对于非只读的操作,它的锁处理和CS相同。
在这四种隔离级别中, CS是缺省值。 这四种隔离级别均可以保证DB2数据库在并发的环境下不会有数据丢失的情况发生。要注意的是如果对纪录进行了修改,需要在相应的纪录上加独占类型的锁, 这些独占类型的锁直到交易结束时才会被释放,这一点在四种隔离级别下都是相同的。
到这里, 我们已经对DB2中的表锁, 行锁, 隔离级别进行了论述。 DB2数据库的并发控制主要是通过这些机制。 理解了这些概念,我们就可以在使用DB2数据库时根据系统的实际需要来设计锁模式和隔离级别,来实现我们的系统要求, 在保障数据安全的前提下, 提供较好的并发性。
如上针对隔离级别的解释,我们在对大表,尤其是并发性高的大表进行查询是一定要指定隔离级别,在语句的最后加上 with ur。
注意清空表的方式
不管是在oracle还是DB2中delete的性能都是较低的,因为delete需要回归段记录日志,oracle提供了一种全表清空的高效方法truncate语句,而在DB2中没有同样的语句,DB2也提供了一种快速清空表的方式,这种方式在建表时需要加一个属性,如下:
CREATE TABLE DB_PRM.BRAND (
BRAND_ID BIGINT NOT NULL,
BRAND_NAME VARCHAR(200),
BRAND_STATE VARCHAR(3),
BRAND_DESC VARCHAR(250),
EFF_DATE TIMESTAMP,
EXP_DATE TIMESTAMP,
BRAND_FLAG CHARACTER(1),
PARENT_ID BIGINT
)
IN PRM_TBS_32
not logged initially
PARTITIONING KEY ( BRAND_ID ) USING HASHING;
然后在清空表时使用如下语句:
alter table [name] activate not logged initially with empty table
Sql的编写原则
DB2的sql编写规则和oracle有所不同,oracle不管是在写程序还是存储过程中尽量是化繁为简,将复杂的sql语句尽量拆开,分成多条sql进行处理,可以有效的提高程序的运行效率。
而在DB2中则恰恰相反,我们在写sql的时候尽量将多个sql语句写成一个负责的语句来处理,这样反而效率更高。
原因是DB2的sql解析处理引擎要远好于oracle,越是对于复杂的sql解析处理的速度优势越明显。反而DB2的程序写的过程,sql过多,如果事务处理不好,容易造成锁升级导致程序跑不出来死住的情况。
存储过程必要的参数
创建存储过程语句(CREATE PROCEDURE)可以包含很多参数,虽然从语法角度讲它们不是必须
的,但是在创建存储过程时提供它们可以提高执行效率。下面是一些常用的参数
容许 SQL (allowed-SQL)子句的值指定了存储过程是否会使用 S
您可能关注的文档
- Iaunsgl北京游.doc
- I2012年日常维护TD例行拨打测试项目.doc
- IATP的主要来源—细胞呼吸教案案例.doc
- IAtmelStudio6.docx
- I2012年最新版全国计算机职称考试模拟题库Word2003模块.doc
- I2012年最新Word学习教程.doc
- I2012年最新网站建设过程中的四个不要.doc
- IAutoCAD中所有英语词汇的翻译.docx
- IAutoCAD图形缩放与比例设置.doc
- [10月自考精神障碍护理学试卷参考答案.doc
- 2025年中山市沙溪镇人民政府所属事业单位招聘11人笔试备考题库及参考答案详解一套.docx
- 2025年中山市横栏镇人民政府所属事业单位第二期招聘笔试高频难、易错点备考题库及参考答案详解一套.docx
- 2025年中山市横栏镇人民政府所属事业单位第二期招聘笔试高频难、易错点备考题库含答案详解.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试高频难、易错点备考题库及完整答案详解1套.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试高频难、易错点备考题库参考答案详解.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试备考题库附答案详解.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试高频难、易错点备考题库附答案详解.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试备考题库附答案详解.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试备考题库及答案详解一套.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试备考题库及完整答案详解1套.docx
文档评论(0)