随笔分类 -  sql

上一页 1 2 3 4 5 6 下一页
统计Wait_Queue
摘要:functionfunhelp(){$helpText=@"NAME:Collect_dm_os_wait_stats.ps1ThisscriptCollectWaitandQueueinformationfromDMVsys.dm_os_wait_statsThisisahardcodescript,youdon'tneedtospecifyanyparameter.Pleasemodify'computerList'ifyouwanttoaddmorecomputers..MakesureyouhaveaDisk_databaseinthehostwher 阅读全文
posted @ 2011-03-28 16:35 stswordman 阅读(392) 评论(0) 推荐(0) 编辑
各个数据库的io比例
摘要:select case df.database_id when DB_ID('distribution') then 'distDB' when DB_ID('tempdb') then 'tempdb' --add other needed database else 'otherDBs' end as dbName, case df.type when 0 then 'datafile' when 1 then 'logfile' else 'otherfile' 阅读全文
posted @ 2011-03-27 23:00 stswordman 阅读(522) 评论(0) 推荐(0) 编辑
查找阻塞
摘要:[代码] 阅读全文
posted @ 2011-02-16 17:12 stswordman 阅读(385) 评论(0) 推荐(0) 编辑
将脏页写回磁盘
摘要:'SQLServer:Buffer Manager\Page writes/sec' :Number of physical database page writes issued per second我们可以通过这个性能计数器(下文中简称PW)来观察SQLSERVER何时会将脏页(这里不包含日志)写回磁盘。文中讨论的脏页均为数据页,不包含脏日志(虽然SQLSERVER认为日志也是脏的…)Checkpoint: Checkpoint发生是,SQLSERVER会将脏页(包含了未提交事务脏页和已提交事务的脏页)写回磁盘。 Checkpoint的作用是缩短数据库恢复(recovery 阅读全文
posted @ 2011-01-10 15:23 stswordman 阅读(2576) 评论(15) 推荐(1) 编辑
monitor checkpoint by Extended Event
摘要:[代码] 阅读全文
posted @ 2011-01-10 10:24 stswordman 阅读(277) 评论(0) 推荐(0) 编辑
登录的监控
摘要:[代码] 阅读全文
posted @ 2011-01-06 11:04 stswordman 阅读(346) 评论(0) 推荐(0) 编辑
sp_executesql是参数部分的长度定义发生变化能否重用执行计划
摘要:去年techtalk的时候有同事问了我一个问题:使用sp_executesql是参数部分的长度定义发生变化能否重用执行计划。当时回答不能,但当时并没有给出示例,其实自己也没有尝试过。今天把实验代码贴出来准备工作[代码]接下来要用select *from ta where id='1'的方式执行两次,看看是否重用了存储过程[代码]查看执行计划[代码]执行结果如下:execution_count statement_text-------------------- ------------------------------------------------------------------- 阅读全文
posted @ 2011-01-05 10:13 stswordman 阅读(418) 评论(0) 推荐(0) 编辑
Instant Initialization
摘要:Instant Initialization是NTFS文件系统的特性,可以让文件快速的初始化,显著提高SQLSERVER的数据文件扩张和RESTORE的速度。SQL Server内部无法控制Instant Initialization特性,如果想使用,需要授权SQL Server启动账户Perform Volume Maintenance Tasks的权限(本地管理员默认拥有此权限)。如果SQL Server服务处于运行状态,则需要重启后才能生效。我们可以通过trace flag 3004, 3605查看SQLSERVER是否使用了这个特性。代码如下:[代码]接下来创建一个数据库[代码]创建完 阅读全文
posted @ 2011-01-03 23:22 stswordman 阅读(1066) 评论(0) 推荐(0) 编辑
insert rows into heap/clustered table
摘要:Insert row to a heap.IAM包含一个对象所占用所有空间(extent), PFS包含了所有数据页的空间使用情况的信息。当向堆(heap)插入一条记录时, sqlserver会检测这个对象的IAM页和PFS页(加上S LATCH),判断是否和可用的数据页,如果有,则向相应的数据页插入数据,如果插入的数据量达到了PFS的阀值,会更新PFS页内的信息(需要U LATCH)如果没有可用的数据页,则会如果当前页的数量8,检测GAM页(加上S LATCH),查看时候有可用的Extent,如果没有,则检测下一个GAM...如果找到可用的extent,则更新相应的GAM,IAM,PFS( 阅读全文
posted @ 2010-12-26 00:05 stswordman 阅读(417) 评论(0) 推荐(0) 编辑
移动数据文件
摘要:将数据库脱机 alter database dbname set offline将数据库文件,日志文件移动到目标地点更改文件位置 alter database dbname modify file...恢复在线 alter database dbname set online 阅读全文
posted @ 2010-12-25 22:14 stswordman 阅读(229) 评论(0) 推荐(0) 编辑
convert datetime
摘要:[代码] 阅读全文
posted @ 2010-11-23 15:46 stswordman 阅读(300) 评论(0) 推荐(0) 编辑
无法使用index seek的写法
摘要:[代码]多条件查询时为了方便书写sql,经常会这么写,但这样的缺点是即使返回的结果集很小,也无法使用index seek。示例中的语句会使用index scan+lookup 阅读全文
posted @ 2010-11-18 22:24 stswordman 阅读(307) 评论(0) 推荐(0) 编辑
replication的一些系统表和存储过程
摘要:在分发服务器上执行Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->select*fromdbo.MSrepl_transactionsselect*fromdbo.MSrepl_commandsselect*fromdbo.MSrepl_errors遇到如下错误:尝试的命令:if @@trancount > 0 rollback tran(事务序列号: 0x0003A4E30000D9A8000500000000,命令 ID: 1)错误 阅读全文
posted @ 2010-11-17 17:34 stswordman 阅读(514) 评论(1) 推荐(0) 编辑
收缩临时库 shrink tempdb
摘要:tempdb实际占用空间40mb,文件大小70G, 原始大小2GB无法使用dbcc shrinkfile进行收缩.看到的解决方案是重启数据库DBCC FREESYSTEMCACHE ('ALL') ,然后再收缩.http://social.msdn.microsoft.com/Forums/en/sqldatabaseengine/thread/7b45f0de-2aa3-4de0-930b-d9d0fe931b3ahttp://support.microsoft.com/kb/328551/en-ushttp://blogs.msdn.com/b/sqlserverstorageengine 阅读全文
posted @ 2010-11-11 13:44 stswordman 阅读(1248) 评论(0) 推荐(0) 编辑
通过powershell读取性能计数器
摘要:读取指定文件夹里性能计数器文件的信息,取出各个counter的平均值,存储在csv[代码]下面是csv文件的效果图123 阅读全文
posted @ 2010-11-04 11:56 stswordman 阅读(1356) 评论(0) 推荐(0) 编辑
使用powershell计算性能计数器的均值
摘要:[代码]不知道哪里出了错误, Avg.Disk sec/Write这个计数器的值和打开blg文件得到的平均值严重不符...貌似不是代码的问题,将blg到处成csv格式,计算均值,也和双击打开的值不符...其它的性能技术器都还比较准确,只有Avg.Disk sec/Write不对 阅读全文
posted @ 2010-10-28 23:01 stswordman 阅读(518) 评论(0) 推荐(0) 编辑
SERIALIZABLE中的锁
摘要:在SERIALIZABLE隔离级别下,sqlserver不但会锁定选择范围内的值,还会将锁定范围以外"紧邻"的值。脚本如下[代码]接下来选取范围从1到5的值,实际上会返回两行值,1,5[代码]结合sys.dm_tran_locks和%%lockres%%,我们可以看到,1,5,7这三个键值上都有range lock,也就是说如果有其他session尝试在1~7的范围内插入值,会被阻塞。虽然-10没有锁,但尝试插入-10~0这些值的时候,也会被阻塞(如果查看sys.dm_tran_locks和%%lockres%%的话,会发现在是被阻塞到了1这个资源上)要命的还在后面,如果选择如下范围: [代码 阅读全文
posted @ 2010-10-25 22:31 stswordman 阅读(712) 评论(0) 推荐(0) 编辑
同一存储过程中各个语句的执行次数不同(sys.dm_exec_query_stats)
摘要:执行下面这个语句[代码]得到下面这个结果虽然各个语句之间为顺序执行的关系,并且没有'if else'导致的语句跳过,但发现三条语句的执行次数(execution_count)不同,创建时间和最后执行时间也不同.后来发现第2条和第3条语句所涉及的表的数据量变化很大,导致语句级的重编译,使得产生差异存储过程大致的逻辑如下:[代码] 阅读全文
posted @ 2010-10-20 13:46 stswordman 阅读(1001) 评论(0) 推荐(0) 编辑
如何找到sql语句对应的存储过程?
摘要:大量的存储过程中包含有动态sql,这样的存储过程每次遇到不同的参数都会产生一个新的执行计划,一个时间段内plan cache内包含大量的执行计划,虽然很多都对应同一个存储过程.http://social.msdn.microsoft.com/Forums/en-US/sqldatabaseengine/thread/5bd1c44a-c4ea-44e4-9e5d-f03e8719ce7c下面这个查... 阅读全文
posted @ 2010-10-18 14:43 stswordman 阅读(510) 评论(0) 推荐(0) 编辑
What does sp_reset_connection do?
摘要:http://sqldev.net/articles/sp_reset_connection/default.htmlhttp://blogs.msdn.com/b/jimmymay/archive/2009/02/02/sp-reset-connection-does-not-reset-transaction-isolation-level-unexpected-behavior-by-des... 阅读全文
posted @ 2010-08-03 15:53 stswordman 阅读(680) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6 下一页