db2数据库sql基础I.ppt

  1. 1、本文档共66页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
db2数据库sql基础I

并发性控制 隔离级别 丢失更新 访问未落实的数据 不可重复读 幻像读现象 可重复读(RR) 无 无 无 无 读稳定性(RS) 无 无 无 有 游标稳定性(CS) 无 无 有 有 未落实的读(UR) 无 有 有 有 并发性和隔离级别:什么是未落实读(UR) 并发性和隔离级别:什么是游标稳定性(CS) Concurrent read with two applications in cursor stability isolation level 并发性和隔离级别:什么是游标稳定性(CS) Reading and updating data with cursor stability isolation level 并发性和隔离级别:什么是读稳定性(RS) 并发性和隔离级别:什么是可重复读(RR) 隔离级的选择 应用程序类型 需要高数据稳定性 不需要高数据稳定性 读写事务(OLTP应用) RS CS 只读事务(OLAP应用) RR 或 RS UR 隔离级的指定 在预编译或绑定时: 对于用受支持的编译语言编写的应用程序,使用命令行处理器 PREP 或 BIND 命令的 ISOLATION 选项。也可以使用 PREP 或 BIND API 来指定隔离级别。 如果在预编译时创建绑定文件,则隔离级别存储在绑定文件中。如果在绑定时不指定隔离级别,则缺省值是预编译期间使用的隔离级别。 如果不指定隔离级别,则使用游标稳定性的缺省值。 注: 要确定程序包的隔离级别,执行下列查询: SELECT ISOLATION FROM SYSCAT.PACKAGES WHERE PKGNAME = ‘XXXXXXXX’ AND PKGSCHEMA = ‘YYYYYYYY’其中 XXXXXXXX 是程序包的名称,而 YYYYYYYY 是程序包的模式名。这两种名称都必须大写。 在语句级别: 使用 WITH 子句。语句级别的隔离级别覆盖为出现语句所在的程序包指定的隔离级别。 可以指定下列 SQL 语句的隔离级别: SELECT , SELECT INTO , 带 Where的 DELETE , INSERT , 带Where的 UPDATE , DECLARE CURSOR 下列情况适用于为语句指定的隔离级别: 在子查询上不能使用 WITH 子句 WITH UR 选项只适用于只读操作。在其他情况下,语句自动从 UR 更改为 CS。 运行时从 CLI 或 ODBC: 使用 CHANGE ISOLATION LEVEL 命令。对于 DB2 调用级接口(DB2 CLI),可以将隔离级别更改为 DB2 CLI 配置的一部分。在运行时,将 SQLSetConnectAttr 函数与 SQL_ATTR_TXN_ISOLATION 属性配合使用,来设置由 ConnectionHandle 引用的当前连接的事务隔离级别。也可以在 db2cli.ini 文件中使用 TXNISOLATION 关键字。 当在运行时使用 JDBC 或 SQLJ 时: 注: JDBC 和 SQLJ 是通过 DB2? 上的 CLI 实现的,这意味着 db2cli.ini 设置可能影响使用 JDBC 和 SQLJ 编写和运行的内容。在 SQLJ 中,使用 SQLJ 概要文件定制程序(db2sqljcustomize 命令)来创建程序包。 对于当前会话中的动态 SQL: 使用 SET CURRENT ISOLATION 语句来设置在会话中发出的动态 SQL 语句的隔离级别。 DB2的锁 数据库中的锁: 锁定发生在表级别与行级别 表锁与行锁的大小是一致的 以下因素会影响DB2对于锁的选择: 隔离级别 优化器选择的访问方案 表的 LOCKSIZE 属性 锁相关的参数 避免锁等待的方法 1:尽量用短事务 2:合理设置隔离级别 3:设置DB2_SKIPINSERTED,DB2_SKIPDELETED, DB2_EVALUNCOMMITTED 4:适当使用表锁 5:合理设置几个锁参数lock_list,避免锁升级 6:收集统计信息 7:合理建立索引,避免表扫瞄 提出的几个问题: 1)在已经建立好的数据库上面,怎么查看当前用户所有的表和存储过程? list tables for schema schema-name or Select tabname from syscat.tables where TABSCHEMA = ** Select procname from syscat.procedures where procschema = *** 2)怎么将存储过程的内容导出来 command:Get routine与put routine Proceudre:GET_ROU

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档