Sybase的临时数据库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”

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

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

时间: 2024-09-20 00:04:05

Sybase的临时数据库tempdb的相关文章

由于文件组 ‘DEFAULT’ 中的磁盘空间不足,无法为数据库 ‘TEMPDB’ 分配新页

  今天接到一个朋友的问题,sql server报"由于文件组 'DEFAULT' 中的磁盘空间不足,无法为数据库 'TEMPDB' 分配新页",按照错误提示应该是tempdb空间不足,让其查看tempdb对应数据库文件大小为不到4g,查看其对应文件为自增长,硬盘空间还有40g多点,那应该没有问题.后来她说该文件所处位置的盘是fat32的,那问题确定是fat32最大支持文件大小是4g.解决办法: 1.让tempdb中的文件恢复默认值,设置其最大值 1)重启sql server服务,te

sss-使用sybase contral恢复数据库

问题描述 使用sybase contral恢复数据库 领导交给我一个文件,是从sybase数据库中导出的,我新搭建了一个sybase数据库,想把备份出来的文件导入到sybase中去,请大神帮忙指导一下 解决方案 Sybase Sql Anywhere(ASA)数据库断电损坏的数据恢复sybase 查看 数据库使用情况 解决方案二: 解决方案三: 工具-->SQLAnywhere16->恢复数据库->下一步->下一步->选择你要恢复的数据库文件

access数据库-C#连接Access数据库insert操作时,debug目录下临时数据库修改了,但是原数据库不变。

问题描述 C#连接Access数据库insert操作时,debug目录下临时数据库修改了,但是原数据库不变. 尝试把accdb放在debug文件下下过,但是我导入时它自动就会在项目文件夹里复制过去一个数据库文件.insert操作时,显示插入的信息是成功的,并且当时可以搜索到该数据,但重新运行程序后,以前的数据未被保存. App.config < ?xml version="1.0" encoding="utf-8" ?> < configurati

SQLite教程(十):内存数据库和临时数据库_SQLite

一.内存数据库:     在SQLite中,数据库通常是存储在磁盘文件中的.然而在有些情况下,我们可以让数据库始终驻留在内存中.最常用的一种方式是在调用sqlite3_open()的时候,数据库文件名参数传递":memory:",如:   复制代码 代码如下:     rc = sqlite3_open(":memory:", &db);       在调用完以上函数后,不会有任何磁盘文件被生成,取而代之的是,一个新的数据库在纯内存中被成功创建了.由于没有持

sybase是什么

一.Sybase数据库简介 1.版本 1984年,Mark B. Hiffman和Robert Epstern创建了Sybase公司,并在1987年推出了Sybase数据库产品.SYBASE主要有三种版本,一是UNIX操作系统下运行的版本,二是Novell Netware环境下运行的版本,三是Windows NT环境下运行的版本.现在最新版本已经是 12.5,在各主流Unix操作系统中均有广泛应用.IBM AIX,HP unix,Digital Unix,Sun solaris等等. 2.Syb

在ASP临时表操作的一些见解

临时表 本人在调试以下存储过程中遇到了很大的困扰(主要是临时表操作): CREATE PROCEDURE [c_readtop] @eachrow int=10 ASdeclare @tmpcat varchar(16)create table #tmp_result (arid int,cat2 varchar(16),title varchar(100),upday datetime)declare rt_cursor cursorfor select cat2 from category

sqlserver 临时表 Vs 表变量 详细介绍_MsSql

这里我们在SQL Server 2005\SQL Server 2008版本上通过举例子,说明临时表和表变量两者的一些特征,让我们对临时表和表变量有进一步的认识.在本章中,我们将从下面几个方面去进行描述,对其中的一些特征举例子说明: 约束(Constraint) 索引(Index) I/0开销 作用域(scope) 存儲位置 其他   例子描述 约束(Constraint)            在临时表和表变量,都可以创建Constraint.针对表变量,只有定义时能加Constraint.

SqlServer数据库提示 “tempdb” 的日志已满 问题解决方案_MsSql

执行sql 语句,中间没有用到临时表 提示服务器: 消息 9002,级别 17,状态 2,行 1 数据库 'tempdb' 的日志已满.请备份该数据库的事务日志以释放一些日志空间. 网上找了下解决方案,大体是扩大临时库的日志文件的大小解决的 解决过程: 查看了下数据库的属性,是自动增长,不指定文件大小上限. 在网上Google了很久,试了些方法都不行:数据库所在磁盘还有很大的可用空间,试着下重药了. 直接把tempdb的数据文件和日志文件的大小改为3000M, 问题解决. 记录一下清空日志的命令

SqlServer数据库提示 “tempdb” 的日志已满 问题解决方案

执行sql 语句,中间没有用到临时表 提示服务器: 消息 9002,级别 17,状态 2,行 1 数据库 'tempdb' 的日志已满.请备份该数据库的事务日志以释放一些日志空间. 网上找了下解决方案,大体是扩大临时库的日志文件的大小解决的 解决过程: 查看了下数据库的属性,是自动增长,不指定文件大小上限. 在网上Google了很久,试了些方法都不行:数据库所在磁盘还有很大的可用空间,试着下重药了. 直接把tempdb的数据文件和日志文件的大小改为3000M, 问题解决. 记录一下清空日志的命令