SAP Sybase IQ 16.0采用 "NBit FP" 和 "Flat FP" 索引作为缺省的列存储机制。IQ 16之前版本具有的FP 1、2、3 (即1字节、2字节、3字节FP) 索引被NBit FP索引替代。"NBit FP"索引具有更高效的压缩能力和更高的性能。除了LOB和Bit数据类型外,所有其他数据类型的字段都可以使用"NBit FP"索引。
”NBit FP” 索引具有显示和隐式两种控制方式:
1. 显示方式--通过create table时指定字段的IQ UNIQUE n属性
(1) "IQ UNIQUE n" 字段约束显示地确定一个列在装载时采用"Flat FP"还是"NBit FTP"索引。
(2) "IQ UNIQUE n" 设置为0时,那么被指定的字段将使用"Flat FP"。
(3) "IQ UNIQUE n" 设置为大于0并且小于数据库选项 FP_NBIT_AUTOSIZE_LIMIT设置的值,那么被指定的字段初始将使用n位
"NBit FP"索引。
(4) 使用IQ UNIQUE n 这种方式一般在两种情况下使用:希望目标列使用"Flat FP"索引;或者当目标字段的基数值可能超过
FP_NBIT_AUTOSIZE_LIMIT选项设置的值时,仍然能够使用"NBit FP"索引。
2. 隐式方式--通过数据库选项进行控制
(1) 在创建表时字段没有指定"IQ UNIQUE n"属性,而是通过数据库选项FP_NBIT_AUTOSIZE_LIMIT设置的值自动进行控制。
(2) 如果字段的基数值< FP_NBIT_AUTOSIZE_LIMIT设置的值(需要FP_NBIT_IQ15_COMPATIBILITY数据库选项设置为'OFF'),并
且字段使用的"字典尺寸(字典是由值和相应值的记录数组成values and counts) "
用"NBit FP"。
(3) 如果字段的基数值(初始装载或后续装载时) > FP_NBIT_AUTOSIZE_LIMIT设置的值,但是
设置的值,那么字段将转为"Flat FP"索引。
(4) DML操作导致字段的基数值超过了FP_NBIT_ROLLOVER_MAX_MB 并且 FP_ENFORCE_LIMITS='ON',那么DML操作将被回滚
并报错。如果 FP_NBIT_ENFORCE_LIMITS='OFF',那么相应字段被转换到下一个NBit 压缩级别。
Sybase IQ 15支持3个级别的FP索引: FP(1), FP(2) and FP(3)。 SAP Sybase IQ 16.0 支持31个NBit 级别。下面是NBit 值(级别)与IQ UNIQUE列约束属性的对应关系:
NBit Value IQ UNIQUE
========== ============
1 2
2 4
3 8
4 16
5 32
6 64
7 128
8 256(FP 1)
9 512
10 1024
11 2048
12 4096
13 8192
14 16384
15 32768
16 65536(FP 2)
17 131972
18 262144
19 524288
20 1048576
21 2097152
22 4194304
23 8388608
24 16777216(FP 3)
25 33554432
26 67108864
27 134217728
28 268435456
29 536870912
30 1073741824
31 2147483647
为了说明SAP Sybase IQ 16.0压缩能力的提升情况,使用TPCH 1GB的lineitem表进行了压缩测试,测试结果如下:
(1) lineitem表6百万条记录,分为4个数据文件(共742054KB),装载到IQ 16后占用存储空间(sp_iqtablesize的输出)情况如下:
KBytes Pages CompressedPages
232984 3845 3216
(2) IQ 15.4 占用存储空间情况:
KBytes Pages CompressedPages
350560 6540 6085
通过上面的测试可以看到,IQ 16比IQ 15的压缩能力提升了大约50%!
阅读(3302) | 评论(0) | 转发(0) |