热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

用sp

在IT专家中有一种广泛的曲解,就是认为锁定是不好的东西,你必需尽一切可能保证数据库锁定不会使得过程无法正常运行。为了能够确保一个一致的数据库环境,在对资源进行修正时

在IT 专家中有一种广泛的曲解,就是认为“锁定是不好的东西”,你必需尽一切可能保证数据库锁定不会使得过程无法正常运行。为了能够确保一个一致的数据库环境,在对资源进行修正时,数据库引擎必需利用一种机制来获得对资源的独占权。

SQL Server中也用锁定,它们是指为了达到这种一致性,数据库引擎用来保证每一次只有一个线程同时拜访同一个资源的对象。假如不用锁定的话,各个过程同时进行数据修正就可能产生,这就会使数据库处于一种不一致的状态。这样看来,锁定就成了好东西;但是,你应当以特定的方法来打算你的利用程序,让涉及的锁定的数目降到最少。在这篇文章中,我将讨论一个让你能够分析数据库锁定标题的存储过程。

找出什么被锁定了

系统的反应缓慢意味着你应当做一些调查了。你的查找最好从测定系统产生锁定的数目和频率开端。假如你的系统环境处理事务性很高的话,这样各个利用程序争取资源就会很常见,从而引起锁定。解决这些标题的要害就在于能够断定被锁定的资源和争取资源的过程。

sp_lock

sp_lock这个系统存储过程与SQL Server 2000 打包在一起,它将使你对在你系统中产生的锁定有深进的懂得。这个程序会从主数据库中的syslockinfo中返回与锁定相干的大批信息,而主数据库是一个包含了所有答应、转换和等候锁定恳求信息的系统工作台。

让我们来看一下运行 sp_lock 程序之后,它会为我们供给什么信息:

EXECUTE sp_lock

在我的系统中,这是该存储过程返回的内容。sp_lock 返回的信息并不是一目了然的,要获得有用的数据,还需要做一些查找。但是,你也可以复制该存储过程的文本,然后创立一个新的,从而得到关于系统过程的更好的说明。(在这篇文章中,我们将集中讨论sp_lock返回的数据。)

从上面的成果我们可以看到spid、dbid、objid、indid、type、resource、mode和status字段。spid是过程标识号码,用于辨认到SQL 服务器的连接。要发明哪些用户和该spid相连,你就要履行存储过程sp_who,并将spid作为一个参数传输给该程序。dbid是锁定产生的数据库,你可以在主数据库中的sysdatabases表格中找到它。字段objid用来显示在数据库中锁定产生所在的对象。要查看这个对象,你可以在主数据库中的sysobjects表格中查询指定的objid。

在以上的屏幕截图中产生的单一记录并不必定能显示正在你的工作环境中产生的真实情况。在运行这个程序时,你想要找到500到1000个甚至更多成果。每一次你履行sp_lock,都将有可能得到不同的成果,由于又产生了新的锁定,而部分旧的锁定已经被解除了。假如你发明sp_lock返回的成果中,大批的成果都有着雷同的spid,很有可能该过程正在进行大型的处理,同时这些锁定可能开端禁止新事务的产生。

当你发明一个spid 获得了大批的数据库锁定时,这将有助于断定什么存储过程或语句正在运行。为了达到这个目标,运行以下 DBCC 命令:

DBCC INPUTBUFFER(spid)

这个DBCC命令将返回正在EventInfo字段中运行的语句的相干信息。

一个可靠的出发点

系统运行缓慢可能阐明你的表格上有大批的锁定。造成这些锁定的原因较多,如某个用户正在你的系统中运行一个相当长的查询,一个过程占用大批资源或者两个要害过程争取同一资源,经常造成逝世锁。

一旦发明你认为正在减缓你系统速度的过程,应当怎么办?在大多数情况下,不能采用任何措施,只能监控系统。结束这个过程并不是明智之举,由于它包含了很多系统锁定,除非你完整确定不会有其他的负面影响。不然的话,你就应当想措施主动分析锁定状态。还有一个解决措施就是想出一种方法,使得在一天的特定时间内,当系统锁数目达到极限时,发出通知。

你对自己的系统信息收集的越多,在解决标题时,你的上风就越大。

Tim Chapman是肯塔基州路易维尔市一家银行的SQL Server数据库治理员,他有超过7年的行业经验。




推荐阅读
  • 福克斯新闻数据库配置失误导致1300万条敏感记录泄露
    由于数据库配置错误,福克斯新闻暴露了一个58GB的未受保护数据库,其中包含约1300万条网络内容管理记录。任何互联网用户都可以访问这些数据,引发了严重的安全风险。 ... [详细]
  • 本文详细介绍了优化DB2数据库性能的多种方法,涵盖统计信息更新、缓冲池调整、日志缓冲区配置、应用程序堆大小设置、排序堆参数调整、代理程序管理、锁机制优化、活动应用程序限制、页清除程序配置、I/O服务器数量设定以及编入组提交数调整等方面。通过这些技术手段,可以显著提升数据库的运行效率和响应速度。 ... [详细]
  • 本文深入探讨了SQL数据库中常见的面试问题,包括如何获取自增字段的当前值、防止SQL注入的方法、游标的作用与使用、索引的形式及其优缺点,以及事务和存储过程的概念。通过详细的解答和示例,帮助读者更好地理解和应对这些技术问题。 ... [详细]
  • 1.执行sqlsever存储过程,消息:SQLServer阻止了对组件“AdHocDistributedQueries”的STATEMENT“OpenRowsetOpenDatas ... [详细]
  • 本文详细探讨了 org.apache.hadoop.ha.HAServiceTarget 类中的 checkFencingConfigured 方法,包括其功能、应用场景及代码示例。通过实际代码片段,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 本文详细介绍了如何使用 PHP 接收并处理微信支付的回调结果,确保支付通知能够被正确接收和响应。 ... [详细]
  • 本文介绍了如何使用JavaScript的Fetch API与Express服务器进行交互,涵盖了GET、POST、PUT和DELETE请求的实现,并展示了如何处理JSON响应。 ... [详细]
  • 华为智慧屏:超越屏幕尺寸的智能进化
    继全球发布后,华为智慧屏于9月26日在上海正式亮相,推出65英寸和75英寸版本。该产品不仅在屏幕尺寸上有所突破,更在性能和智能化方面实现了显著提升。 ... [详细]
  • NTP服务器配置详解:原理与工作模式
    本文深入探讨了网络时间协议(NTP)的工作原理及其多种工作模式,旨在帮助读者全面理解NTP的配置参数和应用场景。NTP是基于RFC 1305的时间同步标准,广泛应用于分布式系统中,确保设备间时钟的一致性。 ... [详细]
  • 探索新一代API文档工具,告别Swagger的繁琐
    对于后端开发者而言,编写和维护API文档既繁琐又不可或缺。本文将介绍一款全新的API文档工具,帮助团队更高效地协作,简化API文档生成流程。 ... [详细]
  • 本文详细介绍了在不同操作系统中查找和设置网卡的方法,涵盖了Windows系统的具体步骤,并提供了关于网卡位置、无线网络设置及常见问题的解答。 ... [详细]
  • 深入解析Serverless架构模式
    本文将详细介绍Serverless架构模式的核心概念、工作原理及其优势。通过对比传统架构,探讨Serverless如何简化应用开发与运维流程,并介绍当前主流的Serverless平台。 ... [详细]
  • 本文探讨了如何解决PHP文件无法写入本地文件的问题,并解释了PHP文件中HTML代码无效的原因,提供了一系列实用的解决方案和最佳实践。 ... [详细]
  • HTML5 表单新增属性详解
    本文深入探讨了HTML5中表单的新增属性,帮助读者全面掌握这些新特性。内容涵盖autocomplete、autofocus、list等常用属性,并详细解释了form、novalidate、enctype和accept-charset等高级属性的功能与应用场景。 ... [详细]
  • 使用PHP实现网站访客计数器的完整指南
    本文详细介绍了如何利用PHP构建一个简易的网站访客统计系统。通过具体的代码示例和详细的解释,帮助开发者理解和实现这一功能,适用于初学者和有一定经验的开发人员。 ... [详细]
author-avatar
沫cc乀纱蔓
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有