IQ数据库简单分析总结
Sybase IQ是一款专门针对OLAP应用的数据仓库,不适合OLTP。
1. IQ数据库特点:列式存储 和默认的FP压缩。
列式存储读取多个列中读取部分列时,可以明显减少IO,加快读取速度。同时由于列式的原因,只适合批量写和查询,不适合数据更改。所以只适合OLAP应用,不适合OLTP应用。
默认的FP压缩,一般压缩比为4~5倍。
2、CPU bound类型数据库。
正是由于IQ的默认将所有数据FP索引化,需要消耗大量的CPU时间,所以相比其他的一般数据仓库,如GP/ORACLE(EXDATA),IQ数据库是一款CPU bound类型数据库,所以在选型硬件时,CPU尽量选择多核,高频率的CPU。对IQ性能会有明显改善。
3、share everything架构。
IQ数据库和ORACLE RAC一样,为share everything架构,所以的数据都需要使用磁阵作为共同的存储,各个数据库之间主要也是通过存储来交换数据。
Share everything架构,带来的对应的是扩展问题。当数据量大到一定的程度,需要应用层手动拆分业务部署在各个机器上。
4、DQP功能:
DQP是IQ针对查询扩展做的一个优化, SQL会通过查询解析器分解成多个步骤,一台机器的性能不够时,分散到多个机器进行负荷分担。
各个节点之间数据交换通过两种方式,一种是共同的存储(share tmp store),一种是网络(IQ 16以后版本才支持)
5、IQ数据库结构如图所示:
数据库文件分以下几种:
Catalog store (for metadata)
IQ store (for data)
IQ temporary store (for temporary data)
Server files
IQ message log
Catalog store transaction log
IQ server logs
其中catalog store只能放在文件系统上,物理名称是dbname.db,逻辑名称是SYSTEM。
IQ Store存放的是以压缩的索引方式存储在磁盘上的数据,包括表的事物日志,第一个表空间的逻辑名是IQ_SYSTEM_MAIN。
IQ Temporary Store,装载时对数据进行排序以建立某些索引,查询时使用临时工作区排序或者分组。
6、IQ PAGE SIZE:
条带根据数据量大小来设置,是创建数据库时设置。128K是IQ数据库的默认值,32位平台64K性能更好,数据库最大表包含多余40亿或者可能增长到8T以上,设置为256KB。
登陆数据库执行sp_iqfile可以查询到PAGE大小。
7.IQ索引:
数据仓库数据量大,创建索引带来的开销巨大,所以一般数据仓库并不推荐创建索引。
IQ数据库由于自身特点,可以创建少量索引来明显提高查询效率。索引会加快查询,但是会明显降低加载的效率。因此数据库索引个数不能多,一般单表最多1~2个索引。
IQ一共有9种索引,如HG.LF,FP等等,索引具体用法本文不介绍。
8.IQ调优思路:
(1)索引。索引可以提升查询速度,但是过多的索引会降低加载速度。
(2)准确的数据描述。合适的数据类似和描述来定义数据,会获得更好的性能。
(3)IQ使用的是表锁,所以单表加载只能依赖单HOST的能力。如果通过并行来加载提高速度,
考虑通过分表,查询时使用UNION ALL来查询。UNION ALL的使用需要满足一些条件,如不能有distinct语句,否则性能会急剧下降。
(4)配置合理的iqmc(main cache)和iqtc(tmp cache)。一般比例为4:6。根据不同的应用做适当的调整。