代码改变世界

SQLServer 查询使用键查找时锁申请及释放顺序

2014-08-14 09:14 by JentleWang, 2695 阅读, 7 推荐, 收藏, 编辑
摘要:最近看了高兄的一篇文章,Sql Server 高频,高并发访问中的键查找死锁解析,很有收获,里面讲到了键查找引起的死锁问题。当然看的过程中,其实自己有个疑问:对于键查找这类查询,会申请哪些锁,锁申请和释放的顺序是怎样的?准备备注:测试表仍然使用高兄文中创建的测试表testklup在开始之前,使用db... 阅读全文

由delete导致的超时已过期问题

2014-08-11 09:03 by JentleWang, 4122 阅读, 2 推荐, 收藏, 编辑
摘要:1. 问题 开发人员反映应用程序中一条简单的delete语句执行报“超时已过期”错误。delete语句形式如下: delete * from table_1 where id=@value2. 分析 1)验证delete检索字段是否有索引 首先我想到的是检索字段 id 列上是否有索引,即是否... 阅读全文

Ad-hoc 查询以及动态SQL的罪恶[译]

2014-07-29 14:28 by JentleWang, 1757 阅读, 0 推荐, 收藏, 编辑
摘要:本文为翻译文章,原文地址:https://www.simple-talk.com/blogs/2009/08/03/stolen-pages-ad-hoc-queries-and-the-sins-of-dynamic-sql-in-the-application/ 前言 在硬件资源非常有... 阅读全文

监控SQLServer 数据库表每天的空间变化情况

2014-07-23 16:57 by JentleWang, 1703 阅读, 1 推荐, 收藏, 编辑
摘要:阅读完桦仔的《分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间)》后,我想使用文中提供的代码做一个统计表每天的新增行数及新增存储空间的功能实现步骤如下:1. 创建表创建表,存储每天的表空间占用情况CREATE TABLE [dbo].[t_rpt_table_space... 阅读全文

SQLServer Temp tables 数据疑问

2014-06-30 15:52 by JentleWang, 1078 阅读, 0 推荐, 收藏, 编辑
摘要:1. 现象使用Cacti监控,有关于临时表的一个图形可以看到正在使用的临时表Active Temp Tables的数量非常大,并且在非工作时间,也维持在400个左右。感觉非常奇怪,所以追查下!2. 探索首先,先验证下Cacti数据是否准确,已知Cacti数据是从SQLServer的sys.dm_os... 阅读全文

SQLServer表变量对IO及内存影响测试

2014-04-11 14:40 by JentleWang, 1948 阅读, 4 推荐, 收藏, 编辑
摘要:1. 测试创建表变量对IO的影响测试创建表变量前后,tempdb的空间大小,目前使用sp_spaceused得到大小,也可以使用视图sys.dm_db_file_space_usageuse tempdbgoSet nocount onExec sp_spaceused /*插入数据之前*/declare @tmp_orders table ( list_no int,id int)insert into @tmp_orders(list_no,id)select ROW_NUMBER() over( order by Id ) list_no,idfrom Test.dbo.Orders . 阅读全文

SQLServer 存储过程嵌套事务处理

2014-04-09 17:01 by JentleWang, 6644 阅读, 2 推荐, 收藏, 编辑
摘要:某个存储过程可能被单独调用,也可能由其他存储过程嵌套调用,则可能会发生嵌套事务的情形。下面是一种解决存储过程嵌套调用的通用代码,在不能确定存储过程是否可能被其他存储过程调用的情况下,建议每个存储过程都按照这个模板建立create proc proc_exampleas begin --声明变量,存放当前已开启的事务数 declare @exist_trancount int select @exist_trancount = @@trancount if @exist_trancount > 0 --创建事务保存点 save transac... 阅读全文

SQLServer通过链接服务器远程删除数据性能问题解决

2014-04-03 16:49 by JentleWang, 4552 阅读, 7 推荐, 收藏, 编辑
摘要:在上一遍文章中介绍了SQLServer通过链接服务器访问Oracle性能问题的解决方法,本文介绍链接服务器下远程删除SQLServer数据的性能问题解决1. 问题发现系统中有个功能,需要远程删除SQLServer实例的表数据,删除语句中有where条件,条件中有一个子查询。该功能前台执行速度非常慢。所以准备调优。下面为演示代码,未优化前如下:DELETE FROM [LINKSERVERNAME].[AdventureWorks2008].[Sales].[SalesOrderDetail]WHERE SalesOrderDetailID=5 AND EXISTS(SELECT TOP ... 阅读全文

SQLServer访问Oracle查询性能问题解决

2014-03-25 08:45 by JentleWang, 3513 阅读, 4 推荐, 收藏, 编辑
摘要:1. 问题 系统有个模块,需要查询Oracle数据库中的数据。目前是通过建立链接服务器实现的。 SQLServer访问Oracle实现 可参考这篇文章http://www.cnblogs.com/gnielee/archive/2010/09/07/access-oracle-from-sqlserver.html 目前的查询语句就是一个简单的带where条件的查询语句,类似如下: SELECT * FROM LINKED_NAME..ACCOUNT_NAME.TABLE_NAME WHERE COLUMN1=SID; 存在的问题是查询速度非常慢,前台报超时。所以准备提升下查询的性能... 阅读全文

使用ServiceBroker自动激活模拟"秒杀"场景

2014-03-24 08:49 by JentleWang, 1848 阅读, 4 推荐, 收藏, 编辑
摘要:1.简介 SQL Server Service Broker 是SQL server里面比较独特的一个功能。它可帮助开发人员构建异步的松散耦合应用程序 ServiceBroker入门文章:http://blogs.msdn.com/b/apgcdsd/archive/2012/07/27/sql-server-service-broker-demo.aspx ServiceBroker的队列存在自动激活(ACTIVATION)功能,其中内部激活可以激活数据库存储过程接受和处理队列的消息,而且可以启动激活存储过程的多个实例(MAX_QUEUE_READERS)。当SQLServer的SCH... 阅读全文