摘要:
11. 死锁如何跟踪;阻塞如何跟踪和查找;发现有问题的语句后,如何进行处理;用Profile做跟踪时,一般我们需要跟踪哪些事件;答:dbcc traceon(1204) 可以开打跟踪死锁的标记,sqlserver2005新增了1222跟踪标志,就是格式更详细,死锁的信息会记录在errlog文件里,顺便说下errlog一共有errlog,errlog1~errlog6共7个文件,关于这些可以看看books online,如果觉得books online太乏味,可以看看徐海蔚的《Microsoft SQLServer企业级平台管理实践》;相对来说,阻塞的问题比死锁要严重,死锁只是牺牲部分进程,阻塞 阅读全文
摘要:
首先声明:这是本人的答案,并非官方答案,不要盲目追捧,因为觉得这问题很具有代表性,很多人想了解,所以记下,顺便让广大园友也来给本人打打分。因为本人平时用sqlserver2000,所以大多基于sql2000回答。原帖地址http://www.cnblogs.com/fygh/archive/2011/10/18/2216166.html问题如下:1. char、varchar、nvarchar之间的区别(包括用途和空间占用);xml类型查找某个节点的数据有哪些方法,哪个效率高;使用存储 过程和使用T-SQL查询数据有啥不一样;答:char 是定长的字符类型,若长度不够自动在后面补足够的空格 ; 阅读全文
摘要:
微软推荐为每一个表建立一个聚集索引,但是由于sqlserver简单易用,而且很多人并不了解聚集索引,非聚集索引这些东西,所以如果sqlserver不在主键上建立聚集索引的话,可能会导致大部分的表都是堆结构,而堆结构是乱序存放的,检索很不方便,空间也不好管理,所以微软就来了个强硬的,如果不在建表的同事创建聚集索引,sqlserver会自动在主键上面建聚集索引。 其实在网上的大部分资料都不推荐聚集索引建立在主键上,觉得这是浪费,理由是聚集索引查询比较快,应该建立在经常查询和具有同一属性值的列上(比如分类),这个好像说的过去。 不过就本人目前处理过的数据(亿级),还没有充分的证据表明聚集建立... 阅读全文
摘要:
最近突然想到这个问题,记录下来巩固一下自己的知识。 表,临时表,表变量,相信很多人都用过,truncate table @表变量 会报错,相信很多人也遇到过,不过真正去思考为什么的人可能少之又少,毕竟大多数情况下,我们大部分的人只需要会用,而不需要去知道为什么,更何况国内的项目总是那么紧张,本来还有的那点求知欲,可能也会被任务,绩效考核冲跑了。 那到底为什么表变量不能truncate呢,这就需要了解truncate这个命令的本质,truncate table 是通过释放存储表数据所用的数据页来删除数据。而表变量的数据是保存在内存中的,而非磁盘中,那么就truncate table 试图... 阅读全文
摘要:
数据库部分:1)dnt_getattachmentlistbypid (效果明显)2)dnt_getindexforumlist (不太明显)3)dnt_getpostlist1 (不太明显)4)dnt_deleteonlineusers (效果明显)5)dnt_updateuseronlinestates (效果明显)6)dnt_gettoptopiclist(效果明显)文件部分:修改 BasePage .cs更新在线用户信息的时候添加这个条件,if (pagename.IndexOf("avatar.aspx", StringComparison.OrdinalIgno 阅读全文
摘要:
数据库问题:1.发帖,回帖,用不到索引2.看帖,看附件,用不到索引3.删贴,删回复,用不到索引4.最新帖子,用不到索引c#问题:1. 喜欢用for循环,如 读取某个论坛数据时,步骤如下: 1)先从数据库读取所有论坛信息 2)然后for循环,找到合适的论坛id 3)然后for循环,处理版主信息 里面有很多的for循环嵌套2011-06-18 访问失败,报异常 ,System.OutOfMemoryExceptionStack trace: at System.Collections.Generic.List`1.set_Capacity(Int32 value) at System.Colle. 阅读全文
摘要:
SQL Server DBA 三十问http://www.cnblogs.com/fygh/archive/2011/10/18/2216166.html第19题:Replication发布端的表能truncate吗,为什么;答案:不能truncate;1)发布端的数据是如何同步到订阅端的,当然是通过日志,每当数据有更新(insert,update,delete),都会记录日志,sqlserver通过日志把更新的数据同步到订阅端;2)为什么不能truncate,这需要从truncate删除数据的本质说起,truncate是通过释放table占用的空间来达到删除数据的目的,并不会记录每条数据的变 阅读全文
摘要:
前几天看到一篇"SQLServer DBA 三十问",很不错,比较中肯。这些题目还是需要一定操作经验的才能答得上来,其中的很多题目都可以通过books online查到,有些题目我也非常感兴趣,因为也处理过类似的问题,所以印象深刻,现在把我的答案写出来,希望可以帮到有缘人,如果有更好的方案,当然我也很乐意学学。题目:7. 在线系统,一个表有五千万记录,现在要你将其中的两千万条记录导入到另一台服务器的某个表中,导完后,需要将这两千万数据删除,你预备如何处理,优缺点是什么;我的答案: (先说明一下我的环境是sqlserver 2000,并且假设他有主键id))第1步:先做一个表 阅读全文
摘要:
注:本文仅针对 DiscuzNT3.0, sqlserver 2000版本,其他版本请勿对号入座。你没看错标题,的确是在线人数和Regex.IsMatch()引发的hang。事情是这样的,就在今天我们的论坛出现的挂起问题,当时刚好赶上了抓dump文件。于是就有了今天这篇文章。我们先用windbg看看论坛当时在干什么吧。1. 打开文件,运行 .load sos, 因为是hang,所以当然是要运行 !syncblk , 下面是运行结果:0:000> .load sos0:000> !syncblkIndex SyncBlock MonitorHeld Recursion Owning 阅读全文
摘要:
注:本文仅针对 DiscuzNT3.0, sqlserver 2000版本,其他版本请勿对号入座。在本系列的第(4)篇中,我们提到过windbg,上次没能华丽登场的他,今天终于要一展才华了。解决问题是windbg与生俱来的功夫,他今天将怎么样来解决我们的问题,静听分解。经过第(4)篇的优化之后,我们的论坛迎来了每日100万pv的突破性指标,相对于我们其他项目来说,这个量虽然不值一提,但毕竟这个项目是一切从0开始,能达到这个量也算是一个小突破,值得小庆祝一下。不过问题也随之而来了。我们的iis服务器的cpu占用率从之前的约30%,上升到了80%,按照我们的经验,这是不合理的,80%已经是一个危险 阅读全文