sybase iq知识

来源:互联网 发布:中国温室气体排放数据 编辑:程序博客网 时间:2024/06/05 09:16

sybase iq知识

Sybase IQ支持的主要索引类型为:
·LowFast-LF(低基数)
·HighGroup-HG(高基数)
·HighNonGroup-HNG(高基数)
·FastProjiectinFP

建立Bit-Wise索引的一般原则:
(1)在每个列上都建FP索引;
(2)在唯一值<1000的字段上建立LF索引;
(3)在参加连接的字段上建HG或LF索引;
(4)唯一值>1000且用在GROUP BY,SELCT DISITICT,COUNT DISITICT中的字段上建立HG索引;
(5)此外的其它列若出现在where条件中或聚集运算中,则建立HNG索引。

Sybase IQ可利用预连接技术来提高即席查询速度
Sybase IQ支持两类连接处理:一类是即席连接(在查询时处理);另一类是预连接(在加载时处理)。大多数应用是二者的结合。即席连接适用于多对多的联系,被连接的表之间的尺寸差别超过10倍。
预连接适用于一对多的联系,被连接的表之间的尺寸差别不大于10倍,如:等值或左、右外连接。但预连接将导致增大存储量并降低加载速度。
Sybase IQ能对已建立了HG或LF索引的列,再利用"Joined Indexset"完成预连接处理。它通常能使查询速度提高10倍以

/////////////////////////////////////////////////////////////////////////////////////////
IQ STORE 约点总磁盘空间的70%。IQ temporary Store大小约为IQ Store的20%。
UNIX:不少于800M。
WINDOWS:不少于375M。
虚拟内存=物理内存+磁盘交换分区大小。
/////////////////////////////////////////////////////////////////////////////////////////
  Start utility db
/////////////////////////////////////////////////////////////////////////////////////////
start_asiq -n myserver -gu utility_db
dbisqlc -c
"eng=myserver;uid=DBA;pwd=SQL;dbn=utility_db;links=tcpip{host=158.77.123.244:2638}" -q createdb.sql 1>createdb.out 2>createdb.err
/////////////////////////////////////////////////////////////////////////////////////////
  Create database
/////////////////////////////////////////////////////////////////////////////////////////
start_asiq -n myserver -gu utility_db

create database '/sybaseiq/data/LSL.db'
  message path  '/sybaseiq/data/LSL.iqmsg'
  log on  '/sybaseiq/data/LSL.log'
  temporary path  '/sybaseiq/data/IQTemp_01'
  IQ PATH '/sybaseiq/data/IQMain_01'
  IQ PAGE SIZE 262144
--  IQ SIZE 2048
--  TEMPORARY SIZE 4096
  case respect
  collation 'EUC_CHINA'
--  collation '936ZHO'
  blank padding on
  java on
--  transaction log on
--  PASSWORD CASE RESPECT
  jconnect on;

/////////////////////////////////////////////////////////////////////////////////////////
  Drop database
/////////////////////////////////////////////////////////////////////////////////////////
DROP DATABASE '/sybaseiq/data/LSL.db'

/////////////////////////////////////////////////////////////////////////////////////////
 Add dbspace
/////////////////////////////////////////////////////////////////////////////////////////
create dbspace IQMain_01  AS '/sybaseiq/data/IQMain_01' size 4096;
create dbspace IQMain_02  AS '/sybaseiq/data/IQMain_02' IQ STORE;
create dbspace IQMain_03  AS '/sybaseiq/data/IQMain_03' IQ STORE;
create dbspace IQMain_04  AS '/sybaseiq/data/IQMain_04' IQ STORE;
create dbspace IQMain_05  AS '/sybaseiq/data/IQMain_05' IQ STORE;

/////////////////////////////////////////////////////////////////////////////////////////
 Drop dbspace
/////////////////////////////////////////////////////////////////////////////////////////
drop dbspace IQMain_01

/////////////////////////////////////////////////////////////////////////////////////////
 database option
