免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4640 | 回复: 5
打印 上一主题 下一主题

临时数据库 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2002-06-26 10:52 |只看该作者 |倒序浏览
临时数据库

  缺省情况下,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,配置内存池

第三步:优化临时表

     大多数临时表的使用是简单的,很少需要优化。但需要对临时表进行复杂的访问则

应通过使用多个过程或批处理来把表的创建和索引分开。以下两种技术可以改善临时表的优化

&amp;Oslash&#59;         在临时表上创建索引

1)  临时表必须存在
2)  统计页必须存在(即不能在空表上创建索引)

&amp;Oslash&#59;         把对临时表的复杂的使用分散到多个批处理或过程中,以便为优化器提供信息

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

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”

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

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

  

论坛徽章:
0
2 [报告]
发表于 2002-06-26 13:13 |只看该作者

临时数据库

请问是否一定要从段上删除master设备,不删又会怎样?

论坛徽章:
0
3 [报告]
发表于 2002-06-26 17:49 |只看该作者

临时数据库

没有必要一定删除的
不删也可以正常使用。

论坛徽章:
0
4 [报告]
发表于 2002-07-19 17:53 |只看该作者

临时数据库

删了只是便于维护,并保证master库的相对独立性和安全

论坛徽章:
0
5 [报告]
发表于 2002-07-19 21:55 |只看该作者

临时数据库

对于大的应用,要求比较大的tempdb,而且对tempdb的操作频繁,这时把它从master迁出,建立在独立的设备上,有利于系统性能的提高,也便于把tempdb建在虚拟盘(如果你有足够大的内存,呵呵)。

论坛徽章:
0
6 [报告]
发表于 2002-09-10 14:07 |只看该作者

临时数据库

建立在虚拟盘上的tempdb在系统重新启动后,是否需要进行其他设置。也就是说,在虚拟盘上建设备及数据库,和在磁盘建设备和数据库一样吗?回复为感。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP