程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

tempdb

編輯:SyBase綜合文章
Sybase 臨時數據庫

缺省情況下,tempdb數據庫是放置在master設備上,容量為2M,而臨時數據庫是活動最為平凡的數據庫常常被用來排序、創建臨時表、重格式化等操作,所以tempdb的優化應該受到特別的關注。本篇文章目的在於使你掌握臨時數據庫的優化策略以及臨時表的優化使用。本文中,你將以調整臨時庫的位置開始,有步驟的完成臨時數據庫的優化,並在此過程中了解到優化臨時數據庫和臨時表的一些方法和規則。
實驗環境的要求:你應具有系統管理員的權限,系統中有auths和article表。
步驟:
第一步:調整臨時庫的位置
  tempdb數據庫缺省放在master設備上,將臨時數據庫發在分離的設備上是更可取的。
1) 初始化一個用來存放臨時數據庫的設備
disk init
name="tempdb_dev",
physname="d:\Sybase\example\tempdb.dat",
vdevno=13,
size=15360
(注意:如果將tempdb數據庫放在多個設備上,需初始化多個數據庫設備)
2)將臨時數據庫擴展到該一個設備上
alter database tempdb on tempdb_dev=30
3)打開tempdb數據庫,從段上刪除master設備
sp_dropsegment "default",tempdb,master
sp_dropsegment logsegment,tempdb,master
4)發出如下命令,檢查default段中是否不再包含master設備
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)
說明:若將臨時數據庫放在多個磁盤設備上,可以更好的利用並行查詢特性來提高查詢性能。
第二步:將臨時數據庫與高速緩沖進行綁定。
  由於臨時表的創建、使用,臨時數據庫會頻繁地使用數據緩存,所以應為臨時數據庫創建高速緩存,從而可以使其常駐內存並有助於分散I/O:
1、創建命名高速緩存
sp_cacheconfig “tempdb_cache”,”10m”,”mixed”
2、重新啟動server
3、捆綁臨時數據庫到tempdb_cache高速緩存
sp_bindcache “tempdb_cache”, tempdb
4、若有大的I/O,配置內存池
第三步:優化臨時表
大多數臨時表的使用是簡單的,很少需要優化。但需要對臨時表進行復雜的訪問則
應通過使用多個過程或批處理來把表的創建和索引分開。以下兩種技術可以改善臨時表的優化
slash; 在臨時表上創建索引
1) 臨時表必須存在
2) 統計頁必須存在(即不能在空表上創建索引)
slash; 把對臨時表的復雜的使用分散到多個批處理或過程中,以便為優化器提供信息
下面的這個過程需要進行優化:
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”
說明:在同一個存儲過程或批處理中,創建並使用一個表時,查詢優化器無法決定這個表的大小。
結論:通過本實驗我們知道,臨時數據庫經過優化可以極大的提高系統性能。實際工作中,必須考慮具體應用的情況,需長時間經驗的積累。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved