Sybase临时数据库tempdb

发表于:2007-07-14来源:作者:点击数: 标签:
本文中,你将以调整临时库的位置开始,有步骤的完成临时 数据库 的优化,并在此过程中了解到优化临时数据库和临时表的一些方法和规则。 实验环境的要求 :你应具有系统管理员的权限,系统中有auths和article表。 步骤: 第一步:调整临时库的位置 tempdb数据

本文中,你将以调整临时库的位置开始,有步骤的完成临时数据库的优化,并在此过程中了解到优化临时数据库和临时表的一些方法和规则。

实验环境的要求:你应具有系统管理员的权限,系统中有auths和article表。

步骤:

第一步:调整临时库的位置

tempdb数据库缺省放在master设备上,将临时数据库发在分离的设备上是更可取的。

1)初始化一个用来存放临时数据库的设备

diskinit

name="tempdb_dev",

physname="d:\sybase\example\tempdb.dat",

vdevno=13,

size=15360

(注意:如果将tempdb数据库放在多个设备上,需初始化多个数据库设备)

2)将临时数据库扩展到该一个设备上

alterdatabasetempdbontempdb_dev=30

3)打开tempdb数据库,从段上删除master设备

sp_dropsegment"default",tempdb,master

sp_dropsegmentlogsegment,tempdb,master

4)发出如下命令,检查default段中是否不再包含master设备

selectdbid,name,segmapfromsysusages,sysdevices

wheresysdevices.low<=syusages.size+vstart

andsysdevices.high>;=sysusages.size+vstart-1

anddbid=2

and(status=2orstatus=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;把对临时表的复杂的使用分散到多个批处理或过程中,以便为优化器提供信息。

下面的这个过程需要进行优化:

createprocbase_proc 

as

select*into#huge_resultfromauths

select*fromarticle,#huge_resultwherearticle.author_code=

#huge_result.author_codeandsex=”0”

使用两个过程可以得到更好的性能

1)

createprocbase_proc 

as

select*

into#huge_result

fromauths

execselect_proc

2)

createprocselect_proc 

as

select*fromarticle,#huge_result

wherearticle.author_code=#huge_result.author_codeandsex=”0”

说明:在同一个存储过程或批处理中,创建并使用一个表时,查询优化器无法决定这个表的大小。

结论:通过本实验我们知道,临时数据库经过优化可以极大的提高系统性能。实际工作中,必须考虑具体应用的情况,需长时间经验的积累。

(  

原文转自:http://www.ltesting.net