Sybase IQ,你需要知道的基础:
第一,知道IQ跟其它的关系型数据库相比,它的主要特征是什么?包括查询快、数据压缩比高、Load快,但是插入更新慢,不太适合数据老是变化,它是按列存储的。这时候你就知道它适做DSS(决策支持系统),数据集市,数据仓库,它不适合OLTP。适合OLAP。
第二,知道IQ自身的体系组成,它由
Catalog store(用于存储数据库自身Metabase信息), 一般是dbname.db文件存储,
DBspace(它是IQ的数据存储空间),它又包括两种类型:
一是IQ Store,用于存放真正的数据,一般用裸设备,直接用文件系统时一般叫dbname.iq;
二是IQ Temporary Store,用于存放临时数据,一般用裸设备,直接用文件系统时一般叫dbname.iqtmp
IQ Message Log, 这是IQ的消息日志,可以删除,也可以限制大小,一般叫dbname.iqmsg
IQ Transcation Log,这是IQ的事务日志,不可以随意删除,一般叫dbname.log,这是大家注意,不要看着是叫.log就认为可以删除。
IQ Server Log,这个IQ服务器引擎消息,包括一些启动,停止的日志,可以删除。
第三,知道停止启动IQ的命令,Start_asiq,Stop_asiq,dbstop, 知道连接IQ的命令,dbisql,dbisqlc. 知道查看IQ数据库信息的存储过程Sp_iqstatus
第四,知道IQ的服务器配置文件,一般是叫dbname.cfg, 里面的一些基础配置参数要知道,比如:Server名字,数据库名称,端口,其中最重要的一点,IQ缓存或者叫内存的配置,通过-iqmc,-iqtc,两个参数。其中iqmc表示:主缓存/内存,iqtc表示:临时缓存/内存,一般它们的比例推荐值是iqmc:iqtc 4:6.
第五,知道IQ数据库的参数配置(DB Option),Set [ Temporary-临时生效 ]Option public.IQMSG_LENTH_MB=500,限制IQmsg文件的大小为500MB,当加了temporary时,表示本次连接生效。注意下Load_Memory_MB这个option,因为跟Load时内存有关。
第六,知道IQ的索引,IQ的索引肯定会考的,一般关系型数据库索引是B-Tree,IQ的索引机制是BitMap.
IQ索引的类型主要包括:FP,LF,HG,HNG等,这前四个一定要理清楚。
FP是IQ默认的索引,也就是说IQ创建表后,自动每一列就都带有这种索引了。所以IQ查询快,它号称所有数据都是索引。
LF是低位索引,也就是说大量数据里面,字段重复次数不多的,比如:分行号,上亿记录也就是那100多个分行号。一般原则是少于1500个,就可以低位索引。
HG就是高位索引了,大于1500个的,有时候也定义成主键索引。
HNG,大家自己看
索引这一部分,大家要知道的就是,区分清楚各种索引,并且知道当between 时用什么索引,当groupby时用什么索引,当like时,=时,>时。
第七,表:包括基本表 create table mytable, 本地临时表 create table #mytable, 全局临时表 create global temporary table mytable 区分它们的生命周期与作用。不记日志删除整个表数据:turncate table
第八,熟悉Load , Insert select from, Insert into 三种的比较,前面的最快。注意下Load里面的特殊分隔符,如换行: x0a , tab: x09
其中load比较重要。
第九,另外IQ的Sql语句,大家要过关,一些特别的如:select top ...select frist等。
第十,IQ的数据导出,两种导出方式的比较要知道。第一种>#file.txt,第二种set....第一种导出文件生成在服务器端。第二种导出文件生成在执行语句的客户端。
第十一,知道IQ的用户管理,建立一个新的IQ用户可以通过grant connect的,这个大家注意。知道IQ的grant的一些赋权语句。
第十二,IQ的Lock机制,主要还是通过多版本控制的。
另外,系统存储过程是IQ的一个特点,它很多工作通过存储过程来完成,大家要多熟悉一些常用的。比如:sp_iqconnection,sp_iqcontext,
怎么样删除连接drop connection connectionID, sp_iqcheckoption等等。