在 AIX 环境,DB2 V10.1 , 原来的表建立 sql 语句,不指定表空间,因此,这些表都是在系统缺省表空间 userspace1 上 。
现在把表想放到自建立的表空间上, 因此, 把 A 表的 sql 语句复制了一份, 为 A2 表,建表 sql 语句其他部分不变, 只是加了 IN A2_01 字样, A2_01 是新创建的一个表空间。
把 A表的数据插入到 A2 表。
作了一测试程序, 比较查询 A 表, 和 A2 表的性能, 发觉 查询A2 表的性能差了好多。该测试程序是用一 KEY 值查询 A 表, 和 A2 表, 该 KEY 值字段是 A 表 和 A2 的主键, KEY 变化,循环 10000 次。 现在查询 A2 表的 10000 次的时间, 是 查询 A 表 10000 次的时候的 5 --- 6 倍。
很是困惑,通常是为了提高性能才设定独立表空间的,而且一般 DBA 不建议应用表空间使用系统的 USERSPACE1 . 但为什么会性能反而差了呢? 还差了那么多?
有哪位大侠碰到过这种情况吗? 给提示下?
谢谢
系统表空间坚决不允许业务数据使用,不然出问题,哭都来不及了,你建的独立表空间是在那,本地,还是存储,还是哪里?还有,看下执行计划,看看是否有变化?
收起1、导出表结构,查看A2表是否索引创建失败,对比两张表的表结构信息
$db2look -d $DBNAME -e -x -l -t A2
$db2look -d $DBNAME -e -x -l -t A
2、查看A2_01表空间的缓冲池情况
$db2pd -d $DBNAME -buffer