SYBASE学习笔记
tempdb数据库缺省放在master设备上,将临时数据库发在分离的设备上是更可取的。 1) 初始化一个用来存放临时数据库的设备 disk init
name=\
physname=\ vdevno=13, size=15360
(注意:如果将tempdb数据库放在多个设备上,需初始化多个数据库设备) 2)将临时数据库扩展到该一个设备上 alter database tempdb on tempdb_dev=30
3)打开tempdb数据库,从段上删除master设备 sp_dropsegment \ 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)
注:3、4步骤亦可以使用如下动作进行:
扩展后sp_helpdb tempdb看应改master设备上是data/log的 你use tempdb
sp_dropsegment 'default',tempdb,master sp_dropsegment system,tempdb,master sp_dropsegment logsegment,tempdb,master 后,
sp_helpdb tempdb
select db_name(dbid),segmap,lstart,size,vstart,pad,unreservedpgs from sysusages where dbid=2 贴出来
如果第一行中segmap为0,就ok
说明:若将临时数据库放在多个磁盘设备上,可以更好的利用并行查询特性来提高查询性能。 第二步:将临时数据库与高速缓冲进行绑定。
由于临时表的创建、使用,临时数据库会频繁地使用数据缓存,所以应为临时数据库创建高速缓存,从而可以使其常驻内存并有助于分散I/O: 1、创建命名高速缓存
sp_cacheconfig “tempdb_cache\ 2、重新启动server
3、捆绑临时数据库到tempdb_cache高速缓存 sp_bindcache “tempdb_cache\ 4、若有大的I/O,配置内存池 第三步:优化临时表
北京易初电子技术有限公司软件中心 2005-01
- 11 -
SYBASE学习笔记
大多数临时表的使用是简单的,很少需要优化。但需要对临时表进行复杂的访问则 应通过使用多个过程或批处理来把表的创建和索引分开。以下两种技术可以改善临时表的优化
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=\ 使用两个过程可以得到更好的性能 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=\
说明:在同一个存储过程或批处理中,创建并使用一个表时,查询优化器无法决定这个表的大小。
结论:通过本实验我们知道,临时数据库经过优化可以极大的提高系统性能。实际工作中,必须考虑具体应用的情况,需长时间经验的积累。
如何扩展master数据库空间
http://www.sybase.com.cn/cn/content/support/exp_jszc_ase_zj_00014.htm
master数据库只能扩展在master设备上.那么当master设备已经没有足够的空间可使用时,请按以下步骤操作:
(此操作过程是以UNIX操作系统为例.SYBASE安装路径为/sybase) 1.备份master数据库
启动backup server,进入isql环境执行:
1>dump database master to '/sybase/master.dump' 2>go
shut down SQL/ASE Server 1>shutdown 2>go
2.创建新的足够大的master设备
$buildmaster -d
北京易初电子技术有限公司软件中心 2005-01
- 12 -
SYBASE学习笔记
例:$buildmaster-d/sybase/data/master.dat -s102400 3.修改RUN_servername文件
编辑RUN_server_name文件,-d参数指向新建的设备名。 4.单用户模式重启server
$startserver -f RUN_servername -m 5.执行installmaster脚本
6.由备份文件装载master数据库
1>load database master from '/sybase/master.dump' 2>go
7.修改sysdevices信息
sp_configure 'allow updates', 1 go
begin tran go
update sysdevices set high = 102399 , phyname = 'e:\\sybase\\data\\master_test.dat' where name = 'master' go
(102399=200*512-1 master设备大小为200M) commit tran go
8.扩展master数据库
1>alter database master on master设备名称=size(此值以M为单位) 2>go
例:alter database master on master=10
将master数据库在master设备上扩展10M
Sybase 临时数据库的优化
缺省情况下,tempdb数据库是放置在master设备上,容量为2M,而临时数据库是活动最为平凡的数据库常常被用来排序、创建临时表、重格式化等操作,所以tempdb的优化应该受到特别的关注。本篇文章目的在于使你掌握临时数据库的优化策略以及临时表的优化使用。本文中,你将以调整临时库的位置开始,有步骤的完成临时数据库的优化,并在此过程中了解到优化临时数据库和临时表的一些方法和规则。
实验环境的要求:你应具有系统管理员的权限,系统中有auths和article表。 步骤:
第一步:调整临时库的位置
tempdb数据库缺省放在master设备上,将临时数据库发在分离的设备上是更可取的。 1) 初始化一个用来存放临时数据库的设备 disk init
name=\
physname=\vdevno=13, size=15360
北京易初电子技术有限公司软件中心 2005-01
- 13 -
SYBASE学习笔记
(注意:如果将tempdb数据库放在多个设备上,需初始化多个数据库设备) 2)将临时数据库扩展到该一个设备上
alter database tempdb on tempdb_dev=30
3)打开tempdb数据库,从段上删除master设备 sp_dropsegment \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
北京易初电子技术有限公司软件中心 2005-01
- 14 -
SYBASE学习笔记
2) create proc select_proc as
select * from article,#huge_result
where article.author_code=#huge_result.author_code and sex=”0”
说明:在同一个存储过程或批处理中,创建并使用一个表时,查询优化器无法决定这个表的大小。
结论:通过本实验我们知道,临时数据库经过优化可以极大的提高系统性能。实际工作中,必须考虑具体应用的情况,需长时间经验的积累。
关于tempdb的优化
http://www.sybase.com.cn/cn/content/support/tempdb.htm
缺省情况下,tempdb数据库是放置在master设备上,容量为2M,而临时数据库是活动最为平凡的数据库常常被用来排序、创建临时表、重格式化等操作,所以tempdb的优化应该受到特别的关注。
第一步:将临时数据库与高速缓冲进行绑定。
由于临时表的创建、使用,临时数据库会频繁地使用数据缓存,所以应为临时数据库创建高速缓存,从而可以使其常驻内存并有助于分散I/O: 1、创建命名高速缓存
sp_cacheconfig “tempdb_cache”,”10m”,”mixed” 2、重新启动server
3、捆绑临时数据库到tempdb_cache高速缓存 sp_bindcache “tempdb_cache”, tempdb 4、若有大的I/O,配置内存池 第二步:优化临时表
大多数临时表的使用是简单的,很少需要优化。但需要对临时表进行复杂的访问则、 应通过使用多个过程或批处理来把表的创建和索引分开。以下两种技术可以改善临时表的优化
1、在临时表上创建索引 1)临时表必须存在
2)统计页必须存在(即不能在空表上创建索引)
2、把对临时表的复杂的使用分散到多个批处理或过程中,以便为优化器提供信息 下面的这个过程需要进行优化: 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
北京易初电子技术有限公司软件中心 2005-01
- 15 -