sqlserver2008 死锁解决方法及性能优化方法
原文: http://blog.csdn.net/kuui_chiu/article/details/48621939
十步优化SQL Server中的数据访问
http://tech.it168.com/a2009/1125/814/000000814758_2.shtml
关于死锁:
- sp_who active --看看哪个引起的死锁, blk里面即阻塞的spid;
- dbcc inputbuffer(@blk) -- 可以查看是那个sql语句造成的死锁;
- sp_lock --看看锁住了那个资源,objid即被锁住的资源id;
- select object_name(objid) --可得到受影响的表名;
综合以上功能,我们可以写一个自动查找死锁的存储过程,如下:
查找死锁.sql
- SET ANSI_NULLS ON
- GO
- SET QUOTED_IDENTIFIER ON
- GO
- CREATE PROCEDURE Find_Lock
- AS
- BEGIN
- SET NOCOUNT ON;
- declare @spid int,@blk int
- DECLARE cur CURSOR FOR
- select 0 ,blocked
- from (select * from sysprocesses where blocked>0 ) a
- where not exists(select * from (select * from sysprocesses where blocked>0 ) b
- where a.blocked=spid)
- union select spid,blocked from sysprocesses where blocked>0
- OPEN cur
- FETCH NEXT FROM cur INTO @spid,@blk
- WHILE @@FETCH_STATUS = 0
- begin
- if @spid =0
- select '引起死锁的进程号是 : '+ CAST(@blk AS VARCHAR(10)) + ', 其执行的 SQL 语法如下 '
- else
- select '进程号 SPID :'+ CAST(@spid AS VARCHAR(10))+ '被进程号 SPID : '+ CAST(@blk AS VARCHAR(10)) +'阻塞 , 其当前进程执行的 SQL 语法如下'
- DBCC INPUTBUFFER (@blk )
- FETCH NEXT FROM cur INTO @spid,@blk
- end
- CLOSE cur
- DEALLOCATE cur
- END
- GO
- --sqlserver性能优化
- go
- exec sp_configure ”awe enabled”,”1″–内存可以支持64g
- exec sp_configure ”lightweight pooling”,”0″–不使用nt纤程
- exec sp_configure ”priority boost”,”1″–增加sqlserver优先级
- exec sp_configure ”network packet size (b)”,”8192″–增加sqlserver网络包的大小
- reconfigure with override
- –优化数据库设置
- declare @currentdatabase sysname
- select @currentdatabase = db_name((select dbid from master.dbo.sysprocesses wherespid = @@spid))
- exec sp_dboption @currentdatabase, ‘select into/bulkcopy’, ‘true’ –对大容量数据操作不记录日志
- exec sp_dboption @currentdatabase, ‘trunc. log on chkpt.’, ‘true’ –自动截断日志
- exec sp_dboption @currentdatabase, ‘auto create statistics’, ‘true’–自动创建统计
- exec sp_dboption @currentdatabase, ‘auto update statistics’, ‘true’–自动更新统
- go
如果你不做日常维护,请立即开始。
经常用
- DBCC showcontig(表名) 查看表的碎片, 主要查看扫描密度 ,如果主要的大表扫描密度 < 40%, 意味着你有严重的碎片可以用
- DBCC indexDefrag (数据库名,表名)整理碎片或者用
- DBCC DBREINDEX(表名) 重建 index.
http://bbs.51cto.com/thread-1024392-1.html
执行下面的SQL语句就知道了(下面的语句可以在SQL Server 2005及后续版本中运行,用你的数据库名替换掉这里的AdventureWorks):
- USE master
- go
- SELECT
- object_name(dt.OBJECT_ID,db_id('AdventureWorks')) Tablename,
- si.name
- IndexName,dt.avg_fragmentation_in_percent AS ExternalFragmentation,
- dt.avg_page_space_used_in_percent AS InternalFragmentation
- FROM
- (
- SELECT object_id,index_id,avg_fragmentation_in_percent,avg_page_space_used_in_percent
- FROM sys.dm_db_index_physical_stats (db_id('AdventureWorks'),null,null,null,'DETAILED')
- WHERE index_id <> 0
- ) AS dt INNER JOIN AdventureWorks.sys.indexes si ON si.object_id=dt.object_id
- AND si.index_id=dt.index_id
- AND dt.avg_fragmentation_in_percent>10
- AND dt.avg_page_space_used_in_percent<75
- ORDER BY avg_fragmentation_in_percent DESC
sqlserver2008 死锁解决方法及性能优化方法的更多相关文章
- DevExpress ChartControl大数据加载时有哪些性能优化方法
DevExpress ChartControl加载大数据量数据时的性能优化方法有哪些? 关于图表优化,可从以下几个方面解决: 1.关闭不需要的可视化的元素(如LineMarkers, Labels等) ...
- Linux 下网络性能优化方法简析
概述 对于网络的行为,可以简单划分为 3 条路径:1) 发送路径,2) 转发路径,3) 接收路径,而网络性能的优化则可基于这 3 条路径来考虑.由于数据包的转发一般是具备路由功能的设备所关注,在本文中 ...
- (摘录)26个ASP.NET常用性能优化方法
数据库访问性能优化 数据库的连接和关闭 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源. ASP.NET中提供了连接池(Co ...
- 26个ASP.NET常用性能优化方法
数据库访问性能优化 数据库的连接和关闭 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源. ASP.NET中提供了连接池(Co ...
- redmine在linux上的mysql性能优化方法与问题排查方案
iredmine的linux服务器mysql性能优化方法与问题排查方案 问题定位: 客户端工具: 1. 浏览器inspect-tool的network timing工具分析 2. 浏览 ...
- .NET 性能优化方法总结==转
.NET 性能优化方法总结 目录 目录 1. C#语言方面... 4 1.1 垃圾回收... 4 1.1.1 避免不必要的对象创建... 4 1.1.2 不要使用空析构函数 ★... 4 1.1.3 ...
- Linux网络性能优化方法简析
Linux网络性能优化方法简析 2010-12-20 10:56 赵军 IBMDW 字号:T | T 性能问题永远是永恒的主题之一,而Linux在网络性能方面的优势则显而易见,这篇文章是对于Linux ...
- 5种kafka消费端性能优化方法
摘要:带你了解基于FusionInsight HD&MRS的5种kafka消费端性能优化方法. 本文分享自华为云社区<FusionInsight HD&MRSkafka消费端性能 ...
- HBase性能优化方法总结(转)
本文主要是从HBase应用程序设计与开发的角度,总结几种常用的性能优化方法.有关HBase系统配置级别的优化,这里涉及的不多,这部分可以参考:淘宝Ken Wu同学的博客. 1. 表的设计 1.1 Pr ...
随机推荐
- Redis的RDB和AOF持久化
RDB 持久化:在指定的时间间隔内生成数据集的时间点快照. AOF 持久化:记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集. RDB 它只保存了 Redis 在某个 ...
- java 读写文件乱码问题
这样写,会出现乱码.原因是文件时gbk格式的, BufferedReader br = new BufferedReader(new FileReader(indir)); BufferedWrite ...
- [洛谷P4430]小猴打架
题目大意:有$n$个点,问有多少种连成生成树的方案. 题解:根据$prufer$序列可得,$n$个点的生成树有$n^{n-2}$个,每种生成树有$(n-1)!$种生成方案,所以答案是$n^{n-2}( ...
- HDU.3342 Legal or Not (拓扑排序 TopSort)
HDU.3342 Legal or Not (拓扑排序 TopSort) 题意分析 裸的拓扑排序 根据是否成环来判断是否合法 详解请移步 算法学习 拓扑排序(TopSort) 代码总览 #includ ...
- UVA.11636 Hello World! (思维题)
UVA.11636 Hello World! (思维题) 题意分析 这题挺水的,还是错了几发. QWQ. 有一个同学打了一行hello world,现在他想打n行hello world,请问最少复制粘 ...
- 一些实用的JQuery代码片段收集
本文将展示50个非常实用的JQuery代码片段,这些代码能够给你的JavaScript项目提供帮助.其中的一些代码段是从jQuery1.4.2才开始支持的做法,另一些则是真正有用的函数或方法,他们能够 ...
- Vue.js中的常用的指令缩写
Vue.js为两个最为常用的指令提供了特别的缩写: v-bind缩写 <!--完整语法--> <a v-bind:href="url">测试</a&g ...
- 使用snmp4j实现Snmp功能(三)
相关链接:Snmp学习笔记使用snmp4j实现Snmp功能(一)使用snmp4j实现Snmp功能(二)使用snmp4j实现Snmp功能(三) 前两篇文章讲了如何使用Snmp4j实现Set.Get(使用 ...
- [codeforces/edu30]总结(E)
链接:http://codeforces.com/contest/873/ A题: 贪心,把最大的k个数变成x即可. B题: 从左向右枚举右端点,维护balance的最长长度.任意一个子串可以看做两个 ...
- zabbix监控ipmi
@1.假设idrac已经启用,并且使用ipmitool能正确读取数据(本文后面详细描述如何配置) @2.第一节只涉及web配置 1.创建主机 configuration-->hosts--> ...