随笔分类 -  高性能数据库

关于数据库
摘要:1.首先要有一个trace文件2. 打开trace文件3. 另存为跟踪表4.登录你要保存到的目标sqlserver服务器5. 选择要保存的数据库和表名称6. 保存完成(左下角出现进度直到显示“已完成”)7. 在数据库中找到该表(在第5步选择的数据库中找)8.查看部分结果(TextData就是查询的sql语句,Duration就是查询的时间,这里duration除以1000才是毫秒)9. 然后我们来分析TextData,如何找到相同的语句,不同的参数。我的分析,TextData主要有3种 1)带参数sql语句(以 exec sp_executesql N' 打头,以 ',N 阅读全文
posted @ 2013-11-02 14:54 IT高薪猎头 阅读(6661) 评论(0) 推荐(3) 编辑
摘要:首先声明:这是本人的答案,并非官方答案,不要盲目追捧,因为觉得这问题很具有代表性,很多人想了解,所以记下,顺便让广大园友也来给本人打打分。因为本人平时用sqlserver2000,所以大多基于sql2000回答。原帖地址http://www.cnblogs.com/fygh/archive/2011/10/18/2216166.html问题如下:1. char、varchar、nvarchar之间的区别(包括用途和空间占用);xml类型查找某个节点的数据有哪些方法,哪个效率高;使用存储 过程和使用T-SQL查询数据有啥不一样;答:char 是定长的字符类型,若长度不够自动在后面补足够的空格 ; 阅读全文
posted @ 2011-11-19 22:54 IT高薪猎头 阅读(3136) 评论(19) 推荐(5) 编辑
摘要:数据库部分: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 阅读全文
posted @ 2011-11-04 23:53 IT高薪猎头 阅读(434) 评论(0) 推荐(0) 编辑
摘要:前几天看到一篇"SQLServer DBA 三十问",很不错,比较中肯。这些题目还是需要一定操作经验的才能答得上来,其中的很多题目都可以通过books online查到,有些题目我也非常感兴趣,因为也处理过类似的问题,所以印象深刻,现在把我的答案写出来,希望可以帮到有缘人,如果有更好的方案,当然我也很乐意学学。题目:7. 在线系统,一个表有五千万记录,现在要你将其中的两千万条记录导入到另一台服务器的某个表中,导完后,需要将这两千万数据删除,你预备如何处理,优缺点是什么;我的答案: (先说明一下我的环境是sqlserver 2000,并且假设他有主键id))第1步:先做一个表 阅读全文
posted @ 2011-10-22 19:42 IT高薪猎头 阅读(2742) 评论(7) 推荐(2) 编辑
摘要:注:本文仅针对 DiscuzNT3.0, sqlserver 2000版本,其他版本请勿对号入座。你没看错标题,的确是在线人数和Regex.IsMatch()引发的hang。事情是这样的,就在今天我们的论坛出现的挂起问题,当时刚好赶上了抓dump文件。于是就有了今天这篇文章。我们先用windbg看看论坛当时在干什么吧。1. 打开文件,运行 .load sos, 因为是hang,所以当然是要运行 !syncblk , 下面是运行结果:0:000> .load sos0:000> !syncblkIndex SyncBlock MonitorHeld Recursion Owning 阅读全文
posted @ 2011-06-26 21:11 IT高薪猎头 阅读(1932) 评论(9) 推荐(4) 编辑
摘要:注:本文仅针对 DiscuzNT3.0, sqlserver 2000版本,其他版本请勿对号入座。在本系列的第(4)篇中,我们提到过windbg,上次没能华丽登场的他,今天终于要一展才华了。解决问题是windbg与生俱来的功夫,他今天将怎么样来解决我们的问题,静听分解。经过第(4)篇的优化之后,我们的论坛迎来了每日100万pv的突破性指标,相对于我们其他项目来说,这个量虽然不值一提,但毕竟这个项目是一切从0开始,能达到这个量也算是一个小突破,值得小庆祝一下。不过问题也随之而来了。我们的iis服务器的cpu占用率从之前的约30%,上升到了80%,按照我们的经验,这是不合理的,80%已经是一个危险 阅读全文
posted @ 2011-06-18 18:41 IT高薪猎头 阅读(1978) 评论(14) 推荐(2) 编辑
摘要:注:本文仅针对 DiscuzNT3.0, sqlserver 2000版本,其他版本请勿对号入座.经过前面的几次优化之后我们的论坛终于稳定了一段时间,大概半年之后我们的论坛迎来了每天大约50万的pv,这时候论坛有开始出现了问题。症状是这样的:管理员发现,网站经常会打不开, 但是也不报错,好像永远一直在打开,直到浏览器认为它打不开了,这样的症状每天会出现几次,而且越来越频繁。每次发生这样的情况过后一般iis的事件查看器都会asp.net有死锁提示,于是我知道,我终于遇上传说中的死锁了,每次有死锁迹象的时候我都跟踪了一下sqlserver,发现数据库是正常的,那看来就是asp.net这边的问题了。 阅读全文
posted @ 2011-06-12 22:01 IT高薪猎头 阅读(1980) 评论(12) 推荐(3) 编辑
摘要:注:本文仅针对 DiscuzNT3.0, sqlserver 2000版本,其他版本请勿对号入座.在前两篇已经对看帖,发帖回帖做了优化,做过优化之后论坛访问起来果然顺畅多了。随着论坛帖子数的不断增加,论坛出现了一个新的问题,管理员在删帖的时候经常报错,超时,删除失败。由于有了之前的两次经验,现在找起问题来比之前要快多了,现在先找到删帖的存储过程dnt_deletetopicbytidlist3,脚本如下:ALTERPROCEDURE[dnt_deletetopicbytidlist3]@tidlistASVARCHAR(2000),@chanagepostsASBITASDECLARE@pos 阅读全文
posted @ 2011-06-06 15:18 IT高薪猎头 阅读(1023) 评论(14) 推荐(1) 编辑
摘要:注:本文仅针对 DiscuzNT3.0, sqlserver 2000版本,其他版本请勿对号入座.上次对DiscuzNT的看帖做了性能优化,这次主要针对发帖和回帖做下优化,本文还是以优化数据库为主,C#的优化以后有时间另外记录。看帖,发帖,回帖 都是一个论坛的基本操作,如果性能不好导致这些操作变慢,论坛的效果可想而知了,那我们来看看DiscuzNT发帖和回帖都有些什么操作,性能如何。做事情总要有个先后,我给这次的优化工作也做了个步骤:(有图有真相)1)看代码,查到发帖回帖调用的存储过程;发帖调用了两个过程,代码如下:publicintCreateTopic(TopicInfotopicInfo 阅读全文
posted @ 2011-05-15 22:56 IT高薪猎头 阅读(1353) 评论(6) 推荐(1) 编辑
摘要:很多人都遇到过这样的情况,当网站达到一定的访问量,数据库就会成为瓶颈,进而引起阻塞。有人认为这可能就是硬件的极限了,于是想办法增加硬件设备。而我本人认为问题的元凶可能是性能不高的sql脚本,引起了阻塞。如果你和我有相同的看法,那我们就一起想办法找出问题的源头。案例1.某一天我被告知,我们的书城网站不能访问了,我马上查看,发现书城的有两台iis服务器均显示service unavailable,我初步断定是sqlserver数据库发生了阻塞,因为同一套程序使两台iis服务器同时当机的可能性不大。要知道是否发生了阻塞,当然要看master库的sysprocess表,看看是否有什么进程堵住了别的进程 阅读全文
posted @ 2011-05-02 21:43 IT高薪猎头 阅读(1377) 评论(4) 推荐(4) 编辑
摘要:注:本文仅针对 DiscuzNT3.0, sqlserver 2000版本,其他版本请勿对号入座.去年用DiscuzNT3.0做过二次开发,做过一些性能优化,但是时间关系一直没机会写下来;趁着5.1长假,来写篇回忆性的随笔吧。之前看过园子里代震军同学的博客,知道了老代同学是DiscuzNT团队的一员,从他的博文学了不少东西 ,我这里写的博文是针对一些问题提出自己的看发和解决方案,针对问题并无针对任何人之意,秉着技术交流的原则。DiscuzNT给我的印象是1)功能很强大,所有你能想到的基本都已经有了;2)性能有待优化,数据量较大的情况会产生性能瓶颈(这也正是写此文的目的)。之前发的博文由于缺乏经 阅读全文
posted @ 2011-05-02 11:23 IT高薪猎头 阅读(2034) 评论(10) 推荐(2) 编辑