/////////////////////////////////////////////////////////////////////////////////////////
set option public.minimize_storage='on' ;
set option public.IQMSG_LENGTH_MB=300;
set option public.load_memory_mb=100 ;
set option public.notify_modulus=1000000 ;
set option public.append_load='on' ;
set option Public.Disk_Striping = 'ON';
set option Public.Disk_Striping_Packed = 'ON' ;
set option public.Parallel_GBH_Enabled='ON' ;
set option public.Parallel_GBH_Units=24 ;
set option Public.Force_No_Scroll_Cursors ='ON' ;
set option Public.query_temp_space_limit=0;
set option Public.Query_Plan ='OFF' ;
set option Public.Query_Detail ='OFF' ;

/////////////////////////////////////////////////////////////////////////////////////////
 link disk and file
/////////////////////////////////////////////////////////////////////////////////////////
ln -s /dev/vgjyfxdb/rlvjyfxsyb01 /sybaseiq/data/IQMain_01
ln -s /dev/vgjyfxdb/rlvjyfxsyb02 /sybaseiq/data/IQMain_02
ln -s /dev/vgjyfxdb/rlvjyfxsyb03 /sybaseiq/data/IQMain_03
ln -s /dev/vgjyfxdb/rlvjyfxsyb04 /sybaseiq/data/IQMain_04
ln -s /dev/vgjyfxdb/rlvjyfxsyb05 /sybaseiq/data/IQMain_05
ln -s /dev/vgjyfxdb/rlvjyfxsyb06 /sybaseiq/data/IQTemp_01


////////////////////////////////////////////////////////////////////////////////////////
 backup.sh
/////////////////////////////////////////////////////////////////////////////////////////
#backup IQ file size: 20GB
DAT=$(date '+%Y%m%d')
iqsup<<!
backup database crc on full to '/dump/sybiq/iq_full_$DAT.dmp' size 20000000
go
!


/////////////////////////////////////////////////////////////////////////////////////////
 start_asiq [config file] dbname [switchs]
/////////////////////////////////////////////////////////////////////////////////////////
start_asiq @LSL.cfg LSL.db
/////////////////////////////////////////////////////////////////////////////////////////
  stop.sh
/////////////////////////////////////////////////////////////////////////////////////////
stop_asiq

Dbstop -c "uid=DBA; pwd=SQL; eng=server_name; dbn=db_name"

/////////////////////////////////////////////////////////////////////////////////////////
 database.cfg
/////////////////////////////////////////////////////////////////////////////////////////
# LSL.cfg
# ------------------------------------------------------------
# Default startup parameters for the ASIQ demo database
# ------------------------------------------------------------
#第一个 -n servername ;第二个 -n dbname
-n LSL
-x tcpip{port=4500}
# The following parameters are also found in the configuration file
# $ASDIR/scripts/default.cfg.  Any parameters not specified below
# and not in the start up parameter list, will be added by start_asiq
# using default.cfg as a guide.

-cl  32m
-ch  1024m
-gc 20
-gd all
-gl all
# -gm 最大连接数
-gm 50
-iqnumbercpus 9
-gp 4096
-ti 4400
-tl 1200
-p 8192
-iqmc 8000
-iqtc 12000

#设置服务器和数据选项
#1、 数据库的启动参数均可以写在".cfg"文件中。
#2、 启动服务器的语法:
#start_asiq server-switchs database_file
#其中:"server-switchs"可以为:
#-c :缓存大小,默认windows为32M,Unix为48M。
#-gp:Catalog store页大小。
#-gm:服务器允许的连接数。
#-n:IQ server的名字。如果有两个"-n"选项,则第一个是IQ server的名字,第二个"-n"为IQ 数据库的名字。
#-gc:checkpoint时间间隔。默认为20,推荐为6000。
#-gr:最大的恢复时间。默认为2。
#-ti:客户端超时时间。默认为4400分钟。
#-tl:默认网络超时时间。默认120秒。
#-iqmc:主缓存大小,单位:M。
#-iqtc:临时缓存大小,单位:M。
#注:主缓存:临时缓存=2:3
#在默认情况下,Sybase IQ server使用2638端口。

创建用户:
sp_iqaddlogin username 'password'
或者
创建用户或者修改密码:
grant connect to user1,user2 identified by password1,password2
grant resource to user1
select * from sysobjects

