莫相离 发表于 2015-1-16 22:21:16

MSSQL网页设计办理MSSQL占用过量内存的复杂办法

上面我们说了DML的闪回方案。但对于DDL却无能为力,对于大多数的DDL,即使是rowbase格式,二进制日志binlog中仍只记录语句本身。对于删表操作,只记录一个语句droptablet。仅凭这句话,无法还原表的数据。常常瞥见有人问,MSSQL占用了太多的内存,并且还不休的增加;大概说已设置了利用内存,但是它没有效到那末多,这是怎样一回事儿呢?
  
  起首,我们来看看MSSQL是如何利用内存的。  最年夜的开支通常为用于数据缓存,假如内存充足,它会把用过的数据和以为你会用到的数据一切扔到内存中,直到内存不敷的时分,才把射中率低的数据给清失落。以是一样平常我们在看statisticsio的时分,看到的physicsread都是0。
  其次就是查询的开支,一样平常地说,hashjoin是会带来对照年夜的内存开支的,而mergejoin和nestedloop的开支对照小,另有排序和两头表、游标也是会有对照年夜的开支的。
  以是用于联系关系和排序的列上一样平常必要有索引。
  再其次就是对实行企图、体系数据的存储,这些都是对照小的。
  我们先来看数据缓存对功能的影响,假如体系中没有别的使用程序来争取内存,数据缓存通常为越多越好,乃至有些时分我们会强行把一些数据pin在高速缓存中。可是假如有别的使用程序,固然在必要的时分MSSQL会开释内存,可是线程切换、IO守候这些事情也是必要工夫的,以是就会形成功能的下降。如许我们就必需设置MSSQL的最年夜内存利用。能够在SQLServer属性(内存选项卡)中找到设置最年夜利用内存的中央,大概也能够利用sp_configure来完成。假如没有别的使用程序,那末就不要限定MSSQL对内存的利用。
  然厥后看查询的开支,这个开支明显是越低越好,由于我们不克不及从中失掉优点,相反,利用了越多的内存多数意味着查询速率的下降。以是我们一样平常要制止两头表和游标的利用,在常常作联系关系和排序的列上创建索引。
使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性

仓酷云 发表于 2015-1-19 09:15:33

也可谈一下你是怎么优化存储过程的?

简单生活 发表于 2015-1-24 15:18:46

可以动态传入参数,省却了动态SQL的拼写。

精灵巫婆 发表于 2015-2-1 18:57:15

无法深入到数据库系统层面去了解和探究

灵魂腐蚀 发表于 2015-2-7 14:37:53

微软对CLR作了大篇幅的宣传,这是因为数据库产品终于融入.net体系中。最开始我们也是狂喜,感觉对象数据库的一些概念可以实现了。

因胸联盟 发表于 2015-2-22 10:08:47

同样会为索引视图等应用带来麻烦。看看行级和事务级的快照数据放在tempdb中,就能感觉到目前架构的尴尬。

变相怪杰 发表于 2015-3-7 00:11:10

多加的系统视图和实时系统信息这些东西对DBA挑优非常有帮助,但是感觉粒度还是不太细。

海妖 发表于 2015-3-13 23:10:43

你可以简单地认为适合的就是好,不适合就是不好。

莫相离 发表于 2015-3-20 22:46:16

每天坚持做不一样的是,认真做笔录,定时复习。一个月你就可以有一定的收获。当然如果你想在sql方面有一定的造诣,你少不了需要看很多很多的书籍了。
页: [1]
查看完整版本: MSSQL网页设计办理MSSQL占用过量内存的复杂办法