天天看点

Sybase调优

[size=medium][b]基础操作:[/b]

[b]如何使用交互式管理工具isql?[/b][/size]

在UNIX操作系统平台,使用SYBASE用户执行该命令;或者在Windows平台的DOS窗口中执行该命令。具体命令的通常使用方法如下所示:
isql –Uuser_name –Ppassword –Sserver_name
其中user_name:登录帐户名,例如sa
         password:登录帐户的口令,例如sa的口令123456
         server_name:数据库服务器的名称或者是在Dsedit使用程序中定义的相应
                               的服务器名称,例如SYB125
正确使用这个命令后,会进入1>提示符,而没有任何错误、信息提示。
Sybase isql 命令行入门
[[email protected] bin]$ isql -U username -P password
1>
这样就进入了isql的CLI,但是这个CLI相当的不友好,我在里面打了半天help啥的,啥也没有。。。最后还好一个quit能出来,才把我解救了。
1> sp_helpdb
2> go
列出所有库
1> use afcdb
2> go
打开一个库
1> sp_help
2> go
列出库中所有的表
1> sp_help DB01
2> go
查看一个表的定义
1> select count(*) from DB01
2> go
执行一句SQL语句
1> create table tmpTable (
2> id int,
3> name char(128))
4> go
建了一个叫tmpTable的表
1> insert into tmpTable values(1, ‘Robert is a pig!’)
2> go
(1 row affected)
插入一条数据
1> select * from tmpTable
2> go
 id
         name
 ———–
         ——————————————————————————————————————————–
           1
         Robert is a pig!
(1 row affected)
查询
           

[size=medium]Q:系统提示已超出最大设备数?如何解决?[/b][/size]A:Sybas默认的

系统设备数是10个,可以通过以下参数进行查看
sp_configure  "number of devices"
解决办法是,将设备参数调整至10个以上,通过以下命令进行修改:
sp_configure 'number of devices',20  将最大设备文件数据改为20个
           

[size=medium][b]Q:如何查看系统的各项参数?如何执行sp_configure 系统存储过程来查看系统参数?[/b][/size]

A: 
1.查看全部参数的配置:
isql  -Usa –P –Ssevername
1> sp_configure 
2> go

2.查看指定参数(如:查看“用户连接数”)
isql  -Usa –P –Ssevername
1> sp_configure  “number of user connections”
2>go
3.查看系统锁进程数
sp_configure "number of locks "
 查询可动态修改的参数 
1>sp_configure “abcdef” 
2>go 
 查询特定参数的配置情况 
1>sp_configure “参数名 
2>go” 
 修改可动态配置的参数 
1> sp_configure “参数名”,值 
2> go
           

[size=medium][b]2.16 如何创建数据库设备?[/b][/size]

在isql环境中执行:
1>	disk init
2>	name=”device_name”,
3>	physname=”physicalname”,
4>	vdevno=virtual_device_number,
5>	size=device_size
例:
1>	disk init
2>	name=”DATA1”,
3>	physname=”c:\sybase\data\data1.dat”,
4>	vdevno=6,
5>	size=5120
以上例子中,创建了一个名为DATA1的设备,设备文件为c:\sybase\data\data1.dat,虚拟设备号为6,大小为10M(size默认大小的单位为2K)
注:在ASE125以上版本中,device_size单位可以自定义为K,M,G。使用这些单位时,需要用双引号将device_size的值引起来,例如:”100K”,”10M”,”1G”。
           

[size=medium][b]2.30 如何查看数据库空间的大小?[/b][/size]

举例:
1.查看全部数据库的大小:
sp_helpdb
name           db_size  owner dbid created        status
-------------- -------- ----- ---- -------------- ------------------
master         5.0 MB   sa       1 Jan 01, 1900   no options set
model          2.0 MB   sa       3 Jan 01, 1900   no options set
pubs2          2.0 MB   sa       6 Sep 20, 1995   no options set
sybsystemprocs 16.0 MB  sa       4 Sep 20, 1995   trunc log on chkp
tempdb         2.0 MB   sa       2 Sep 20, 1995   select into/bulkcopy
Displays information about all the databases in Adaptive Server. 

2.查看指定数据库的大小
sp_helpdb pubs2

name   db_size  owner  dbid  created              status                                                                                                 
-----  -------  -----  ----  ------------  ---------------------- 
pubs2  2.0 MB    sa         4    Mar 05, 1993    abort tran when log full
device_fragments      size       usage               free kbytes
-----------------         ------      ------------          -------------
master                      2.0 MB  data and log            576 
name    attribute_class attribute                   int_value char_value  comments
------- --------------- ------------- --------- ----------- --------
pubs2   buffer manager  cache binding         1   pubs2_cache     NULL
Displays information about the pubs2 database.
           

[size=medium][b]常规调优:[/b][/size]

[size=medium][b]空间:[/b][/size]

[b]优化Tempdb[/b]

[size=large][b]1.Tempdb的作用[/b][/size]

