- 論壇徽章:
- 0
|
sybase 臨時數(shù)據(jù)庫
缺省情況下,tempdb數(shù)據(jù)庫是放置在master設(shè)備上,容量為2M,而臨時數(shù)據(jù)庫是活動最為平凡的數(shù)據(jù)庫常常被用來排序、創(chuàng)建臨時表、重格式化等操作,所以tempdb的優(yōu)化應(yīng)該受到特別的關(guān)注。本篇文章目的在于使你掌握臨時數(shù)據(jù)庫的優(yōu)化策略以及臨時表的優(yōu)化使用。本文中,你將以調(diào)整臨時庫的位置開始,有步驟的完成臨時數(shù)據(jù)庫的優(yōu)化,并在此過程中了解到優(yōu)化臨時數(shù)據(jù)庫和臨時表的一些方法和規(guī)則。
實驗環(huán)境的要求:你應(yīng)具有系統(tǒng)管理員的權(quán)限,系統(tǒng)中有auths和article表。
步驟:
第一步:調(diào)整臨時庫的位置
tempdb數(shù)據(jù)庫缺省放在master設(shè)備上,將臨時數(shù)據(jù)庫發(fā)在分離的設(shè)備上是更可取的。
1) 初始化一個用來存放臨時數(shù)據(jù)庫的設(shè)備
disk init
name="tempdb_dev",
physname="d:\sybase\example\tempdb.dat",
vdevno=13,
size=15360
(注意:如果將tempdb數(shù)據(jù)庫放在多個設(shè)備上,需初始化多個數(shù)據(jù)庫設(shè)備)
2)將臨時數(shù)據(jù)庫擴展到該一個設(shè)備上
alter database tempdb on tempdb_dev=30
3)打開tempdb數(shù)據(jù)庫,從段上刪除master設(shè)備
sp_dropsegment "default",tempdb,master
sp_dropsegment logsegment,tempdb,master
4)發(fā)出如下命令,檢查default段中是否不再包含master設(shè)備
select dbid,name,segmap from sysusages,sysdevices
where sysdevices.low<=syusages.size+vstart
and sysdevices.high>;=sysusages.size+vstart-1
and dbid=2
and(status=2 or status=3)
說明:若將臨時數(shù)據(jù)庫放在多個磁盤設(shè)備上,可以更好的利用并行查詢特性來提高查詢性能。
第二步:將臨時數(shù)據(jù)庫與高速緩沖進行綁定。
由于臨時表的創(chuàng)建、使用,臨時數(shù)據(jù)庫會頻繁地使用數(shù)據(jù)緩存,所以應(yīng)為臨時數(shù)據(jù)庫創(chuàng)建高速緩存,從而可以使其常駐內(nèi)存并有助于分散I/O:
1、創(chuàng)建命名高速緩存
sp_cacheconfig “tempdb_cache”,”10m”,”mixed”
2、重新啟動server
3、捆綁臨時數(shù)據(jù)庫到tempdb_cache高速緩存
sp_bindcache “tempdb_cache”, tempdb
4、若有大的I/O,配置內(nèi)存池
第三步:優(yōu)化臨時表
大多數(shù)臨時表的使用是簡單的,很少需要優(yōu)化。但需要對臨時表進行復(fù)雜的訪問則
應(yīng)通過使用多個過程或批處理來把表的創(chuàng)建和索引分開。以下兩種技術(shù)可以改善臨時表的優(yōu)化
slash; 在臨時表上創(chuàng)建索引
1) 臨時表必須存在
2) 統(tǒng)計頁必須存在(即不能在空表上創(chuàng)建索引)
slash; 把對臨時表的復(fù)雜的使用分散到多個批處理或過程中,以便為優(yōu)化器提供信息
下面的這個過程需要進行優(yōu)化:
create proc base_proc
as
select * into #huge_result from auths
select * from article, #huge_result where article.author_code=
#huge_result.author_code and sex=”0”
使用兩個過程可以得到更好的性能
1)create proc base_proc
as
select *
into #huge_result
from auths
exec select_proc
2) create proc select_proc
as
select * from article,#huge_result
where article.author_code=#huge_result.author_code and sex=”0”
說明:在同一個存儲過程或批處理中,創(chuàng)建并使用一個表時,查詢優(yōu)化器無法決定這個表的大小。
結(jié)論:通過本實驗我們知道,臨時數(shù)據(jù)庫經(jīng)過優(yōu)化可以極大的提高系統(tǒng)性能。實際工作中,必須考慮具體應(yīng)用的情況,需長時間經(jīng)驗的積累。
|
|