[size=medium][b]基础操作:[/b]
[b]如何使用交互式管理工具isql?[/b][/size]
[size=medium]Q:系统提示已超出最大设备数?如何解决?[/b][/size]A:Sybas默认的
[size=medium][b]Q:如何查看系统的各项参数?如何执行sp_configure 系统存储过程来查看系统参数?[/b][/size]
[size=medium][b]2.16 如何创建数据库设备?[/b][/size]
[size=medium][b]2.30 如何查看数据库空间的大小?[/b][/size]
[size=medium][b]常规调优:[/b][/size]
[size=medium][b]空间:[/b][/size]
[b]优化Tempdb[/b]
[size=large][b]1.Tempdb的作用[/b][/size]
[size=large][b]tempdb 的初始分配[/b][/size]
[size=medium][b]从 tempdb 段中删除主设备[/b][/size]
第 12 章 tempdb 性能问题
segmap 列应为主设备上的任何分配报告 “1”,表示只有
system 段仍在使用该设备:
dbid name segmap
------ --------------- -----------
2 master 1
2 tune3 7
[size=medium][b]
使用多个磁盘提高并行查询性能[/b][/size]
[size=medium][b]将 tempdb 绑定到其自身的高速缓存[/b][/size]
性能和调优:优化程序和抽象计划 271
临时表与锁定
用于高速缓存绑定的命令
使用 sp_cacheconfig 和 sp_poolconfig 可以创建命名数据高速缓存,并为
大 I/O 配置给定大小的池。只有系统管理员才能配置高速缓存和池。
注释 对大 I/O 的引用位于一台逻辑页大小为 2K 的服务器上。如果
服务器的逻辑页大小为 8K,则用于 I/O 的基本单位为 8K。如果服
务器的逻辑页大小为 16K,则用于 I/O 的基本单位为 16K。
有关配置命名高速缓存和池的说明,请参见系统管理指南。 配置了高速缓存并且重新启动服务器后,即可将 tempdb 绑定到新的
高速缓存:
sp_bindcache "tempdb_cache", tempdb
[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 命令行入门
[sybase@afcds 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