tempdb 的管理对性能的影响
良好的 tempdb 管理对 Adaptive Server 的整体性能至关重要。不能忽
视 tempdb 或让它保持缺省状态。在许多服务器中它是最具动态性的 数据库,因而应受到特别关注。

如果预先计划好,大多数与 tempdb 相关的问题是可以避免的。如果 未能正确设置 tempdb 的大小或位置,就可能发生以下各种问题:

•	tempdb 经常被填满,并向用户发出错误消息,而用户必须等到有 可用空间时重新提交查询。
•	排序速度慢,用户无从知晓查询性能如此不稳定的原因。
•	由于系统表的锁定导致用户查询被临时锁定,无法创建临时表。
•	大量使用 tempdb 对象导致其它页被刷新出数据高速缓存。
	tempdb 性能的主要改进方面
以下这些主要方面很容易得到改进:
•	为所有 Adaptive Server 活动适当调整 tempdb 的大小
•	适当放置 tempdb,尽可能减少争用情况
•	将 tempdb 绑定到其自身的数据高速缓存
•	尽量减少 tempdb 中的资源锁定
           

[size=large][b]tempdb 的初始分配[/b][/size]

安装 Adaptive Server 时,tempdb 为 2MB,并全部位于主设备上,如
图 12-1 中所示。通常,它是系统管理员需要增大的第一个数据库。 服务器上的用户越多,它就应该越大。可以将它放到主设备或其它 设备上。根据具体需要,您可能要将 tempdb 分条,放到多个设备上。
图 12-1:
[size=large][b]tempdb 缺省分配 [/b][/size]

tempdb
数据和日志
(2MB)

d_master

使用 sp_helpdb 可以查看 tempdb 的大小和状态。下例显示了 tempdb
在安装时的缺省值:

sp_helpdb tempdb
name	db_size	owner	dbid	created	status
--------- -------- ------ ------ ----------- -------------------- tempdb	2.0 MB	sa	2	May 22, 1999 select into/bulkcopy

device_frag	size	usage	free kbytes
------------ -------- ------------ --------- master	2.0 MB	data and log 1248
           

[size=medium][b]从 tempdb 段中删除主设备[/b][/size]

缺省情况下, tempdb 的 system、 default 和 logsegment 各段在主设备 上分配了 2MB 空间。将新设备分配给 tempdb 时,它们自动成为全 部三个段的一部分。将第二个设备分配给 tempdb 后,即可从 default
和 logsegment 段中删除主设备。使用这种方式,可以确保 tempdb 中 的工作表和其它临时表不会和主设备上的其它用途争用资源。
从各段中删除主设备:
1	将 tempdb 改换到其它设备上,如果尚未这样做。例如:

alter database tempdb on tune3 = 20
2	发出 use tempdb 命令,然后从各段中删除主设备:

sp_dropsegment "default", tempdb, master sp_dropdegment system, tempdb, master sp_dropdegment logsegment, tempdb, master
3	若要检验 default 段是否不再包括主设备,请发出下面的命令:

select dbid, name, segmap from sysusages, sysdevices
where sysdevices.low <= sysusages.size + vstart
and sysdevices.high >= sysusages.size + vstart -1
and dbid = 2
and status & 2 = 2
270	Adaptive Server Enterprise
           

第 12 章 tempdb 性能问题

segmap 列应为主设备上的任何分配报告 “1”,表示只有

system 段仍在使用该设备:

dbid name segmap

------ --------------- -----------

2 master 1

2 tune3 7

[size=medium][b]

使用多个磁盘提高并行查询性能[/b][/size]

如果 tempdb 跨越多个设备,如图 12-2 所示,您可以在某些临时表 或工作表上发挥并行查询性能的优势。
图 12-2:tempdb 跨越磁盘

disk_1

disk_2	disk_3

d_master

tempdb

tempdb
           

[size=medium][b]将 tempdb 绑定到其自身的高速缓存[/b][/size]

在正常使用 Adaptive Server 的情况下,当创建、填充和删除临时表 时, tempdb 将频繁使用数据高速缓存。
将 tempdb 分配给其自身的数据高速缓存:

•	可以防止临时对象上的活动将其它对象刷新出缺省数据高速 缓存
•	有助于在多个高速缓存间分布 I/O
有关详细信息,请参见第 215 页的 “检查 tempdb 的高速缓存需求”。
           

性能和调优:优化程序和抽象计划 271

临时表与锁定

用于高速缓存绑定的命令

使用 sp_cacheconfig 和 sp_poolconfig 可以创建命名数据高速缓存,并为

大 I/O 配置给定大小的池。只有系统管理员才能配置高速缓存和池。

注释 对大 I/O 的引用位于一台逻辑页大小为 2K 的服务器上。如果

服务器的逻辑页大小为 8K,则用于 I/O 的基本单位为 8K。如果服

务器的逻辑页大小为 16K,则用于 I/O 的基本单位为 16K。

有关配置命名高速缓存和池的说明,请参见系统管理指南。 配置了高速缓存并且重新启动服务器后,即可将 tempdb 绑定到新的

高速缓存:

sp_bindcache "tempdb_cache", tempdb