* 用sp_who获取关于被阻碍进程的信息
系统过程sp_who给出系统进程的报告。如果用户的命令正被另一进程保持的锁阻碍,则:
status列显示“lock sleep”。
blk列显示保持该锁或这些锁的进程标识,即被谁锁定了。
loginame列显示登录操作员。结合相应的操作员信息表,便可知道操作员是谁。
用sp_lock浏览锁
要得到关于当前SQL Server上保持的锁的报告,可用系统过程sp_lock [spid1[,spid2]],spid1,spid2是表master.dbo.sysprocesses中的sql server进程id号,用sp_who可以得到锁定与被锁定的spid号:
◆locktype列显示加锁的类型和封锁的粒度,有些锁的后缀还带有blk表明锁的状态。前缀表明锁的类型:Sh—共享锁,Ex—排它锁或更新锁,中间表明锁死在表上(”table”或’intent’)还是在页上(page). 后缀“blk”表明该进程正在障碍另一个需要请求锁的进程。一旦正在障碍的进程一结束,其他进程就向前移动。“demand”后缀表明当前共享锁一释放, 该进程就申请互斥锁。
◆table_id列显示表的id号,结合sysobjects即可查出被封锁的表名。
管理员可以使用系统存储过程来方便地查看当前对象上锁的信息,它的语法为:
SP_LOCK
其显示信息为:
Spid:进程ID号
Dbid:数据库ID号
Objid:对象ID号
Indid:索引ID号
Type:缩写的对象类型(DB:数据库、TAB:表、PG:页、EXT:簇、RID:行标等)
Resource:锁资源
Mode:锁模式(S:共享锁、U:修改锁、X:排它锁、IS共享意图锁、IX排它意图锁)
Status:当前该锁的状态(GRANT获得状态、WAIT被其它进程阻塞、CVNT当前锁正在转化)。
系统管理员的另一项日常工作是监视系统运行情况。主要有以下几个方面:
1)、监视当前用户以及进程的信息
使用系统过程:sp_who
说明:该命令显示当前系统所有注册用户及进程信息,如下表是某系统的信息。
SpidStatusLoginamehostnameblkdbnamecmd
---------------------------------------------------------------
1RunningSascosysv0MasterSELECT
2SleepingNULL0MasterNETWORK HANDLE
3SleepingNULL0MasterDEADLOCK TUNE
4SleepingNULL0MasterMIRROR HANDLER
5SleepingNULL0MasterHOUSEKEEPER
6SleepingNULL0MasterCHECKPOINT SLEEP
从左向右依次显示:进程号、当前状态、注册用户名、主机名、占用块数、数据库名以及当前命令。
如果监视时发现进程总数接近最大连接数(用系统过程:sp_configure “user conn” 查看)时,应下掉不活动或无关进程,以保证系统正常运做;另外亦可监视非法用户或用户使用不属于自己使用范围的数据库等情况。
2)、监视目标占用空间情况
使用系统过程:sp_spaceused
说明:该过程显示行数、数据页数以及当前数据库中由某个目标或所有目标所占用的空间。如下表是某数据库日志表的信息:
NameRow_totalreserveddataIndex_sizeunused
------------------------------------------------------------
SyslogsNot avail32KB32KB0KBNot avail
日常要监视的主要目标有:用户数据库、数据库日志表(syslogs)以及计费原始数据表等。如果发现占用空间过大,对日志表要进行转储;对其他目标则应扩充空间或清除垃圾数据。
3)、监视 SQL Server 统计数字
使用系统过程:sp_monitor
说明:sp_monitor 显示SQL Server 的历史统计数字,下表是某系统的统计数字:
Last_runCurrent_runSeconds
---------------------------------------------------------------
May 13 2000 1:27PMMay 13 2000 3:01PM5678
CPU_busyIO_busyIdle
---------------------------------------------------------------
16(6)-0%0(0)-0%5727(5672)-99%
Packets_receivedPackets_sentPacket_errors
---------------------------------------------------------------
21(17)100(97)0(0)
Total_readTotal_writeTotal_errorsConnections
--------------------------------------------------------
785(366)311(113)0(0)3(2)
上表依次给出该系统本次运行统计的上一次时间、本次时间、间隔秒数、CPU占用、IO占用、收发包情况、系统读入写出情况等信息
/
sybase的io读写单位是page,一般是2K。
但是不一定每次就读一页。一般读取8page。如果你的逻辑页是2K,则是16Kbytes。