转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 数据库 >> SyBase >> 正文
阀值管理Threshold Management         ★★★★

阀值管理Threshold Management

作者:闵涛 文章来源:闵涛的学习笔记 点击数:618 更新时间:2009/4/22 23:09:16

在使用Sybase数据库管理系统(SQL Server)开发企业应用系统时,或者开发好的数据库应用系统投入实际运行后,由于用户不断地增加或者修改数据库中的数据,用户数据库的自由存储空间会日益减少。特别是数据库日志,增长速度很快。一旦自由空间用尽,SQL Server在缺省情况下挂起所有数据操纵事务,客户端应用程序停止执行。这样有可能会影响企业日常业务处理流程。Sybase SQL Server System10提供自动监视数据库自由存贮空间的机制——阈值管理,当数据库使用剩余空间低于一定值时,通过执行一个自定义的存储过程,来控制自由空间。在空间用完之前,采取相应措施,这样有利于业务处理顺利进行。如果能充分利用SQL Server的阈值管理功能,用户能使一些数据库管理工作自动化,规程化。所以,在此我们将SQL Server这一重要功能介绍给读者。

  SQL Server的阈值管理允许用户为数据库的某个段上的自由空间设置阈值和定义相应的存储过程。当该段上的自由空间低于所置阈值时,SQL Server自动运行相应存储过程。与阈值相对应的存储过程由用户定义,SQL Server不提供。一般来说,数据库管理员可通过这些存储过程来完成一些日常管理事务,例如:

  1. 备份数据库,清理日志和删除旧数据
  2. 备份数据库日志
  3. 扩展数据库空间
  4. 拷贝出表中的内容,清理日志,等等。

(一)段(Segment)

  SQL Server的阈值管理是基于段(Segment)的,因此,让我们先回顾一下段的概念。每个数据库创建时,它有三个缺值段:(1)System段;(2)default段;(3) logsegment段。以后,还可以为该数据库增加用户自定义段。将来所有的数据库对象都建立在这些段上,要么是系统定义的段,要么是用户定义的段。数据库的系统表存放在System段上。在没有指明段时,建立的对象存放在default段上。数据库的事务日志放在logsegment段上,该段是通过使用建立数据库( Create database )命令的log on 选项来定义的。

(二)最后机会阈值(Last_chance Threshold)

  缺省情况下,SQLServer监测日志段的自由空间,当自由空间量低于事务日志能成功转储的需要时,SQL Server运行sp_ thresholdaction过程。此自由空间量称为最后机会阈值( Last_chance threshold ),它由SQL Server计算得来,并且用户不能改变。  

sp_thresholdaction必须由用户编写,SQL Server不提供。另外,如果最后机会阈值越出,那么在日志空间释放前,SQL Server一直挂起所有事务。但可以使用sp_dboption对某一数据库来改变这一行为。设置abort tran on log full选项为true,可使得最后机会越出时,SQL Server撤回所有还未被注册的事务。

(三)阈值管理

  系统缺省建立最后机会阈值,由用户编写缺省阈值处理存储过程( sp_thresholdaction ),来控制自由空间。除此之外,还可以使用以下存储过程管理阈值:

  • sp_addthreshold 建立一个阈值

  • sp_dropthreshold 删除一个阈值

  • sp_helpthreshold 显示阈值有关的信息

  • sp_dboption 改变阈值的“挂起或取消”行为和取消阈值管理

  • sp_helpsegment 显示某个段上空间大小和自由空间大小的信息

(四)增加阈值(sp_addthreshold)

  它用于创建阈值( threshold )来监测数据库段中空间的使用。如果段中自由空间低于指定值,SQL Server运行有关的存储过程。增加阈值的命令语法为:
sp_addthreshold database, segment, free_pages, procedure 

  其中:

  • database——要添加阈值的数据库名。必须是当前数据库名称。

  • segment——其自由空间被监测的段。当指定“default“ 段时要用引号。

  • free_pages——阈值所指的自由空间页数。当段中自由空间低于该标准时,SQL Server运行有关存储过程。

  • procedure——当segment中的自由空间低于free_pages时,SQL server 执行该存储过程。该过程可以放置在当前SQL Server或Open server的任意数据库中。但是,超出阈值时,不能执行远程SQL Server上的存储过程。

  例如:sp_addthreshold pubs2, logsegment, 200, dump_transaction 

  其中,存储过程定义为:

create procedure dump_transaction 
@ dbname varchar (30), 
@ segmentname varchar (30), 
@ space_left int, 
@ status int 
as 
dump transaction @dbname to "/dev/rmtx" 

  那么,当日志段上可用空间小于200页时,SQL Server运行存储过程dump_transaction,将pubs2 数据库的日志转储到另一台设置上。

  sp_addthreshold不检查存储过程存在已否。但当阈值越出时,如果存储过程不存在,SQL Server把错误信息送到错误日志( errorlog )中。系统允许每个数据库有256个阈值,而同一段上二个阈值之间的最小空间为128页。其存储过程可以是系统存储过程,也可是在其它数据库里的存储过程,或者Open Server远过程调用。

(五)删除阈值(sp_dropthreshold)

  它删除某个段的自由空间阈值,但是不能删除日志段的最后机会阈植。删除阈值的命令语法为:

sp_dropthreshold database_name,segment_name,free_pages 

  其中三个参数分别为:阈值所属数据库名,阈值所监测的自由空间的段名,和自由空间页。例如:

sp_dropthreshold pubs2, logsegment, 200 
删除pubs2库中logsegment段的阈值200。

(六)显示阈值(sp_helpthreshold)

  它报告当前数据库上与所有阈值有关的段,自由空间值,状态以及存储过程或报告某一特定段的所有阈值。显示阈值的语法为:

sp_helpthreshold [segment_name] 

  其中segment_name是当前数据库上一个段的名字。

  例如:

  1. sp_helpthreshold logsegment 显示在日志段上的所有阈值
  2. sp_helpthreshold 显示当前数据库上所有段上的全部阈值

(七)sp_dboption的新选择

  abort xact when log is full 

  当日志段的最后机会阈值被超越时,试图往该日志段上记日志的用户进程将被挂起还是被撤回?缺省情况下系统挂起所有进程。但是可以使用sp_aboption改变它。执行sp_dboption salesdb,"abort xact when log is full",true 命令后,一旦日志满了,则数据库修改事务将会被回滚。

  disable free space acctg

  这个选择取消数据库中的阈值管理,但不影响最后机会阈值。执行:sp_dboption saledb, "disable free space acctg",true 它取消对非日志段上自由空间的统计。取消后,对系统有以下影响:

  • SQL Server仅计算日志段上的自由空间

  • 日志段上的阈值继续处于活动状态

  • 在数据段上,系统表不改变,并且sp_spaceused得到的值是该选择被取消时刻的值

  • 数据库段上的阈值失效

  • 恢复加快

(八)阈值的触发过程

  频繁的插入和删除可能会使数据库段中的空间波动,阈值可能被多次超越,SQL Server使用系统变量@@thresh_hysteresis,避免连续触发阈值存储过程。它的值由SQL Server设定。在system 10.0中,@@thresh_hysteresis是64页。

  

  因此,增加一个阈值,它必须与下一个最近的阈值相距至少2*@@thresh_hysteresis页。

  一个阈值被触发,需要以下几个条件成立:

  • 必须到达阈值

  • 阈值处于活动状态(即它被建立后或者自由空间达到阈值减于@@thresh_hysteresis)

  • 只有自由空间减少阈值才触发,如果自由空间增加,它永远不触发


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Sql Server  · MySql
    · Access  · ORACLE
    · SyBase  · 其他
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台