精华内容
下载资源
问答
  • db2数据库基础知识

    万次阅读 2018-08-07 16:43:49
    1,db2数据库特点 (1)具有很好的并行性(DB2把数据库管理扩充到了并行的,多节点的环境;数据库分区是数据库的一部分,包含自己的数据,索引,配置文件和事务日志; 数据库分区有时被称为节点)。 (2)获得最高...

    1,db2数据库特点

    (1)具有很好的并行性(DB2把数据库管理扩充到了并行的,多节点的环境;数据库分区是数据库的一部分,包含自己的数据,索引,配置文件和事务日志;
    数据库分区有时被称为节点)。
    (2)获得最高认证级别的ISO标准认证。
    (3)性能较高,适用于数据仓库和在线事物处理。
    (4)跨平台,多层结构,支持ODBC,JDBC等客户。
    (5)操作简单,同时提供GUI和命令行,在windowsNT和unix下的操作相同。
    (6)在巨型企业得到广泛的运用,向下兼容性好,风险小。
    (7)能够在所有主流平台上运行,最适于海量数据处理。

    2,db2数据库的特性

    (1)完全Web使能的:可以利用HTTP来发送询问给服务器。
    (2)高度可缩放和可靠:高负荷时可利用多处理器和大内存,可以跨服务器地分布数据库和数据负荷;能够以最小的数据丢失快速地恢复,提供多种备份策略。

    3,实现储存过程

    存储过程是存储在数据库中的一个预编译对象。这意味着过程是预编译的,可提供给各种应用执行。发送查询到服务器、分析和编译过程再不需要花费时间。
    (1)特点:存储过程是SQL语句和控制流语句的一个集合或批量,它在一个名称下存储,按独立单元方式执行。它能帮助提高查询的性能。
    (2)好处:
    提高性能(应用不必重复地编译此过程)
    减轻网络拥塞(为进行处理,应用不需要向服务器提交多个SQL语句)
    一致性较好(由于过程作为单一控制点,在过程中定义的编码逻辑和SQL语句在所有应用中被一致地实现)
    改善安全机制(用户可以被授予许可权来执行存储过程,尽管他们并不拥有这个过程)
    (3)执行存储过程语句:call proc_name(param,…)
    (4)RETURN关键字:允许存储过程把整型值返回给调用者。如果没有指定值,那么存储过程返回缺省值0或1,这依赖于存储过程的成功执行与否。RETURN value
    (5)嵌套过程:可以执行或调用来自另一个过程的过程。

    4,触发器

    触发器:一个触发器是由SQL语句集组成的代码块,在响应某些动作时激活该语句集。一个触发器也可被解释为特定类型的存储过程,每当动作发生时执行该过程。
    每当基础表中数据受到数据操纵语言(DML)语句——INSERT、UPDATE或DELETE的影响时,触发器就被激发。触发器帮助维持表中数据的一致、可靠和正确。
    (1)触发器特性:
    当任何数据修改语句被发出时,它就被自动激发。
    在存储过程的情况下,它不被显式地调用和执行。
    它防止了对数据的不正确、未授权的和不一致的改变。
    它不能返回数据给用户。
    触发器可最多嵌套。当一个触发器执行对另一个触发器初始化动作时触发器的嵌套就产生了。
    (2)触发器和数据完整性:
    触发器可用来确保和加强业务规则和数据完整性。业务规则是指确保业务平稳运转的组织政策。数据完整性是指数据的精确性和可靠性。
    如果某种改变违反了引用完整性,那么所有这样的改变都被拒绝,因此所有试图改变数据库中的数据都被取消。
    允许实施非常复杂的限制。
    它可执行依赖于对表所作修改的结果的特定的动作。

    5,实现处理事务和游标

    (1)理解DB2中的上锁
    共享锁:允许并发事务来读取资源。如果一个资源上有任何共享锁的话,其它的事务都不能修改该资源上的数据。一个共享锁在数据已被事务读取后释放资源。
    更新锁:更新(U)锁,在功能上避免了常见形式的死锁发生。
    互斥型锁:排它型锁(X),在功能上唯一地限制并发事务访问一个资源。用排它锁时没有任何其它的事务可以读取或者修改已上锁的数据。
    意向锁:指示SQL Server要在层次结构较低的某个资源上获得一个共享或排它锁。
    带有各种特性的意向锁包括意向共享(IS),意向排它(IX)和带有意向排它的共享锁(SIX)。
    模式锁:当任何数据定义(DDL)操作在表上执行时,SQL Server考察模式修改(Sch-M)锁。当编译查询时,SQL Server考察模式稳定(Sch-S)锁。
    死锁:DEADLOCK_PRIORITY命令可定制死锁。把某个会话的DEADLOCK_PRIORITY设置为LOW,使得要选的某个会话变成死锁受害者。
    (2)游标
    游标是一个在给定结果集中帮助访问和操纵数据的数据库对象。游标的主要好处是你可以逐行的处理数据。结果集被定义为从SELECT语句中获得的行的集合。
    声明游标:DECLARE cursor_name [INSENSITIVE] [SCROLL] CURSOR FOR {select_statement} [FOR {READ ONLY | UPDATE [OF column_list]}]
    INSENSITIVE:使结果集存储在tempdb数据库中,且不允许修改游标的结果集。
    SCROLL:指出游标可以向前或向后定位以读入数据。只要游标不是用INSENSITIVE选项声明,所有随后的取数显示基础表所作的修改。
    READ ONLY:防止结果集中的修改。
    UPDATE [OF column_list]:定义游标内可更新的列。如果使用OF column_list选项,只有列出可被更新的列;否则,除非游标被定义为READ ONLY,所有列都可更新。
    打开游标:OPEN cursor_name
    取数据:FETCH [[NEXT | PRIOR | FIRST | LAST | ABSOLUTE n | RELATIVE n]] FROM cursor_name [INTO @variable_name [,…n]]
    当一个FETCH语句执行时,一般认为游标定位在已被取到行的位置。被取到的行被称为当前行。0——成功执行了取数语句,-1——执行取数语句不成功, -2——被读取的行丢失
    关闭游标:CLOSE cursor_name 除了游标再打开的情况外,不可以进行读取和修改。
    解除分配游标:DEALLOCATE cursor_name 所有游标持有的资源都被释放。

    6,缓冲池

    (1)定义:缓冲池是从磁盘读取表和索引数据时,数据库管理器分配的用于高速缓存这些表或索引数据的主存储器区域。
    (2)创建:CREATE BUFFERPOOL “BP04K_I1”

    IMMEDIATE

    ALL DBPARTITIONNUMS

    SIZE 250

    NUMBLOCKPAGES 0

    PAGESIZE 32 K;
    (3)修改:ALTER BUFFERPOOL SIZE

    alter bufferpool IBMDEFAULTBP immediate size 100
    (4)删除:删除缓冲池时,应确保没有任何表空间已指定给这些缓冲池。不能删除IBMDEFAULTBP缓冲池。

    DROP BUFFERPOOL
    (5)查看:select * from SYSCAT.BUFFERPOOLS;

    7,表空间

    (1)定义:表空间是一种存储结构,它包含表,索引,大对象和长型数据,表空间位于数据库分区组中。空间是数据库及存储在该数据库中的表之间的逻辑层。
    表空间在数据库中创建,表在表空间中创建。
    (2)DB2 的表空间按管理方式分为两种:系统管理空间(System Management Space,SMS)和数据库管理空间(Database Management Space,DMS)。 按类型分为:规则表空间、大对象表空间、系统临时表空间、用户临时表空间。
    (3)好处:能够把数据合理的分布存储在不同的磁盘上或者存储在磁盘的不同位置上,有助于提高数据存取的效率。

    8,db2数据库调优

    (1)在where 语句后面字段不要用函数,这样导致字段不走索引
    (2)一个sql语句不要写的太长,尽量分临时表,一步一步写。
    (3)表不要建太多的索引
    (4)修改生产字段 一定要记得 REORG ->RUNSTATS -> 否则容易产生一些莫名其妙的错误。
    (5)游标使用 注意commit 和rollback
    (6)case when的用法 coalesce(username,’’) value(username,’’)
    (7)插入或者删除太慢,随时记得表维护
    (8)动态sql能 ,自动选择最佳的执行计划。
    (9)数据库优化命令:reorg、runstats 清除已delete的数据,优化数据结构

    扩展知识:

    数据仓库(Data Warehouse):是一个面向主题的(Subject Oriented)、集成的(Integrated)、相对稳定的(Non-Volatile)、
    反映历史变化(Time Variant)的数据集合,用于支持管理决策(Decisionaking Support)。
    ODS:是一个面向主题的、集成的、可变的、当前的细节数据集合,用于支持企业对于即时性的、操作性的、集成的全体信息的需求。 区别:ods是短期的实时的数据,供产品或者运营人员日常使用,而数据仓库是供战略决策使用的数据;ods是可以更新的数据,数据仓库是基本不更新的反应历史变化的数据,还有很多,这里就不一一列举了。

    展开全文
  • DB2数据库基础知识.ppt

    2020-08-28 12:12:08
    DB2数据库基础知识 DB2数据库的安装 DB2数据库的安装程序一般是以压缩包形式存在的如db2_9.7_linuxia32.tar.gz 解压.tar.gz形式的压缩包要使用的命令 tar jxvf FileName.tar.bz2 压缩成.tar.gz形式的压缩包要使用的...
  • DB2数据库基础知识 DB2数据库的安装 DB2数据库的安装程序一般是以压缩包形式存在的如db2_9.7_linuxia32.tar.gz 解压.tar.gz形式的压缩包要使用的命令 tar ? jxvf ? FileName.tar.bz2 压缩成.tar.gz形式的压缩包要...
  • DB2数据库常用指令以及重要知识点学习DB2数据库基础知识DB2数据库常用指令cd /usr/lpp/db2_07_01/instance./db2idrop InstNamecd /usr/lpp/db2_07_01/bin./db2ilistDB2数据库事务隔离级别问题DB2数据库与Mysql数据库...

    DB2数据库基础知识

    1、db2数据库特点
    (1)具有很好的并行性(DB2把数据库管理扩充到了并行的,多节点的环境;数据库分区是数据库的一部分,包含自己的数据,索引,配置文件和事务日志;数据库分区有时被称为节点)。
    (2)获得最高认证级别的ISO标准认证。
    (3)性能较高,适用于数据仓库和在线事务处理。
    (4)跨平台,多层结构,支持ODBC,JDBC等客户。
    (5)操作简单,同时提供GUI和命令行,在windowsNT和unix下的操作相同。
    (6)在巨型企业得到广泛的运用,向下兼容性好,风险小。
    (7)能够在所有主流平台上运行,最适于海量数据处理。
    2、db2数据库的特性
    (1)完全Web使能的:可以利用HTTP来发送询问给服务器。
    (2)高度可缩放和可靠:高负荷时可利用多处理器和大内存,可以跨服务器地分布数据库和数据负荷;能够以最小的数据丢失快速地恢复,提供多种备份策略。
    3、实现储存过程
    存储过程是存储在数据库中的一个预编译对象。这意味着过程是预编译的,可提供给各种应用执行。发送查询到服务器、分析和编译过程再不需要花费时间。
    (1)特点:存储过程是SQL语句和控制流语句的一个集合或批量,它在一个名称下存储,按独立单元方式执行。它能帮助提高查询的性能。
    (2)好处:
    提高性能(应用不必重复地编译此过程)
    减轻网络拥塞(为进行处理,应用不需要向服务器提交多个SQL语句)
    一致性较好(由于过程作为单一控制点,在过程中定义的编码逻辑和SQL语句在所有应用中被一致地实现)
    改善安全机制(用户可以被授予许可权来执行存储过程,尽管他们并不拥有这个过程)
    (3)执行存储过程语句:call proc_name(param,…)
    (4)RETURN关键字:允许存储过程把整型值返回给调用者。如果没有指定值,那么存储过程返回缺省值0或1,这依赖于存储过程的成功执行与否。RETURN value
    (5)嵌套过程:可以执行或调用来自另一个过程的过程。
    4、触发器
    触发器:一个触发器是由SQL语句集组成的代码块,在响应某些动作时激活该语句集。一个触发器也可被解释为特定类型的存储过程,每当动作发生时执行该过程。每当基础表中数据受到数据操纵语言(DML)语句——INSERT、UPDATE或DELETE的影响时,触发器就被激发。触发器帮助维持表中数据的一致、可靠和正确。
    (1)触发器特性:
    当任何数据修改语句被发出时,它就被自动激发。
    在存储过程的情况下,它不被显式地调用和执行。
    它防止了对数据的不正确、未授权的和不一致的改变。
    它不能返回数据给用户。
    触发器可最多嵌套。当一个触发器执行对另一个触发器初始化动作时触发器的嵌套就产生了。
    (2)触发器和数据完整性:
    触发器可用来确保和加强业务规则和数据完整性。业务规则是指确保业务平稳运转的组织政策。数据完整性是指数据的精确性和可靠性。
    如果某种改变违反了引用完整性,那么所有这样的改变都被拒绝,因此所有试图改变数据库中的数据都被取消。
    允许实施非常复杂的限制。
    它可执行依赖于对表所作修改的结果的特定的动作。
    5、实现处理事务和游标
    (1)理解DB2中的上锁
    共享锁:允许并发事务来读取资源。如果一个资源上有任何共享锁的话,其它的事务都不能修改该资源上的数据。一个共享锁在数据已被事务读取后释放资源。
    更新锁:更新(U)锁,在功能上避免了常见形式的死锁发生。
    互斥型锁:排它型锁(X),在功能上唯一地限制并发事务访问一个资源,用排它锁时没有任何其它的事务可以读取或者修改已上锁的数据。
    意向锁:指示SQL Server要在层次结构较低的某个资源上获得一个共享或排它锁。
    带有各种特性的意向锁包括意向共享(IS),意向排它(IX)和带有意向排它的共享锁(SIX)。
    模式锁:当任何数据定义(DDL)操作在表上执行时,SQL Server考察模式修改(Sch-M)锁。当编译查询时,SQL Server考察模式稳定(Sch-S)锁。
    死锁:DEADLOCK_PRIORITY命令可定制死锁。把某个会话的DEADLOCK_PRIORITY设置为LOW,使得要选的某个会话变成死锁受害者。
    (2)游标
    游标是一个在给定结果集中帮助访问和操纵数据的数据库对象。游标的主要好处是你可以逐行的处理数据。结果集被定义为从SELECT语句中获得的行的集合。
    声明游标:DECLARE cursor_name [INSENSITIVE] [SCROLL] CURSOR FOR {select_statement} [FOR {READ ONLY | UPDATE [OF column_list]}]
    INSENSITIVE:使结果集存储在tempdb数据库中,且不允许修改游标的结果集。
    SCROLL:指出游标可以向前或向后定位以读入数据。只要游标不是用INSENSITIVE选项声明,所有随后的取数显示基础表所作的修改。
    READ ONLY:防止结果集中的修改。
    UPDATE [OF column_list]:定义游标内可更新的列。如果使用OF column_list选项,只有列出可被更新的列;否则,除非游标被定义为READ ONLY,所有列都可更新。
    打开游标:OPEN cursor_name
    取数据:FETCH [[NEXT | PRIOR | FIRST | LAST | ABSOLUTE n | RELATIVE n]] FROM cursor_name [INTO @variable_name [,…n]]
    当一个FETCH语句执行时,一般认为游标定位在已被取到行的位置。被取到的行被称为当前行。0——成功执行了取数语句,1——执行取数语句不成功, 2——被读取的行丢失
    关闭游标:CLOSE cursor_name 除了游标再打开的情况外,不可以进行读取和修改。
    解除分配游标:DEALLOCATE cursor_name 所有游标持有的资源都被释放。
    6、缓冲池
    (1)定义:缓冲池是从磁盘读取表和索引数据时,数据库管理器分配的用于高速缓存这些表或索引数据的主存储器区域。
    (2)创建:

    CREATE BUFFERPOOL “BP04K_I1”
    
    IMMEDIATE
    
    ALL DBPARTITIONNUMS
    
    SIZE 250
    
    NUMBLOCKPAGES 0
    
    PAGESIZE 32 K;
    

    (3)修改:ALTER BUFFERPOOL SIZE

    alter bufferpool IBMDEFAULTBP immediate size 100
    

    (4)删除:删除缓冲池时,应确保没有任何表空间已指定给这些缓冲池。不能删除IBMDEFAULTBP缓冲池。

    DROP BUFFERPOOL
    

    (5)查看:select * from SYSCAT.BUFFERPOOLS;

    7、表空间
    (1)定义:表空间是一种存储结构,它包含表,索引,大对象和长型数据,表空间位于数据库分区组中。空间是数据库及存储在该数据库中的表之间的逻辑层。表空间在数据库中创建,表在表空间中创建。
    (2)DB2 的表空间按管理方式分为两种:系统管理空间(System Management Space,SMS)和数据库管理空间(Database Management Space,DMS)。 按类型分为:规则表空间、大对象表空间、系统临时表空间、用户临时表空间。
    (3)好处:能够把数据合理的分布存储在不同的磁盘上或者存储在磁盘的不同位置上,有助于提高数据存取的效率。
    8、db2数据库调优
    (1)在where 语句后面字段不要用函数,这样导致字段不走索引
    (2)一个sql语句不要写的太长,尽量分临时表,一步一步写。
    (3)表不要建太多的索引
    (4)修改生产字段 一定要记得 REORG ->RUNSTATS -> 否则容易产生一些莫名其妙的错误。
    (5)游标使用 注意commit 和rollback
    (6)case when的用法 coalesce(username,’’) value(username,’’)
    (7)插入或者删除太慢,随时记得表维护
    (8)动态sql能自动选择最佳的执行计划。
    (9)数据库优化命令:reorg、runstats 清除已delete的数据,优化数据结构
    扩展:
    数据仓库(Data Warehouse): 是一个面向主题的(Subject Oriented)、集成的(Integrated)、相对稳定的(Non-Volatile)、
    反映历史变化(Time Variant)的数据集合,用于支持管理决策(Decisionaking Support)。
    ODS:是一个面向主题的、集成的、可变的、当前的细节数据集合,用于支持企业对于即时性的、操作性的、集成的全体信息的需求。 区别:ods是短期的实时的数据,供产品或者运营人员日常使用,而数据仓库是供战略决策使用的数据;ods是可以更新的数据,数据仓库是基本不更新的反应历史变化的数据。

    DB2数据库常用指令

    因为工作的原因,接触到之前没有了解太多的DB2数据库,借此学习机会可以对DB2数据库常用指令进行一个简单的知识点总结。
    常用指令:
    1.改变列的长度

       db2 "alter table [tablename] alter column [columnname] set data type varchar(length)"
    

    2.在表中加列

    db2 "alter table [tablename] add [columnname]  varchar(256)"
    

    3.修改列名
    a.添加新列

    db2 "alter table [tablename] add [columnname]  varchar(256)"
    

    b.把旧列的数据更新到新列

    update [tablename] set 新列=旧列
    

    c.删除新列

     db2 "alter   table   [tablename]   drop   column   [columnname]
    

    4.打开命令行窗口
      #db2cmd
    5.打开控制中心
      # db2cmd db2cc
    6.打开命令编辑器
     db2cmd db2ce
    7.启动数据库实例
      #db2start
    8.停止数据库实例
      #db2stop
    如果你不能停止数据库由于激活的连接,在运行db2stop前执行db2 force application all就可以了 /db2stop force
    9.创建数据库
      #db2 create db [dbname]
    10.连接到数据库
      #db2 connect to [dbname] user [username] using [password]
    11.断开数据库连接
      #db2 connect reset
    12.列出所有数据库
     #db2 list db directory
    13.列出所有激活的数据库
      #db2 list active databases
    14.列出所有数据库配置
      #db2 get db cfg
    15.删除数据库
      #db2 drop database [dbname]
    执行此操作要小心,如果不能删除,断开所有数据库连接或者重启db2
    16. 列出所有用户表
      #db2 list tables
    17.列出所有系统表
     #db2 list tables for system
    18.列出所有表
      #db2 list tables for all
    19.列出用户表
      #db2 list tables for user
    20.列出特定用户表
      #db2 list tables for schema [user]
    21.创建一个与数据库中某个表(t2)结构相同的新表(t1)
      #db2 create table t1 like t2
    22.将一个表t1的数据导入到另一个表t2
    #db2 “insert into t1 select * from t2”
    23.查询表
      #db2 "select * from table name where …"
    24.显示表结构
      #db2 describe table tablename
    25.修改列
      #db2 alter table [tablename] alter column [columname] set data type varchar(24)
    26.执行脚本文件
      #db2 -tvf scripts.sql
    27.帮助命令

    • 查看命令帮助
       #db2 ? db2start
    • 查看错误码信息
      #db2 ? 22001
    • memo: 详细命令请使用"db2 ? <command>"进行查看。

    28.备份数据库
    #db2 backup db <db name>
    备注:执行以上命令之前需要断开数据库连接
    29.在线备份数据库
    #db2 -v “BACKUP DATABASE <database name> ONLINE TO <path> WITH 2 BUFFERS BUFFER 1024 INCLUDE LOGS WITHOUT PROMPTING”
    30.恢复数据库
    #db2 restore db <source db name>
    31.在线恢复数据库
    #db2 “RESTORE DB <database name> TO <db path> LOGTARGET <logpath> WITHOUT PROMPTING”
    #db2 “ROLLFORWARD DB <database name> TO END OF LOGS AND STOP” …
    32.导出数据文件

      #db2move <db name> export 
    

    33.导入数据文件
    #db2move <db name> import
    34.获取db2数据库管理配置环境信息
    #db2 get dbm cfg
    35.获取db2某个数据库数据库管理配置环境信息
    #db2 get db cfg for <db name>
    或者:连接至某个数据库以后执行db2 get db cfg
    36.更改db2日志空间的大小
    以下命令为了防止db2数据库过份使用硬盘空间而设,仅用于开发者自己机器上的db2,如果是服务器,则参数需要修改
    #db2 UPDATE DB CFG FOR <db name> USING logretain OFF logprimary 3 logsecond 2 logfilsiz 25600;
    如果页大小是4KB,则以上命令创建3个100M的日志文件,占用300MB硬盘空间。25600*4KB=102400KB。
    37.创建临时表空间

       #DB2 CREATE USER TEMPORARY TABLESPACE STMASPACE PAGESIZE 32 K MANAGED BY DATABASE USING (FILE 'D:\DB2_TAB\STMASPACE.F1' 10000) 
       EXTENTSIZE 256 
    

    38.获取数据库管理器的快照数据
    #db2 –v get snapshot for dbm
    39.显示进行程号
    #db2 list applications show detail
    40.加载数据:

    • 以默认分隔符加载,默认为“,”号
    db2 "import from btpoper.txt of del insert into btpoper" 
    
    • 以指定分隔符“|”加载
     db2 "import from btpoper.txt of del modified by coldel| insert into btpoper" 
    

    41.卸载数据:

    • 卸载一个表中全部数据
    db2 "export to btpoper.txt of del select * from btpoper" 
    db2 "export to btpoper.txt of del modified by coldel| select * from btpoper" 
    
    • 带条件卸载一个表中数据
     db2 "export to btpoper.txt of del select * from btpoper where brhid='907020000'" 
     db2 "export to cmmcode.txt of del select * from cmmcode where codtp='01'" 
     db2 "export to cmmcode.txt of del modified by coldel| select * from cmmcode where codtp='01'" 
    

    42.查询数据结构及数据:

     db2 "select * from btpoper" 
     db2 "select * from btpoper where brhid='907020000' and oprid='0001'" 
     db2 "select oprid,oprnm,brhid,passwd from btpoper" 
    

    43.删除表中数据:

     db2 "delete from btpoper" 
     db2 "delete from btpoper where brhid='907020000' or brhid='907010000'" 
    

    44.修改表中数据:

    db2 "update svmmst set prtlines=0 where brhid='907010000' and jobtp='02'" 
    db2 "update svmmst set prtlines=0 where jobtp='02' or jobtp='03'" 
    

    45.联接数据库

     db2 connect to btpdbs
    

    46.清除数据库联接

     db2 connect reset 断开数据库连接 
     db2 terminate 断开数据库连接 
     db2 force applications all 断开所有数据库连接 
    

    47.备份数据库

    db2 backup db btpdbs 
    

    48.恢复数据库

    db2 restore db btpdbs without rolling forward 
    

    49.DB2帮助命令:

       db2 ? 
       db2 ? restroe 
       db2 ? sqlcode (例:db2 ? sql0803) 注:code必须为4位数,不够4位,前面补0 
    

    50.bind命令:将应用程序与数据库作一捆绑,每次恢复数据库后,建议都要做一次bind

    (1) db2 bind br8200.bnd 
    (2) /btp/bin/bndall /btp/bnd 
        /btp/bin/bndall /btp/tran/bnd 
    

    51.查看数据库参数:

       db2 get dbm cfg 
       db2 get db cfg for btpdbs 
    

    52.修改数据库参数:

       db2 update db cfg for btpdbs using LOGBUFSZ 20 
       db2 update db cfg for btpdbs using LOGFILSIZ 5120 
    改完后,应执行以下命令使其生效: 
       db2 stop 
       db2 start 
    

    补充指令:
    db2 set schema btp 修改当前模式为"btp"
    db2 list tablespaces show detail 查看当前数据库表空间分配状况
    db2 list tablespace containers for 2 show detail 查看tablespace id=2使用容器所在目录
    db2 list application
    db2 list db directory 列出所有数据库
    db2 list active databases 列出所有活动的数据库
    db2 list tables for all 列出当前数据库下所有的表
    db2 list tables for schema btp 列出当前数据库中schema为btp的表
    db2 list tablespaces show detail 显示数据库空间使用情况
    删除一个实例:
    cd /usr/lpp/db2_07_01/instance
    ./db2idrop InstName
    列出所有DB2实例:
    cd /usr/lpp/db2_07_01/bin
    ./db2ilist
    为数据库建立编目
    db2 catalog db btpdbs on /db2catalog
    取消已编目的数据库btpdbs
    db2 uncatalog db btpdbs
    查看版本
    db2level
    显示当前数据库管理实例
    db2 get instance
    设置实例系统启动时是否自动启动。
    db2iauto -on 自动启动
    db2iauto -off 不自动启动
    数据库优化命令:
    reorg、runstats
    当数据库经过一段时间使用,数据空间会变得越来越庞大。一些delete掉的数据仍存放在数据库中,占用数据空间,影响系统性能。因此需要定期运行reorg、runstats命令,清除已delete的数据,优化数据结构。
    db2 reorg table 表名
    db2 runstats on table 表名 with distribution and indexes all
    因为要优化的表比较多,所以在/btp/bin目录下提供了一个sh程序runsall,可在当天业务结束后,运行runsall,对数据库进行优化。

    DB2数据库事务隔离级别问题

    数据库隔离级别
    数据库的四个隔离级别
    关于隔离级别的说明,使用到表t_bs_user,该表有如下字段:id,name,zt。
    未提交读:
    事务A读取到t_bs_user表中的id为1的数据zt为0,此时事务B修改了id为1的数据,将zt置为1,但是没有提交,事务A再次读取t_bs_user表的数据,发现zt为1,如果事务B做了回滚操作,那么事务A读取的将是脏数据。脏读可以通过增加事务隔离级别来避免。
    提交读:
    事务A读取到t_bs_user表中的id为1的数据zt为0,此时事务B修改了id为1的数据,将zt置为1,并提交,事务A再次读取t_bs_user表的数据,发现zt为1。这样就发生了不可重复读,事务A两次读取的数据不一样。不可重复读可以通过增加事务隔离级别来避免。
    重复读:
    事务A读取到t_bs_user表中的id为1的数据zt为0,并锁定此行数据,其他事务将无法对此行数据进行修改,但可以insert新的数据,事务A再次读取t_bs_user表中的数据,将会发现有新的数据,这个现象就是“幻读”。
    序列化:
    各个事务依次执行,不仅可以避免脏读、不可重复读,还避免了幻读。事务隔离级别最高,代价高,性能低,一般很少使用。

    db2锁
    在关系型数据库(BD2,Oracle,Sybase,Informix和Sql Server)最小的恢复和交易单位为一个事务,事务具有ACID(原子性,一致性,隔离性,永久性)特征。关系数据库为了确保并发用户在存取同一数据库对象的正确性(即无脏读,无丢失更新,可重复读,无幻读),数据库中引入了锁机制。基本的锁类型:共享锁S和排它锁X。
    排它锁:如果事务A对数据D加X锁,则其他任何事务都不能再对数据D加任何类型的锁,直至事务A释放数据D上的X锁;一般要求在修改数据前要向该数据加排它锁,所以排它锁又称为写锁。如果事务隔离级别是ur(未提交读),更新数据时是没有加排它锁的。
    共享锁:如果事务A对数据D加S锁,则其他事务只能对数据D加S锁,而不能加X锁,直至事务A释放D上的S锁;一般要求在读取数据前要向该数据加共享锁,所以共享锁又称读锁。
    下表是总结的DB2中各SQL语句产生表锁的情况(假设缺省的隔离级别为CS):
    SQL语句产生表锁的情况

    DB2数据库与Mysql数据库区别

    1、账号管理方式
    MySQL账号管理的方式与Oracle类似,由MySQL自己管理,账号存储在MySQL数据库的user表中,其账号的组成是有ip地址+用户名组成,而DB2没有自己的用户体系,其认证完全依赖于操作系统的账号。

    2、权限管理方式
    mysql可以对最小单元的对象可以批量进行授权;DB2则不能,相对比较繁琐。

    3、日志管理
    MySQL数据库使用日志双写的方式来保证数据的完整性与可恢复性,MySQL的事务日志与归档日志两个独立的对象,没有任何因果关系。DB2数据库的归档日志是有事务日志产生的。

    4、锁的管理方式
    MySQL使用MVCC模型实现锁的并发控制,DB2使用内存模型实现了锁的并发控制,在并发处理、处理资源冲突上讲,MySQL的并发处理能力、锁冲突的方式上要优于DB2。

    5、schema的管理方式
    MySQL数据库严格意义上讲没有schema的概念,其每个schema相当于独立的一个数据库。db2数据库可以在一个数据库能创建多个schema。

    6、表空间的管理方式
    MySQL数据库在表空间上支持相对较弱,存在很多的局限性,在条带化及空间的管理上存在软肋。DB2在这些方面做得都十分完善,管理方便、功能强大,而且易于维护。

    7、事务行为
    MySQL会回滚到上一个保存点,不会回滚整个事务;DB2会让整个事务进行回滚。

    8、数据恢复
    MySQL支持在恢复时打开数据库,灵活;DB2不支持在恢复或前滚时打开数据库。

    9、SQL支持
    MySQL对复杂SQL支持较弱,在运行时可能会存在性能问题;DB2支持各种复杂SQL,多种jion方式。

    10、语法差异
    MySQL遵守SQL92标准,但细节上有差异、默认大小写敏感;DB2遵守SQL92标准,大小写不敏感。

    11、高可用与容灾设计
    MySQL在高可用及容灾方面有非常多的方案,MySQL原生支持多种架构、复制方案来完成据库的高可用及容灾需求如MHA、PXC及MMM等,而且非常灵活、可根据业务需求进行个性化定制、二次开发,几乎零成本。DB2在这方面只有HADR方案且成本高昂。

    12、可扩展性
    MySQL在集群方面也有非常多的解决方案,如Cobar、Atlas、Fabric、Amoeba、TDDL、Mycat而且可以进行定制或者进行二次开发,可根据业务需求进行灵活扩展。DB2在这方面目前只有PureScale一种解决方案,灵活性较差。
    扩展阅读:
    从商用到开源:15个维度,全面剖析DB2与MySQL数据库的差异,链接: link.
    MySQL与DB2的数据类型对比,链接: link.

    展开全文
  • DB2学习总结(1)——DB2数据库基础入门

    万次阅读 多人点赞 2016-03-15 16:43:28
    DB2的特性 ... 高度可缩放和可靠:高负荷时可利用多处理器和大内存,可以跨服务器地分布...DB2数据库启停 启动数据库:db2start 停止数据库:db2stop 检查存在的数据库 LIST DATABASE DIRECTORY 数

    DB2的特性

    完全Web使能的:可以利用HTTP来发送询问给服务器。

    高度可缩放和可靠:高负荷时可利用多处理器和大内存,可以跨服务器地分布数据库和数据负荷;能够以最小的数据丢失快速地恢复,提供多种备份策略。

    DB2数据库启停

    启动数据库:db2start

    停止数据库:db2stop

    检查存在的数据库

    LIST DATABASE DIRECTORY

    数据库连接、断开

    CONNECT TO databasename

    CONNECT RESET

    创建、删除数据库

    CREATE DB databasename

    注:如果已经连着一个数据库的话,就创建不了数据库,会报“应用程序已经与一个数据库相连”的错

    DROP DB databasename

    第二节表

    数据类型

    可分为数值型(numeric)、字符串型(character string)、图形字符串(graphic string)、二进制字符串型(binary string)或日期时间型(datetime)。还有一种叫做DATALINK的特殊数据类型。DATALINK值包含了对存储在数据库以外的文件的逻辑引用。

    数值型数据类型包括:

    小整型SMALLINT:两字节整数,精度为5位。范围从-32,76832,767

    大整型INTEGERINT:四字节整数,精度为10位。范围从-2,147,483,6482,147,483,647

    巨整型BIGINT:八字节整数,精度为19位。范围从-9,223,372,036,854,775,8089,223,372,036,854,775,807

    小数型DECIMAL(p,s)DEC(p,s)NUMBERIC(p,s)NUM(p,s):小数型的值是一种压缩十进制数,它有一个隐含的小数点。压缩十进制数将以二-十进制编码(binary-coded decimalBCD)记数法的变体来存储。小数点的位置取决于数字的精度(p)和小数位(s)。小数位是指数字的小数部分的位数,它不可以是负数,也不能大于精度。最大精度是31位。小数型的范围从-10**31+110^**31-1

    单精度浮点数REAL:单精度浮点数是实数的32位近似值。数字可以为零,或者在从-3.402E+38-1.175E-37或从1.175E-373.402E+38的范围内。

    双精度浮点数DOUBLEFLOAT:双精度浮点数是实数的64位近似值。数字可以为零,或者在从-1.79769E+308-2.225E-307或从2.225E-3071.79769E+308的范围内。

    字符串包括:

    定长字符串CHARACTER(n)CHAR(n):长度介于1254字节之间。如果没有指定长度,那么就认为是1个字节。

    变长字符串VARCHAR(n)CHARACTER VARYING(n)CHAR VARYING(n):最长可达32,672字节。LONG VARCHAR最长可达32,700字节。

    字符大对象字符串CLOB(n):最长可以达到2,147,483,647字节

    定长图形字符串GRAPHIC(n):长度介于1127个双字节字符之间。如果没有指定长度,就认为是1个双字节字符。

    变长图形字符串VARGRAPHIC(n)LONG VARGRAPHIC:最大长度可达16,336个双字节字符。

    双字节字符大对象字符串DBCLOB(n):最长可达1,073,741,823个字符。用于容纳非传统型的数据,诸如图片、语音或混合媒体等,还可以容纳用户定义的类型及用户定义的函数的结构化数据。

    二进制大对象BLOB(n):二进制大对象是变长字符串,最长可达2,147,483,647字节。

    日期时间型数据类型

    DATEDATE是一个由三部分组成的值(年、月和日)。年份部分的范围是从00019999。月份部分的范围是从112。日部分的范围是从1n,其中n的值取决于月份。DATE列长10个字节。

    TIMETIME是一个由三部分组成的值(小时、分钟和秒)。小时部分的范围是从024。分钟和秒部分的范围都是从059。如果小时为24,分钟和秒的值都是0TIME列长8个字节。

    TIMESTAMPTIMESTAMP是一个由七部分组成的值(年、月、日、小时、分钟、秒和微秒)。年份部分的范围是从00019999。月份部分的范围是从112。日部分的范围是从1n,其中n的值取决于月份。小时部分的范围是从024。分钟和秒部分的范围都是从059。微秒部分的范围是从000000999999。如果小时是 24,那么分钟值、秒的值和微秒的值都是0TIMESTAMP列长26个字节。

     

    字段名称

    数据类型

    字段长度

    约束

    说明

    hospital_ID

    INTEGER

     

    主键

    医院ID

    hospital_Code

    VarChar

    30

    索引

    医院代码

    hospital_Name

    VarChar

    30

    索引

    医院名称

    hospital_Describe

    VarChar

    60

     

    医院描述

    hospital_IsActive

    Char

    1

    默认值(Y)

    有效(Y)无效(N)

     

    字段名称

    数据类型

    字段长度

    约束

    说明

    department_ID

    INTEGER

     

    主键

    科室ID

    department_Code

    VarChar

    30

    索引

    科室代码

    department_Name

    VarChar

    30

    索引

    科室名称

    department_Describe

    VarChar

    60

     

    科室描述

    department_Parent

    INTEGER

     

    索引

    上级科室

    department_IsLast

    Char

    1

    默认值(Y)

    末端标志

    hospital_ID

    INTEGER

     

    外键、索引

    医院ID

    Department_IsVirtual

    Char

    1

     

    是否虚拟科室

    department_IsActive

    Char

    1

    默认值(Y)

    有效(Y)无效(N)

     

    表的创建

    表字段添加、主键、外键、约束

    插入行

    INSERT [INTO] {table_name} [(column_list)]

    VALUES {DEFAULT | value_list | select_statement}

    例如:insert into xxx(id,name) values(1,limingzhong);

    更新行

    UPDATE table_name

    SET column_name = value [, column_name = value]

    [FROM table_name]

    [WHERE condition]

    删除行

    DELETE [FROM table(s)]

    [WHERE condition]

    查询

    SELECT * FROM table_name WHERE condition(s)

    例如:SELECT * FROM XU.HOSPITAL  where hospital_name like '_西一%'

    UNION运算符

    SELECT * FROM XU.AAA union SELECT * FROM XU.BBB;

    表连接(join

    SELECT * FROM XU.CCC a inner join XU.AAA b on a.idid=b.id where b.id=1001

    视图

    视图是一个虚表,它可以访问来自一个或多个表的列的子集,是从一个或多个表中派生出数据的对象,派生数据的表称为基表或底层表。它是作为数据库中对象存储的一种询问。

    视图提供一种安全机制。它保证用户只能检索和修改他们看得到的数据。基表中其余的数据既不能看到也不能被存取。复杂的询问的使用也可以通过视图来简化。复杂询问可以以视图的形式存储,视图中的数据可使用简单询问来抽取。

    定义视图后,它可以象数据库中任何其它的表一样被引用。虽然视图与表相似,但它并没有存储在数据库中。它从基表中派生出它的值集合。

    创建视图

    CREATE VIEW view_name

    [(column_name [, column_name]…)]

    AS select_statement

    在视图中,ORDER BY子句不能在SELECT语句中使用。

    删除视图

    DROP VIEW view_name [,view_name]…

    通过视图修改数据

    可以通过修改视图中的数据来修改基表数据。数据的修改不能影响到一个以上的基表,即每次的修改只能影响一个表。

    索引

    索引是一种内部表结构,它基于表中一个或多个列的值,提供对表中行的快速存取。

    索引的优点

    索引的主要目标是提高存取数据页的速度。服务器并非对所需的数据扫描每一页,而是扫描索引,获得数据存储单元的地址,并直接地存取信息。

    l         提高询问执行的速度

    l         实施数据唯一性

    l         加速了表之间的连接

    索引的缺点

    为表中的每一列创建索引是不明智的。

    l         创建索引要花时间

    l         索引也需要空间来存储数据

    l         每次修改数据时索引都需要更新

    簇索引

    l         数据被物理排序

    l         应该在具有高百分比唯一值和不经常被修改的属性上构建索引。

    非簇索引

    l         行的物理顺序不同于索引的顺序

    l         一般在用于连接和WHERE子句的列上创建,且它的值可能被经常地修改。

    l         当给出CREATE INDEX命令时,缺省创建非簇索引。

    索引的特性

    l         索引加速了连接表的询问、执行排序和分组

    l         索引可用来实施行的唯一性

    l         索引对数据大多数是唯一的列很有用。索引对具有大量重复数据的列没有多大用处

    l         当你修改索引列的数据时,相关索引会被自动更新

    l         你需要时间和资源来维护索引。你不应该创建不被经常性使用的索引

    l         簇索引应在非簇索引之前被创建。簇索引改变了行的顺序。如果非簇索引在簇索引之前被创建,那么它需要被重新构造

    l         典型地,非簇索引在外键上创建

    第三节实现存储过程

    存储过程是SQL语句和控制流语句的一个集合或批量,它在一个名称下存储,按独立单元方式执行。它能帮助提高查询的性能。

    存储过程的好处

    存储过程是存储在数据库中的一个预编译对象。这意味着过程是预编译的,可提供给各种应用执行。发送查询到服务器、分析和编译过程再不需要花费时间。

    l         提高性能:应用不必重复地编译此过程。

    l         减轻网络拥塞:为进行处理,应用不需要向服务器提交多个SQL语句。

    l         一致性较好:由于过程作为单一控制点,在过程中定义的编码逻辑和SQL语句在所有应用中被一致地实现。

    l         改善安全机制:用户可以被授予许可权来执行存储过程,尽管他们并不拥有这个过程。

    执行存储过程语句

    call proc_name(param,…)

    向过程传递参数

    参数:是查询中的一个占位符或是一个存储过程,只要查询或存储过程被执行,该过程就接受用户定义的值。

    参数的类型:

    l         输入参数:允许调用者向过程传递数据值。

    l         输出参数:允许存储过程向调用者返回数据值。

    RETURN关键字

    允许存储过程把整型值返回给调用者。如果没有指定值,那么存储过程返回缺省值01,这依赖于存储过程的成功执行与否。

    RETURN value

    嵌套过程

    可以执行或调用来自另一个过程的过程。

    create procedure pr1() language sql p1:begin declare id integer;decla name VARCHAR(60);set id=10;set name='abc';return 0;end p1

    DROP PROCEDURE语句

    DROP PROCEDURE proc_name

    不能撤销一个正被另一个过程调用的过程。

    第四节触发器

    触发器的定义和特征

    一个触发器是由SQL语句集组成的代码块,在响应某些动作时激活该语句集。一个触发器也可被解释为特定类型的存储过程,每当动作发生时执行该过程。

    每当基础表中数据受到数据操纵语言(DML)语句——INSERTUPDATEDELETE的影响时,触发器就被激发。

    触发器帮助维持表中数据的一致、可靠和正确。

    触发器的特征

    l         当任何数据修改语句被发出时,它就被自动激发。

    l         在存储过程的情况下,它不被显式地调用和执行。

    l         它防止了对数据的不正确、未授权的和不一致的改变。

    l         它不能返回数据给用户。

    触发器可最多嵌套。当一个触发器执行对另一个触发器初始化动作时触发器的嵌套就产生了。

    创建触发器

    CREATE TRIGGER XU.T1 AFTER  UPDATE OF NAME ON XU.AAA  FOR EACH ROW  MODE DB2SQL insert into BBB (id1,name1) values(1005,'国家')

    INSERT触发器

    当试图插入一行到触发器表中时,INSERT触发器被激发。当INSERT语句被发出时,一个新行被加到触发器和inserted表中。

    DELETE触发器

    当试图从触发器表中删除一行时,DELETE触发器被激发。

    使用DELETE触发器来实现引用完整性有三种途径:

    l         串联方法——每当从主表中删除记录时,删除依赖表中的记录。

    l         限制方法——如果相关记录出现在依赖表中,则限制从主表中删除记录。

    l         无效方法——每当一个记录从主表中删除时,把依赖表中所指列的值变为无效。

    UPDATE触发器

    ALTER TRIGGER命令

    l         撤销触发器且重新创建它

    l         使用ALTER TRIGGER

    DROP TRIGGER命令

    可用DROP TRIGGERDROP TABLE命令删除触发器。

    触发器和数据完整性

    触发器可用来确保和加强业务规则和数据完整性。业务规则是指确保业务平稳运转的组织政策。数据完整性是指数据的精确性和可靠性。

    l         如果某种改变违反了引用完整性,那么所有这样的改变都被拒绝,因此所有试图改变数据库中的数据都被取消。

    l         允许实施非常复杂的限制。

    l         它可执行依赖于对表所作修改的结果的特定的动作。

    第五节实现处理事务和游标

    事务

    一个事务是可以被定义为作为单个的逻辑单元工作的一串操作。单个的工作单元必须具有称为ACID(原子性、一致性、独立性和持久性)的四个性质。

    l         原子性:这规定或者所有的数据修改都执行或者所有的都不执行。

    l         一致性:在事务处理成功地完成后,所有的数据都处于一致的状态。在关系数据库中所有的规则必须应用到事务修改中来维持完全的数据完整性。

    l         独立性:一个事物或者在并发事务修改它之前的状态下访问数据,或者在第二个事务完成后访问数据。没有机会可看到事物的中间状态。

    l         持久性:规定了一个已完成的事务对数据任何改动在系统中永久有效。因此,一个已完成事务对数据的任何改变即使在系统故障的事件中也是有效的。这是通过备份和恢复事务日志的概念来保证的。(日志)

    显式事务

    就是事物的开始和结束都被显示地定义的事务。显式事务是用BEGIN TRANSACTIONCOMMIT TRANSACTION语句说明。

    BEGIN TRANSACTION

    BEGIN TRAN[SACTION] [transaction_name | @tran_name_variable]

    COMMIT TRANSACTIONCOMMIT WORK

    标志显式事务的结束点。这个语句用来结束事务处理时没有遇到错误的事务。

    COMMIT [TRAN[SACTION] [transaction_name | @tran_name_variable]]

    COMMIT WORK语句与COMMIT TRANSACTION语句作用相同。这两个语句之间的唯一的区别是COMMIT WORK语句不接受事务名。

    Autocommit事务

    Autocommit模式是SQL Server的缺省事务管理模式。在每一个T-SQL语句结束时,事务被自动提交或者回滚。BEGIN TRANSACTION语句重设缺省的自动提交模式。当显示事务被提交或回滚,或当隐式事务模式关闭时,SQL Server返回自动提交模式。

    ROLLBACK TRANSACTIONROLLBACK WORK

    把显式的或隐式的事务回滚到事务的开始,或者回滚到事务内的保存点。

    ROLLBACK [TRAN[SACTION] [transaction_name | @tran_name_variable | savepoint_name | @savepoint_variable]]

    ROLLBACK TRANSACTION语句和ROLLBACK WORK语句功能相同。两者间的唯一区别就是ROLLBACK WORK语句不接受事务名。

    保存事务

    SAVE TRANSACTION语句在事务内设置保存点。保存点把事务分成几个逻辑单元,如果事务的一部分是有条件地被取消,这样事务可以返回到保存点。

    SAVE TRAN[SACTION] {savepoint_name | @savepoint_variable}

    上锁

    SQL Server用上锁的概念确保事务的完整性和数据库的一致性。上锁,在功能上避免用户访问正在被其它用户改变的信息。在SQL Server中,上锁是自动实施的。

    事务的并发性

    SQL Server提供了乐观的和悲观的并发性控件。它用悲观并发性控件作为缺省控件,而乐观并发性控件可通过游标来完成。

    乐观并发性

    乐观并发性控件建立在多用户间资源冲突大概是不可能的假设基础上。乐观并发性允许事务执行不用锁定任何资源。只有在提交事务时才进行资源检查,以决定冲突是否发生。如果冲突发生,事务重新开始。

    悲观并发性

    悲观并发性控件在事务处理期间锁定资源。除非出现死锁,事务总能保证成功地完成。

    丢失更新

    丢失更新问题发生在当两个或多个事务基于原先所选值试图修改同一行的时候。在这种情况下,每一个事物意识不到其它的事务。事务对列中最后的更新会重写前面事务所作的更新。

    自由依赖性(无效读入)

    自由依赖性(uncommitted dependency)也称为无效读入(dirty read)。

    不一致性分析

    不一致性分析问题又称为不可重复问题。

    幻象读取

    幻象读取又称为幻象问题。

    理解DB2中的上锁

    SQL Server实现了多粒度上锁,这允许事务以不同级别对不同类型的资源上锁。为了最小化上锁的工作量,SQL Server在一个合适的事务的级别上自动地锁定资源。为了增强并发性,SQL Server以一个较小的粒度实现上锁(如行),但增加了开销,因为多行上锁必须设置许多的锁。在表级上锁时,粒度越大并发性越低,因为它拒绝其它事务对表任何部分的访问。粒度越大数据库服务器的开销就越小,因为维持的锁较少。

    锁项

    下表列出以粒度递增次序锁定的资源:

    描述

    RID

    分别锁定表中行的行标识符

    Key

    索引内的行锁。在串行化事务中用它来保护键范围

    Page

    是一个8K页或者一个索引页

    Extent

    是一个连续的8K数据页或索引页的组

    Table

    是一个完整表,包括所有数据和索引

    Database

    是完整的数据库

    SQL Server锁模型

    对于访问资源的事务,SQL Server通过用锁模式解决并发事务间的冲突。SQL Server使用资源锁模型列表如下:

    锁模式

    描述

    SharedS

    用作不改变或更新数据的操作(只读操作)。

    UpdateU

    用在可被更新的资源上。这个模式防止了多事务在读取、上锁及往后潜在的更新资源时发生的常见形式的死锁。

    ExclusiveX

    用于数据修改工作。这个模式确保多个更新不会同时作用到同一资源上。

    IntentI

    用于建立锁的层次结构。

    Schema

    当执行依赖于表模式的操作时使用使用。SQL Server支持两种类型的锁模式:模式稳定(Sch-S)和模式修改(Sch-M)。

    共享锁

    允许并发事务来读取资源。如果一个资源上有任何共享锁的话,其它的事务都不能修改该资源上的数据。一个共享锁在数据已被事务读取后释放资源。

    更新锁

    更新(U)锁,在功能上避免了常见形式的死锁发生。

    互斥型锁

    排它型锁(X),在功能上唯一地限制并发事务访问一个资源。用排它锁时没有任何其它的事务可以读取或者修改已上锁的数据。

    意向锁

    意向锁(I),指示SQL Server要在层次结构较低的某个资源上获得一个共享或排它锁。

    带有各种特性的意向锁包括意向共享(IS),意向排它(IX)和带有意向排它的共享锁(SIX

    锁模式

    描述

    Intent SharedIS

    通过在个别资源上设置共享锁(S),指示了一个事物的意图是读取一些(但不是全部)低层次的资源。

    Intent ExclusiveIX

    通过在个别资源上设置排它锁,指示了事务的意图是在层次结构中更新一些(但不是全部)低层次的资源。意向共享(IS)锁模式是意向排它(IX)锁模式的子集。

    Shared with Intent ExclusiveSIX

    通过在个别资源上设置意向排它(IX)锁,指示了事务的意图是允许并发读入层次结构中顶层资源和更新较低层一些(但不是全部)资源。在任何时刻,每个表不可能有一个以上共享意向锁(SIX)。这是因为表级共享锁(S)阻止对表的任何其它修改。共享意向排它锁(SIX)是共享锁(S)和意向排它锁(IX)的结合。

    模式锁

    当任何数据定义(DDL)操作在表上执行时,SQL Server考察模式修改(Sch-M)锁。当编译查询时,SQL Server考察模式稳定(Sch-S)锁。

    可以用sp_lock存储过程查看锁信息。

    死锁

    为探测死锁的情况,SQL Server扫描在等待锁请求的会话。SQL Server在初始扫描时,标记所有在等待的会话。当SQL Server第二次扫描会话时,启动递归的死锁搜索。如果发现了锁请求的任何循环链,SQL Server于是取消代价最小的事务且标志此事务为死锁受害者。当回滚了死锁受害者的事务后,SQL Server通过返回错误消息1205通知用户的应用程序。

    设置DEADLOCK_PRIORITY

    DEADLOCK_PRIORITY命令可定制死锁。把某个会话的DEADLOCK_PRIORITY设置为LOW,使得要选的某个会话变成死锁受害者。

    SET DEADLOCK_PRIORITY {LOW | NORMAL | @deadlock_var}

    定制LOCK_TIMEOUT

    可用来设置等待被阻塞资源的最长时间。当语句等待超过设置的时间后,SQL Server自动地取消此等待事务。

    SET LOCK_TIMEOUT [timeout_period]

    timeout_period:以微秒为单位。

    游标

    游标是一个在给定结果集中帮助访问和操纵数据的数据库对象。游标的主要好处是你可以逐行的处理数据。结果集被定义为从SELECT语句中获得的行的集合。

    游标能以下列方式处理结果集中的行:

    l         允许从结果集中检索指定的行

    l         允许结果集中当前行被修改

    l         帮助从结果集中当前行导航到不同行

    l         允许被其它用户修改的数据在结果集中是可见的

    游标的结构

    当在SQL Server中使用游标时,需要执行下面任务:

    l         定义游标和设置它的属性

    l         打开游标

    l         从结果集中取(Fetch)得检索行

    l         如果需要,游标当前行中的数据是可以被修改的

    l         关闭游标

    l         释放游标所使用的资源

    声明游标

    DECLARE cursor_name [INSENSITIVE] [SCROLL] CURSOR

    FOR {select_statement}

    [FOR {READ ONLY | UPDATE [OF column_list]}]

    INSENSITIVE:使结果集存储在tempdb数据库中,且不允许修改游标的结果集。

    SCROLL:指出游标可以向前或向后定位以读入数据。只要游标不是用INSENSITIVE选项声明,所有随后的取数显示基础表所作的修改。

    READ ONLY:防止结果集中的修改。

    UPDATE [OF column_list]:定义游标内可更新的列。如果使用OF column_list选项,只有列出可被更新的列;否则,除非游标被定义为READ ONLY,所有列都可更新。

    打开游标

    OPEN cursor_name

    取数据

    FETCH [[NEXT | PRIOR | FIRST | LAST | ABSOLUTE n | RELATIVE n]] FROM cursor_name [INTO @variable_name [,…n]]

    当一个FETCH语句执行时,一般认为游标定位在已被取到行的位置。被取到的行被称为当前行。

    @@fetch_status

    返回最后执行的取数语句状态

    l         0——成功执行了取数语句

    l         -1——执行取数语句不成功

    l         -2——被读取的行丢失

    关闭游标

    CLOSE cursor_name

    除了游标再打开的情况外,不可以进行读取和修改。

    解除分配游标

    所有游标持有的资源都被释放。

    DEALLOCATE cursor_name

    展开全文
  • DB2基础知识

    千次阅读 2019-03-15 08:47:30
    1,db2数据库特点 (1)具有很好的并行性(DB2把数据库管理扩充到了并行的,多节点的环境;数据库分区是数据库的一部分,包含自己的数据,索引,配置文件和事务日志; 数据库分区有时被称为节点)。 (2)获得最高认证...

    1,db2数据库特点

    (1)具有很好的并行性(DB2把数据库管理扩充到了并行的,多节点的环境;数据库分区是数据库的一部分,包含自己的数据,索引,配置文件和事务日志;
    数据库分区有时被称为节点)。
    (2)获得最高认证级别的ISO标准认证。
    (3)性能较高,适用于数据仓库和在线事物处理。
    (4)跨平台,多层结构,支持ODBC,JDBC等客户。
    (5)操作简单,同时提供GUI和命令行,在windowsNT和unix下的操作相同。
    (6)在巨型企业得到广泛的运用,向下兼容性好,风险小。
    (7)能够在所有主流平台上运行,最适于海量数据处理。
    2,db2数据库的特性

    (1)完全Web使能的:可以利用HTTP来发送询问给服务器。
    (2)高度可缩放和可靠:高负荷时可利用多处理器和大内存,可以跨服务器地分布数据库和数据负荷;能够以最小的数据丢失快速地恢复,提供多种备份策略。
    3,实现储存过程

    存储过程是存储在数据库中的一个预编译对象。这意味着过程是预编译的,可提供给各种应用执行。发送查询到服务器、分析和编译过程再不需要花费时间。
    (1)特点:存储过程是SQL语句和控制流语句的一个集合或批量,它在一个名称下存储,按独立单元方式执行。它能帮助提高查询的性能。
    (2)好处:
    提高性能(应用不必重复地编译此过程)
    减轻网络拥塞(为进行处理,应用不需要向服务器提交多个SQL语句)
    一致性较好(由于过程作为单一控制点,在过程中定义的编码逻辑和SQL语句在所有应用中被一致地实现)
    改善安全机制(用户可以被授予许可权来执行存储过程,尽管他们并不拥有这个过程)
    (3)执行存储过程语句:call proc_name(param,…)
    (4)RETURN关键字:允许存储过程把整型值返回给调用者。如果没有指定值,那么存储过程返回缺省值0或1,这依赖于存储过程的成功执行与否。RETURN value
    (5)嵌套过程:可以执行或调用来自另一个过程的过程。
    4,触发器

    触发器:一个触发器是由SQL语句集组成的代码块,在响应某些动作时激活该语句集。一个触发器也可被解释为特定类型的存储过程,每当动作发生时执行该过程。
    每当基础表中数据受到数据操纵语言(DML)语句——INSERT、UPDATE或DELETE的影响时,触发器就被激发。触发器帮助维持表中数据的一致、可靠和正确。
    (1)触发器特性:
    当任何数据修改语句被发出时,它就被自动激发。
    在存储过程的情况下,它不被显式地调用和执行。
    它防止了对数据的不正确、未授权的和不一致的改变。
    它不能返回数据给用户。
    触发器可最多嵌套。当一个触发器执行对另一个触发器初始化动作时触发器的嵌套就产生了。
    (2)触发器和数据完整性:
    触发器可用来确保和加强业务规则和数据完整性。业务规则是指确保业务平稳运转的组织政策。数据完整性是指数据的精确性和可靠性。
    如果某种改变违反了引用完整性,那么所有这样的改变都被拒绝,因此所有试图改变数据库中的数据都被取消。
    允许实施非常复杂的限制。
    它可执行依赖于对表所作修改的结果的特定的动作。
    5,实现处理事务和游标

    (1)理解DB2中的上锁
    共享锁:允许并发事务来读取资源。如果一个资源上有任何共享锁的话,其它的事务都不能修改该资源上的数据。一个共享锁在数据已被事务读取后释放资源。
    更新锁:更新(U)锁,在功能上避免了常见形式的死锁发生。
    互斥型锁:排它型锁(X),在功能上唯一地限制并发事务访问一个资源。用排它锁时没有任何其它的事务可以读取或者修改已上锁的数据。
    意向锁:指示SQL Server要在层次结构较低的某个资源上获得一个共享或排它锁。
    带有各种特性的意向锁包括意向共享(IS),意向排它(IX)和带有意向排它的共享锁(SIX)。
    模式锁:当任何数据定义(DDL)操作在表上执行时,SQL Server考察模式修改(Sch-M)锁。当编译查询时,SQL Server考察模式稳定(Sch-S)锁。
    死锁:DEADLOCK_PRIORITY命令可定制死锁。把某个会话的DEADLOCK_PRIORITY设置为LOW,使得要选的某个会话变成死锁受害者。
    (2)游标
    游标是一个在给定结果集中帮助访问和操纵数据的数据库对象。游标的主要好处是你可以逐行的处理数据。结果集被定义为从SELECT语句中获得的行的集合。
    声明游标:DECLARE cursor_name [INSENSITIVE] [SCROLL] CURSOR FOR {select_statement} [FOR {READ ONLY | UPDATE [OF column_list]}]
    INSENSITIVE:使结果集存储在tempdb数据库中,且不允许修改游标的结果集。
    SCROLL:指出游标可以向前或向后定位以读入数据。只要游标不是用INSENSITIVE选项声明,所有随后的取数显示基础表所作的修改。
    READ ONLY:防止结果集中的修改。
    UPDATE [OF column_list]:定义游标内可更新的列。如果使用OF column_list选项,只有列出可被更新的列;否则,除非游标被定义为READ ONLY,所有列都可更新。
    打开游标:OPEN cursor_name
    取数据:FETCH [[NEXT | PRIOR | FIRST | LAST | ABSOLUTE n | RELATIVE n]] FROM cursor_name [INTO @variable_name [,…n]]
    当一个FETCH语句执行时,一般认为游标定位在已被取到行的位置。被取到的行被称为当前行。0——成功执行了取数语句,-1——执行取数语句不成功, -2——被读取的行丢失
    关闭游标:CLOSE cursor_name 除了游标再打开的情况外,不可以进行读取和修改。
    解除分配游标:DEALLOCATE cursor_name 所有游标持有的资源都被释放。
    6,缓冲池

    (1)定义:缓冲池是从磁盘读取表和索引数据时,数据库管理器分配的用于高速缓存这些表或索引数据的主存储器区域。
    (2)创建:CREATE BUFFERPOOL “BP04K_I1”

    IMMEDIATE

    ALL DBPARTITIONNUMS

    SIZE 250

    NUMBLOCKPAGES 0

    PAGESIZE 32 K;
    (3)修改:ALTER BUFFERPOOL SIZE

    alter bufferpool IBMDEFAULTBP immediate size 100
    (4)删除:删除缓冲池时,应确保没有任何表空间已指定给这些缓冲池。不能删除IBMDEFAULTBP缓冲池。

    DROP BUFFERPOOL
    (5)查看:select * from SYSCAT.BUFFERPOOLS;
    7,表空间

    (1)定义:表空间是一种存储结构,它包含表,索引,大对象和长型数据,表空间位于数据库分区组中。空间是数据库及存储在该数据库中的表之间的逻辑层。
    表空间在数据库中创建,表在表空间中创建。
    (2)DB2 的表空间按管理方式分为两种:系统管理空间(System Management Space,SMS)和数据库管理空间(Database Management Space,DMS)。 按类型分为:规则表空间、大对象表空间、系统临时表空间、用户临时表空间。
    (3)好处:能够把数据合理的分布存储在不同的磁盘上或者存储在磁盘的不同位置上,有助于提高数据存取的效率。
    8,db2数据库调优

    (1)在where 语句后面字段不要用函数,这样导致字段不走索引
    (2)一个sql语句不要写的太长,尽量分临时表,一步一步写。
    (3)表不要建太多的索引
    (4)修改生产字段 一定要记得 REORG ->RUNSTATS -> 否则容易产生一些莫名其妙的错误。
    (5)游标使用 注意commit 和rollback
    (6)case when的用法 coalesce(username,’’) value(username,’’)
    (7)插入或者删除太慢,随时记得表维护
    (8)动态sql能 ,自动选择最佳的执行计划。
    (9)数据库优化命令:reorg、runstats 清除已delete的数据,优化数据结构

    作者:RCLeteru
    来源:CSDN
    原文:https://blog.csdn.net/weixin_42896779/article/details/81484077
    版权声明:本文为博主原创文章,转载请附上博文链接!

    展开全文
  • DB2数据库对象基础知识.doc
  • DB2数据库知识的详细介绍,含有经典的常用命令
  • 对于初级和中级用户,是不错的选择!其中包括了基本的知识数据库函数大全!
  • db2 基础知识整理

    千次阅读 2014-05-17 19:50:28
    一 安装数据库服务 (环境要求)  1.1 创建实例 db2icrt  set db2intance=db2(设置当前实例)  1.2 删除实例 db2idrop   1.3 更新实例 db2iupdt instance_name  1.4 查看实例  db2ilist ...
  • DB2数据库学习篇之最全面的sql语法知识总结简介数据定义语法数据类型语法数据操作语法常用重要语法例子 简介 DB2是IBM公司开发的关系数据库管理系统,它有多种不同的版本,如:DB2工作组版(DB2Workgroup Edition)...
  • DB2数据库基本概念

    千次阅读 2010-04-04 12:59:00
    1 DB2数据库基本概念 1.1数据库对象 关键的数据库对象包括:实例、数据库、节点组、表、视图、索引、模式、系统目录表。图1显示了一些数据库对象之间的关系。它也显示了表、索引和长整型数据存储在表空间中的情况...
  • db2数据库面试问题

    2010-06-10 13:16:44
    用于DB2面试的人使用,介绍DB2的基本知识和SQL语言的用法,谢谢大家指正。
  • IBM的DB2数据库常用命令及查询

    千次阅读 2018-05-10 13:01:00
    2019独角兽企业重金招聘Python工程师标准>>> IBM的DB2数据库常用命令及查询 2017年04月16日 11:57:31 阅读数:3343 1、 打开命令行窗口 #db2cmd 2、 打开控制中心 #db2cmd db2cc 3、 打开命令编辑器 #db2cmd db2ce =...
  • DB2基础知识学习

    千次阅读 2017-11-07 11:29:53
    DB2 基础知识学习 1. 连接db2数据库 对于本地host上的数据库,直接连接数据库即可 db2 connect to 数据库名 user 用户名 using 密码 对于远端host上的数据库,则需要如下步骤连接数据库: 第1步:将远程host...
  • 数据库基础知识汇总!

    千次阅读 2018-07-29 20:42:32
    主流的数据库软件都有哪些?开原可以跨平台的数据库都有哪些? 甲骨文:orcale IBM:DB2 微软:SQL server 开原的可以跨平台的: Mysql:开源切跨平台; Orcale DB2:跨平台不开源 SQL server :不跨平台,不...
  • mysql数据库基础知识--入门必看

    万次阅读 多人点赞 2018-09-08 16:08:18
    数据库的发展史 (1)手工管理:藏书阁,图书馆。  优点:分类管理,直观性强  缺点:信息流动慢,不方便 (2)文件管理:计算机文件系统,图书管理系统  优点:分类管理,层次分明  缺点: 查找不方便 (3)数据库...
  • 数据库基础知识(学习笔记) 文章目录数据库基础知识(学习笔记)@[toc]一:基础知识(以MySQL为学习对象)1.1 什么是数据库1.1.2 相关概念1.1.3 为什么要学习数据库1.1.4 数据库的特点1.2 数据库的相关基础概念1. ...
  • DB2基础DB2 LUW示例数据库为什么使用示例数据库?测试连通性测试创建数据库的能力测试各种功能如何创建示例数据库删除样本数据库 为什么使用示例数据库? 我发现DB2示例数据库对于尝试新事物和向我自己证明事物...
  • 数据库基础知识一(MySQL)

    万次阅读 多人点赞 2019-08-30 16:18:24
    数据库是研究数据管理的技术。即如何妥善地保存和科学地管理数据。 数据管理是指对数据进行分类、组织、编码、存储、检索和维护等操作。 数据管理技术好坏评判的标准: (1)数据冗余 (2)数据共享 (3)数据...
  • Mysql数据库基础知识

    2019-08-02 14:26:06
    1 数据库的基本知识 1.1 什么是数据库 存储数据的仓库,数据库本质也是文件。 1.2 数据存储方式的比较 1、数据保存在内存 代码体现:保存到数组、集合中 优点:内存速度快 缺点:断电/程序退出,数据就清除了.内存...
  • 数据库基础知识大全

    2020-09-01 10:21:44
    在大数据、云计算等概念被广泛提及的今天,数据库作为入门知识,它的重要性想必大家都知道了,今天小编为大家整理了一些数据库基础知识,快快收藏吧~ 目录: 一、基本概念 二、数据库分类 三、数据库模型 ...
  • DB2 数据库索引设计的最佳实践

    千次阅读 2017-10-16 17:29:11
    对于数据库管理员 (DBA) 来说 , 为数据库创建索引是他们工作中一个很重要的部分。通常来说,索引的设计是基于数据库中表的结构或者表的逻辑关系。比如说每个表的主键(Primary- key)其实都是一个索引,而记录雇员...
  • SQL数据库基础知识复习

    万次阅读 多人点赞 2017-10-30 09:15:43
    b) IBM DB2 c) Microsoft SQL 2. 微软的SQL Server数据库,是一种关系数据库,属于C/S架构。数据管理需要登录连接到服务进行。 3. SQL数据库的图形管理界面工具是SQL Server Management Studio 4. 服务器...
  • 数据库基础知识

    2013-05-05 01:14:28
    该数据库资料是一份比较基础的数据库基础的总结,能够帮助初学者等了解数据库的基础知识点!
  • DB2数据库

    千次阅读 2017-03-31 21:57:26
    转自:DB2数据库 开放分类:资料库正规化 DB2是IBM一种分布式数据库解决方案。说简单点:DB2就是IBM开发的一种大型关系型数据库平台.它支持多用户或应用程序在同一条SQL 语句中查询不同...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,444
精华内容 4,977
关键字:

db2数据库基础知识