没有合适的资源?快使用搜索试试~ 我知道了~
深入理解DB2 INSERT内部机制以及表空间分配机制-contracted.doc
需积分: 5 4 下载量 79 浏览量
2021-04-26
23:04:50
上传
评论
收藏 180KB DOC 举报
温馨提示
试读
17页
从一次数据量不变但表空间使用激增的真实事件说起 本文将从一次数据量不变但表空间使用量激增的真实事件说起,通过详细的问题分析过程,以及具体实验验证和理论分析,带领读者深入理解DB2 INSERT内部机制以及表空间分配机制。这对于分析INSERT性能问题以及处理表空间相关问题会有较大的帮助。
资源详情
资源评论
资源推荐
深入理解 DB2 INSERT 内部机制以及表空间分
配机制
https://www.ibm.com/developerworks/cn/
data/library/dm-cn-db2insert-table-space/
index.html
Date: Error: Reference source not found
Type of Submission: Article
Title: 深入理解 DB2 INSERT 内部机制以及表空间分配机制
Subtitle: 从一次数据量不变但表空间使用激增的真实事件说起
Keywords: INSERT 内部机制,FSCR,
Prefix: Error: Reference source not found
Given: Error: Reference source not found
Middle: Error: Reference source not found
Family: Error: Reference source not found
Suffix: Error: Reference source not found
Job Title: Error: Reference source not found
Email: Error: Reference source not found
Bio: 郝庆运,IBM 认证高级DBA,作为pure blue在IBM CDL DB2中国研发团队工作8年,对
IBM和DB2产品有深厚的感情,曾参与过DB2 多个版本的新功能开发和技术支持,对DB2有
较为深入的理解。目前在中国民生银行做DB2数据库运维工作。您可以通过 developerWorks
社区与<a href=https://www.ibm.com/developerworks/mydeveloperworks/profiles/user/
haoqingyun>郝庆运</a>进行交流。
Company: 中国民生银行科技开发部
Photo filename: Error: Reference source not found
Abstract: 本文将从一次数据量不变但表空间使用量激增的真实事件说起,通过详细的问
题分析过程,以及具体实验验证和理论分析,带领读者深入理解 内部机制以及
表空间分配机制。这对于分析 性能问题以及处理表空间相关问题会有较大的帮助。
周一早上某业务系统负责人找了过来,
我们的一个表空间在这个周末使用量增加了一倍!马上要满了,快帮我们看看!”
你们周末做什么操作了?导入数据了?”
是在 一批新数据,但数据量不大,而且 失败然后 了”
看看……”
登录数据库服务器以及应用服务器一番查看,表里的行数确实没什么变化,但表空间的 !" 却
是翻了一倍;应用程序如他所述,批量 # 万行数据,由于其中一行主键重复导致 失败然后
,但却重试了 $$$ 多次……
看到这儿已经基本上有了初步的结论,这 $$$ 多次的 % 导致 从表空间里持续的为这
个表分配了新的空间(&),尽管最终没有新的数据插入,但这个过程中 分配了的空间并没有
还给表空间,也就是说这些增长的 !" 应该都是空闲的数据页。
不对啊,这些 % 是串行做的,应该每次 之后释放出来的 !" 可以被下次的
重新利用,而且大小正合适!”
'(就喜欢你这个较真的风格!我们详细展开说说,事情是这样的……”
重现问题的具体过程
我们首先创建一个新的数据库 MYDB,或者也可以使用一个已有的数据库,然后创建一个新的表空间
MYTBS,记录表空间的使用情况,如清单 1 所示。
清单 1. 准备测试环境
!"
#$
%##&##'&$'
()((((
*)#*%#+
%&
%$,-.
/$,-0(
/$96
1&$,(02
*$34&&56$7.0
$*8672(.0
)#*86$7
&93*86$7
:&%9%#*#&-
不指定任何参数创建数据库以及表空间,默认使用的是 Page size 4096,扩展块大小 Extent Size 为 32。
在表空间里创建一个表 T1 并用脚本插入 40000 条数据,为了便于分析,我们需要每一行数据都略有不同
而且有一定的长度,这里用了一个数字在每一行的开头作为标记,使用的命令和插入数据的脚本如清单
2 所示。
清单 2. 创建表并插入一定量数据
;-6-<6-((7=<6-(((77;
!"
#$
%##&##'&$'
()((((
*)#*%#+
%&
%$,-.
/$,-0(
/$160
>>省略
*#&'3
#================================
#!/bin/sh
COUNT=40000
I=0
db2 CONNECT TO mydb
while [ $I -lt $COUNT ]
do
db2 "INSERT INTO t1 VALUES ('$
{I}abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz',
'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghi
jklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrs
tuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabc
defghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz')"
I=`expr $I + 1`
done
#================================
3*#&'3
;/6?71!-;
-
@@@@@@@@@@@
2((((
-&%&67'
剩余16页未读,继续阅读
haoqingyun
- 粉丝: 0
- 资源: 9
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0