<SQL>《SQL命令(含例句)精心整理版(7)》

《SQL命令(含例句)精心整理版(7)》

  • 20 索引 INDEX
  • 21 LOAD -- DB2
    • 21.1 load的四种模式:
    • 21.2 防止表空间因为load出现暂挂
    • 21.3 查看load进程状态
    • 21.4 终止表的load进程
    • 21.5 恢复load表状态load pending
    • 21.6 注意问题:
  • 22 runstat/reorg/rebind -- DB2
    • 22.1 runstats
    • 22.2 reorg
    • 20.3 rebind
    • 20.4 reorgchk

20 索引 INDEX

名词 概念
索引 1、索引是利用平衡树查询,去减少查询次数,最终减少查询时间。
2、平衡树就是B-Tree(Balance)
3、RDBMS(数据库管理系统)
索引与主键
(聚集索引)
1、未加索引的表,数据是无序放置在磁盘存储器上,一行一行排列整齐。
2、加了主键以后,数据在磁盘上的存储结构就变成了树状结构,即平衡树结构,整个表就变成了一个索引。
3、有主键的索引,称为聚集索引。一个表只有一个聚集索引。
4、多个主键的联合主键,也只有一个联合主键的聚集索引。
5、主键的作用就是把表的数据格式转变为索引的(平衡树)格式放置。
非聚集索引(常规索引) 1、非聚集索引也是采用平衡树作为索引的数据结构。
聚集索引与非聚集索引 1、通过聚集索引能够查到需要查找的数据,而通过非聚集索引可以查到记录对应的主键值,再使用主键的值通过聚集索引查到需要的数据。
2、不管以任何方式查询表,最终都会利用主键通过聚集索引来定位到数据。
3、聚集索引是通往真实数据所在的唯一路径。也就是无论如何都要通过主键进行查询找到数据。
4、聚集索引是和数据在一起的,非聚集索引通过找聚集索引来找到数据。
索引与写入速度 1、增加索引,查询速度上升,写入速度下降。
2、写入下降的原因,平衡树这个结构必须一直维持正确的状态,增删改数据都会改变平衡树各节点中的索引数据内容,破坏树结构,因此,在每次数据改变时,DBMS必须去重新梳理树(索引)的结构以确保它的正确,带来很大的性能开销。
覆盖索引
(复合索引或多字段覆盖索引查询)
1、语句1:select user_name from user_info where birthday=‘1991-11-11’
索引1:create index index_birthday on user_info(birthday)
索引2:create index index_birthday_user_name on userinfo(birthday,user_name)

解释
索引1需要查询birthday等于1991-11-11的叶节点内容,页节点存放着主键ID信息,然后通过主键ID值查找数据行的真实所在。
索引2需要查询birthday等于1991-11-11的叶节点内容,页节点存放着主键ID信息,同时存放着user_name信息,所以不需要再通过主键ID值查找数据行的真实所在。
索引与空间 1、每次给字段建立一个新索引,字段中的数据就会被复制一份出来,用于生成索引。所以,给表增加索引会增加表的体积,占用磁盘存储空间。
索引与rebind/db2rbind 1、更新完程序包或重建存储过程,应该重新绑定程序包。
2、如果没有涉及存储过程,不用重新绑定包。
3、绑定全部程序包命令:db2rbind sample -l db2rbind.log all

21 LOAD – DB2

21.1 load的四种模式:

a. insert
模式将输入数据添加到一个表中,而不更改已有的表数据

b. replace
模式删除表中所有已有的数据,然后用输入数据填充这个表

c. terminate
模式终止装载操作,并回滚到它开始时所在的时间点。一个例外是,如果指定了replace模式,那么表将被删节。

d. restart
模式用于重新开始之前被中断的装载命令,它将自动从最近的一致点继续,要使用这个模式,可以指定与前一个,load命令相同的选项。但是这次加上了restart它使实用程序可以发现在装载处理中生成,的所有需要的临时表。因此,千万不要手动删除装载命令所生成的任何临时文件,除非您确信不再需要这些临时文件。一旦装载成功完成,这些临时文件将自动被删除。默认情况下,这些临时文件是在当前的工作目录中创建的。也可以使用TEMPFILES PATH 选项指定存放临时文件的目录。

21.2 防止表空间因为load出现暂挂

NONRECOVERABLE
示例:

db2 "LOAD FROM /db2bizclean/20170822/shuju/yiwan.txt of del INSERT INTO whjh.TBL_CODEMAPPED(CUSTOMERCODE,CREDITCODE)  NONRECOVERABLE"

21.3 查看load进程状态

load query
示例:

db2 "load query table whjh.TBL_CODECUSTOMER_20190830"

21.4 终止表的load进程

load terminate
示例:

db2 "load from ./20190830.txt of del terminate into whjh.TBL_CODECUSTOMER_20190830"
./20190830.txt为创建的空文件

这个不会丢数

21.5 恢复load表状态load pending

查看表状态:
示例:

db2 "load query table ACC.TBL_ACC_REMAININGSTAT"

load空数据
示例:

db2 "load from /dev/null of del terminate into db2inst.tbl_user"

如果还有问题,

db2 reorg tabl ACC.TBL_ACC_REMAININGSTAT

21.6 注意问题:

①load时候,会占用操作系统空间。原因是load表的时候先删除表的索引,然后往里面放数据,最后从新建立索引。

22 runstat/reorg/rebind – DB2

22.1 runstats

runstats 命令
基本统计信息 表名必须模式名全限定:例db2inst1.tbl_user
runstats on table schema.表名
索引 runstats on table schema.表名 for indexes all
表和索引 runstats on table schema.表名 and indexes all
增强的统计信息 表名必须模式名全限定:例db2inst1.tbl_user
runstats on table schema.表名 with distribution
索引 runstats on table schema.表名 for detailed indexes all
表和索引 runstats on table schema.表名 with distribution and detailed indexes all

22.2 reorg

使用REORG TABLE命令来重组表,只需指定该表的名称。例如:

db2 "reorg table TRADEMIS.TBL_DATAIMP"

使用REORG INDEXES命令重组索引。

db2 "reorg indexes all for table TRADEMIS.TBL_DATAIMP" 

使用特定的临时表空间来重组表。例如:

reorg table employee use mytemp

重组表并根据特定索引对行进行重新排序。例如:

reorg table employee index myindex

要通过SQL CALL语句来重组表,请通过ADMIN_CMD过程来指定REORG TABLE 命令。例如:

call sysproc.admin_cmd(‘reorg table employee’)

在线重组添加参数
ALLOW NO ACCESS
ALLOW WRITE ACCESS
ALLOW READ ACCESS
REORG INDEXES 需要记录其活动。因此,重组可能会失败,尤其是在系统繁忙和记录其他并发活动时。
注: 如果具有 ALLOW NO ACCESS 选项的 REORG INDEXES ALL 命令运行失败,则会标记索引无效并且此项操作不可撤销。
但是,如果具有 ALLOW READ ACCESS 选项的 REORG 命令或具有 ALLOW WRITE ACCESS 选项的 REORG 命令运行失败,则可以复原原来的索引对象。

20.3 rebind

列出系统的数据包

db2 list package for all

绑定单个包

db2 rebind package P6045027

在这里插入代码片

重绑数据库全部包

db2rbind sample -l db2rbind.log all

20.4 reorgchk

db2 reorgchk命令更新是在DB2数据库上执行,关于表的统计信息不会是最新的。会更新DB2优化器所使用的重要统计信息。

可以分为对系统表和用户表两部分分别进行 REORGCHK:

  1. 针对系统表进行REORGCHK
db2 reorgchk update statistics on table system

使用 UPDATE STATISTICS 参数指定数据库首先执行 RUNSTATS 命令。
2) 针对用户表进行 REORGCHK

db2 reorgchk update statistics on table user

你可能感兴趣的:(SQL,sql,数据库,DB2,REORG/RUNSTAT,REBIND)