/*
*標 題: Sybase IQ for Data Warehouse 培訓總結(二)
*作 者: xuwedo
*文章屬性: 原創(chuàng)
*時 間: 2007-03-11
*來 源: http://blog.csdn.net/xuwedo2003/
*鏈 接: http://blog.csdn.net/xuwedo2003/
* Copyright (c) 2007
* All rights reserved.
* 如有轉(zhuǎn)載,請注明作者及本信息
* 文件名稱:
* 文件標識:
* 摘??? 要: Sybase IQ, Data Warehouse
* 開始時間: 2007-03-11
*
* 當前版本: 1.0
* 作??? 者: xuwedo2001@sohu.com
* 相關信息:
* 完成日期: 2007年3月11日
*/
正文:?
?
(一)?
怎樣創(chuàng)建數(shù)據(jù)庫
1
、DBspace是分配到IQ數(shù)據(jù)庫的驅(qū)動空間的邏輯名
2
、一個新IQ數(shù)據(jù)庫最多可以有2047個DBspace。
3
、Sybase的各種類型DBspace的限制:
(1)、Catalog Store最大為1TB。
(2)、IQ Store 和IQ temp Store 在裸設備上沒有大小限制,在文件系統(tǒng)中為4TB。
4
、IQ Store 和IQ temp Store可以擴大或從數(shù)據(jù)庫刪除。
5
、創(chuàng)建數(shù)據(jù)庫:
CREATE DATABASE full_path db_name[[TRANSACTION] {LOG ON [log_file_name][MIRROR mirror_file_name]}]
IQ PATH iq_file_anem
[IQ SIZE iq_file_size]
[IQ RESERVE sizeMb]
TEMPORARY PATH temp_file_name
[TEMPORARY SIZE temp_db_szie]
[TEMPORARY RESERVE sizeMB]
[MESSAGE PATH message_file_name]
例子1:
CREATE DATABASE
‘
d:\\mydb\\mydb.db
’
IQ PATH
‘
d:\\iqmain\\mydb01.iq
’
IQ SIZE 200
TEMPORARY PATH
‘
e:\\iqtem\\mydb01.iqtmp
’
TEMPORARY SIZE 200
IP PAGE SIZE 65536
6
、可以用Sybase Central創(chuàng)建數(shù)據(jù)庫(在圖形環(huán)境下)。
7
、可以用sp_iqstatus來查看當前數(shù)據(jù)庫的詳細信息。
8
、刪除一個DBspace
(1)、一個IQ store如果存有數(shù)據(jù)的話,則不能被刪除。(可以使用Utility數(shù)據(jù)庫將一個DBspace的數(shù)據(jù)移動到另一個DBspace中去,再刪除)。
(2)、一個IQ temporary Store僅在為空時才可以被刪除。
9
、刪除一個數(shù)據(jù)庫的語法:
DROP DATABASE db_filename
例子:DROP DATABASE ‘d:\\mydb\\mydb.db
’
10
、怎樣才能看到所有的DBspace的物理文件名?
用以下命令:Select * from sysqifile
(二)?
設置服務器和數(shù)據(jù)選項
1、????????
數(shù)據(jù)庫的啟動參數(shù)均可以寫在“.cfg”文件中。
2、????????
啟動服務器的語法:
start_asiq server-switchs database_file
其中:“server-switchs”可以為:
-c
:緩存大小,默認windows為32M,Unix為48M。
-gp:Catalog store
頁大小。
-gm
:服務器允許的連接數(shù)。
-n
:IQ server的名字。如果有兩個“-n”選項,則第一個是IQ server的名字,第二個“-n”為IQ 數(shù)據(jù)庫的名字。
-gc
:checkpoint時間間隔。默認為20,推薦為6000。
-gr
:最大的恢復時間。默認為2。
-ti
:客戶端超時時間。默認為4400分鐘。
-tl
:默認網(wǎng)絡超時時間。默認120秒。
-iqmc
:主緩存大小,單位:M。
-iqtc
:臨時緩存大小,單位:M。
注:主緩存:臨時緩存=2:3
在默認情況下,Sybase IQ server使用2338端口。
3、????????
使用SET OPTION命令更變數(shù)據(jù)庫的配置:
(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
’
4、????????
查看數(shù)據(jù)庫的所有被改動過的(即非默認值)選項,用存儲過程:sp_iqcheckoptions。
(三)?
Sybase IQ
索引和數(shù)據(jù)類型
1
、Sybase IQ的9種索引類型:
(1)、FP(Fast Projection)此索引為默認的索引形式,在創(chuàng)建表時系統(tǒng)自動設置此索引。
特點:用于SELECT、LIKE ‘%sys%’、SUM(A+B)、JOIN操作等語句。
此類型索引也是唯一可用于BIT數(shù)據(jù)類型的索引。
?? ?FP
索引可以優(yōu)化索引,將小于255的唯一值的索引壓縮到1字節(jié)中,將小于65537的唯一值索引壓縮到2字節(jié)中。
(2)、LF(Low Fast)基于平衡樹的結構,存儲唯一值小于1500個的索引,是最快的索引類型。可以用作唯一索引。
?? ?
特點:用于=、 !=、IN、NOT IN查詢參數(shù)。
?? ?MIN
()、MAX()、COUNT()、Group By、JOIN等。
(3)、HNG(High Nongroup)基于位的優(yōu)化索引,適合于數(shù)字索引。用于范圍查找和求合計算。
?? ?
特點:Rangs、Between、MIN()、MAX()、SUM()、AVG()等。
(4)、HG(High Group) 基于平衡樹的結構,存儲唯一值大于1500個的索引,是最快的索引類型。可以用作唯一索引。
?? ?
特點:同LF索引的特點。
(5)、CMP(compare)僅用于比較一個表中的兩個列的比較。
?? ?
特點:<、 =、 >、 <= 、>=
(6)、WD(Word),僅用于索引數(shù)據(jù)類型為WORD的列。
?? ?特點:‘CONTAINS’、LIKE操作(但沒有‘%’)。
例子:
Select count(*) from Customer where address contains(
‘Main’)
(7)、DATE(date)僅用于日期類型的列。
(8)、DTTM(Datetime)僅用于日期時間類型的列。
(9)、TIME(Time)僅用于時間類型的列。
例子:
Select * from sales where DATAPART(YEAR,dales_dt) = 2007
Select * from sales where sales_dt>=‘2003-01-01 08:00:00’
(四)?
創(chuàng)建表和索引
1
、創(chuàng)建表:
例子1:
CREATE TABLE employee(
Emp_id int NOT NULL
,lname varchar(30) NULL
,fname varchar(30) NULL
,salary money NULL)
例子2:
CREATE TABLE stores(
Store_id char(4) NOT NULL
,store_name varchar(20) NOT NULL
,store_address varchar(40) NOT NULL
,UNIQUE(store_id))
例子3:
CREATE TABLE products(
Product_code char(5) NOT NULL
,product varchar(40) NOT NULL
,price money NULL
PRIMARY KEY (products_code))
例子4:
CREATE TABLE sales(
Sales_code char(10) PRIMARY KEY
,sales_date DATE NOT NULL
,product_code char(5) NOT NULL
,FOREIGN KEY fk1(product_code) REFERENCES product (product_code))
例子5:
SELECT * INTO co_residential_customer from customer where 1=2
2
、用Sybase Central 可以在圖形界面下創(chuàng)建表。
3
、刪除表:DROP TABLE tablename
4
、刪除表中的所有內(nèi)容:TRUNCATE TABLE [owner.]table_name
5
、創(chuàng)建視圖,語法:
CREATE VIEW [owner.]view_name[(column-name[,
…
])]
AS select-without-order-by
[WITH CHECK OPTION]
例子1:
CREATE VIEW sd_customer AS SELECT * FROM customer
WHERE sheng =
‘
SD
’
例子2:
CREATE VIEW emp_dept
AS SELECT emp_home,emp_fname,dept_name
From Employee,Department
WHERE Employee.dept_id = Department.dept_id
5
、用Sybase Central 可以在圖形界面下創(chuàng)建視圖。
6
、創(chuàng)建索引:
CREATE [UNIQUE] [index-type] INDEX
Index_name ON
[owner.]table_name (column_name[,
…
])
[{IN | ON} DBSpace_name]
[NOTIFY integer]
[DELIMITED BY
‘
separators-string
’
]
[LIMIT maxwordsize-integer]
例子1:
CREATE HG INDEX
Cust_customer_id ON
Cutomer(customer_id)
例子2:
CREATE CMP INDEX price_compare
ON orders(purchase_price,list_cost)
7
、刪除索引:
DROP INDEX [[owner.]tablename.]index_name
例子:
DROP INDEX cust_customer_id
(五)?
Sybase IQ
內(nèi)存配置
1、????????
IQ
從單一的一個內(nèi)存池中分配內(nèi)存。
2、????????
從操作系統(tǒng)層面來看,IQ Server的內(nèi)存是由堆組成。
3、????????
Buffer
:內(nèi)存中的一塊區(qū)域,它存儲了寫入數(shù)據(jù)庫或從數(shù)據(jù)庫中讀取的未解壓的數(shù)據(jù)。
4、????????
IQ Page Size
:IQ Server中每一個內(nèi)存頁的大小。
5、????????
IQ Page Size/16=BLOCK SIZE
6、????????
在啟動服務器時,可以用參數(shù)-c來指定服務器緩存的初始大小。在所有平臺中,這個值最大為256M。
7、????????
IQ Buffer
有兩種類型:
(1)、主Buffer緩存:IQ Store的Buffer。(占總大小的40%)
(2)、臨時Buffer:IQ temporary Buffer。(占總大小的60%)
8、????????
在Sybase IQ server中一個活動的用戶大約占用10M內(nèi)存,一個非活動用戶大約占5M內(nèi)存。