#使用SET OPTION命令更变数据库的配置: 
#(1)、语法:
#SET [TEMPORARY] OPTION 
#[user_id. | PUBLIC.]option_name = [option_value] 
#其中的"option_name"可以是:
#Force_No_Scroll_Cursors='on'(默认为"off")禁止缓存用户的查询结果。
#Query_Temp_Space_Limit=0(默认为2000M),设置临时缓存的最大值。0表示不限制。 
#Public.Query_Plan='off'(默认为"on")禁止将用户的查询计划打印到IQ Message File中,因为查询计划可以会使之大小迅速增加。

#例子: 
#SET OPTION public.Force_NO_Scroll_Cursors='no' 
#查看数据库的所有被改动过的(即非默认值)选项,用存储过程:sp_iqcheckoptions。

#Sybase IQ内存配置
#1、 IQ从单一的一个内存池中分配内存。 
#2、 从操作系统层面来看,IQ Server的内存是由堆组成。
#3、 Buffer:内存中的一块区域,它存储了写入数据库或从数据库中读取的未解压的数据。
#4、 IQ Page Size:IQ Server中每一个内存页的大小。
#5、 IQ Page Size/16=BLOCK SIZE 
#6、 在启动服务器时,可以用参数-c来指定服务器缓存的初始大小。在所有平台中,这个值最大为256M。
#7、 IQ Buffer有两种类型:
#  (1)、主Buffer缓存:IQ Store的Buffer。(占总大小的40%)
#  (2)、临时Buffer:IQ temporary Buffer。(占总大小的60%)
#8、 在Sybase IQ server中一个活动的用户大约占用10M内存,一个非活动用户大约占5M内存。

##unix odbc
[SybaseIQ_64bit]
driver=/work/sybase/ASIQ-12_6/lib/libdbodbc9.so
UID=dba
PWD=sql
Servername=<hostmachine>_asiqdemo
CommLinks=tcpip
DatabaseName=asiqdemo

可选的有:
LogFile=/work/sybase/ASIQ-12_6/mylogfile.out
ANAAppCodePage=4
InstallDir=/work/sybase/ASIQ-12_6/lib
Trace=0
TraceDll=/work/sybase/ASIQ-12_6/lib/odbctrac.so
TraceFile=odbctrace.out
UseCursorLib=0

##widows odbc
tcp/ip选项:host=xxx.xxx.xxx.xxx;port=xxxx

#open client
#windows:
server address:  ip,port
#unix interface
iqtest125
master tcp ether 158.77.123.244 2661
query tcp ether 158.77.123.244 2661
要求:数据库名和Server 名必须一致。
open client可用isql连接来测试

数据库性能监控例程
. sp_iqconnection 显示连接用户和版本
. sp_iqcontext 显示运行参数
. sp_iqcheckdb 数据库正确性检查
. sp_iqdbstatistics 最近的 sp_iqcheckdb 结果
. sp_iqdbsize gives the size of the current database
. sp_iqspaceinfo 输出数据库对象使用空间情况
. sp_iqstatus 数据库各种信息展现
. sp_iqtablesize 输出指定表的大小
. sp_iqgroupsize 输出指定组成

执行计划显示
. 当前系统选项查看 SET;
. SET TEMPORARY OPTION Query_Plan=ON;
. SET TEMPORARY OPTION Query_Detail=ON;
. SET TEMPORARY OPTION Query_Plan_After_Run=ON;
. SET TEMPORARY OPTION Query_Plan_AS_HTML=ON;
. SET TEMPORARY OPTION QUERY_PLAN_AS_HTML_DIRECTORY='/tmp';

倒出存储过程:
defncopy -Udw -Pdw -Sdwdev out procedure.sql tpdw_dev proc_test
将一个DBSPACE中的OBJECTS移动到另一个DBSPACE中:Sp_iqrelocate

把远程库同步到本地库的方法:
1,建一个remote server(jdbc,ip:port?CHARSET=charset)
2,从远程表中select数据到本地表:
insert into locateTablename location 'remoteservername.remotedbname'  {select * from remoteTablename};

原创粉丝点击