① sql cpu占用率高怎么解决
1、占用率高,多数是因为SQL语句的问题,可以使用以下语句进行排查
USEmaster
GO
--若要指定数据库就修改USE后面的部分
SELECT*FROMsys.[sysprocesses]WHERE[spid]>50--ANDDB_NAME([dbid])='gposdb'
SELECTCOUNT(*)FROM[sys].[dm_exec_sessions]WHERE[session_id]>50
2、检查程序是否存在高频率的循环
3、检查SQL是否有嵌套触发器,这个是最难检查,也是最难发现的
4、CPU本来就很次,需要更换更好的CPU
② sql数据库服务器,内存占用过大怎么办
SqlServer系统内存管理在没有配置内存最大值,很多时候我们会发现运行SqlServer的系统内存往往居高不下。这是由于他对于内存使用的策略是有多少闲置的内存就占用多少,直到内存使用虑达到系统峰值时(预留内存根据系统默认预留使用为准,至少4M),才会清除一些缓存释放少量的内存为新的缓存腾出空间。
这些内存一般都是SqlServer运行时候用作缓存的,例如你运行一个select语句,执行个存储过程,调用函数;
1.数据缓存:执行个查询语句,SqlServer会将相关的数据页(SqlServer操作的数据都是以页为单位的)加载到内存中来,下一次如果再次请求此页的数据的时候,就无需读取磁盘了,大大提高了速度。
2.执行命令缓存:在执行存储过程,自定函数时,SqlServer需要先二进制编译再运行,编译后的结果也会缓存起来,再次调用时就无需再次编译。
在我们执行完相应的查询语句,或存储过程,如果我们不在需要这些缓存,我可以将它清除,DBCC管理命令缓存清除如下:
--清除存储过程缓存
DBCCFREEPROCCACHE
--注:方便记住关键字FREEPROCCACHE可以拆解成FREE(割舍,清除)PROC(存储过程关键字简写),CACHE(缓存)
--清除会话缓存
DBCCFREESESSIONCACHE
--注:FREE(割舍,清除)SESSION(会话)CACHE(缓存)
--清除系统缓存
DBCCFREESYSTEMCACHE('All')
--注:FREESYSTEMCACHE
--清除所有缓存
DBCCDROPCLEANBUFFERS
--注:DROPCLEANBUFFERS
③ sql server 在占用服务器内存居高不下怎么办
可以进SQL Server Management Studio后自个设定,参看下图:
********相关知识********
一、如果是普通的工作用台式电脑:
1、安装了个SQL Server做测试、开发、单机数据支持。SQL Server相对别的软件来说,对系统占用大是正常的。
2、解决方法是去控制面版中,去“管理工具”-》“服务”中,将所有的SQL Server服务设为手动启动,并停用,要用它们的时候再去手动启动它们。
3、也可以用SQL Server的管理工具(SQL Server Management Studio)设定内存使用量到适合的大小。
二、如果是生产用服务器:
1、SQL Server上如果有大型的生产用数据库,对内存的占用大那是非常正常的。(比如我提供的图片中,我实际生产用的服务器的内存的硬件配置为64G,给SQL Server用48个G。这算不算巨大呢?其实很正常的。)
2、服务器,它本来的功能就是以最快的速度,最高的效率去为前台应用提供后台支持,它安装内存的目的就是为了让SQL Server等后台数据支持系统使用的。不用,安装那么多的内存干嘛呢?这东西又不能用来显摆。
3、如果SQL Server的内存占用过大,已影响到了别的应用的正常运行,那么,需要进行调整,打开 SQL Server Management Studio,联接上SQL Server,对 根节点 点右键,点“属性”,点“内存”,去设定它的最大的内存占用。注意,内存设得过小会影响SQL Server的工作速度。当然,设得过大,超过了SQL Server的需求,那也提升不了效率,会浪费硬件的资源。
三、异常的内存占用巨大:
如果是生产用的SQL Server,对内存占用出现异常的巨量,那需要对SQL Server及对生产系统非常了解的工程师对运行情况进行监控、分析,找出原因,针对性的修正代码。
④ 为什么SQLServer会占用这么大的内存
简单回答:
因为它的设计是为了提供最高效快速的数据服务。它会尽可能利用(占用)电脑的内存、CPU资源来做数据服务。
1、SQL Server是数据库系统,它的设计目标就是以当前设备硬件的最大的资源来为其它或自已提供最高效快速的数据查询、存储、运算支持。
2、所以,它在运行过程中,默认情况下,会占用较大的内存,会用较高的CPU性能,因为它可不管你的想法是什么,它的想法就是时刻准备着,查询、存储、运算数据。它会将它认为最常用的数据调入内存中,以加快查询速度,会不停的想法儿优化算法,优化物理存储位置,以做到尽可能的最快的速度提供操作者想要的数据。
3、SQL Server对内存的占用是可以调定与调整的,在起动 “企业管理器”或“SQL Server Management Studio”在里面点击树状结构的根目录,点属性,到里面相关的参数处可设定数据库的内存占用。提示的是,过小的内存占用会引发SQL Server的运行故障。
4、个人电脑,安装它用于调试、编程学习、或某些特定软件数据支持,不用时,可以去控制面版的“服务”中,关闭“SQLServer”相关服务,即可让它不再占用系统资源,但这并不是太方便,而且只适用于对电脑比较熟悉的朋友。
⑤ 为什么读取SQL的数据库会占用内存那么大
因为SQL使用了缓存技术,所以在使用一段时间以后内存占用会越来越多。
打开企业管理器,在你的SQL服务器上点右键,查看属性。
在“内存”项中把内存的“最大值”改小一点,不要超过你的内存的一半,或者选中“使用固定的内存大小”,然后将值设定为你内存的一半也可以。
⑥ 如何解决SQLServer占内存过多的问题
我们需要准备的材料分别是:电脑。
1、在我的电脑中,搜索访问sql占用内存,在右侧的管理服务器中选择重新启动,重启一下IIS。
⑦ SQL Server占用内存过高,什么原因导致的,用什么方法可以解决
SQL Server运行越久,占用内存会越来越大。因为sql server本身内存回收机制做的不好,这是微软系列的服务器&数据库问题的通病。
解决SQL Server占用内存过高的方法:
1.定期重启SQL Server 2008 R2数据库服务即可。
拓展资料
SQL Server 是Microsoft 公司推出的关系型数据库管理系统。具有使用方便可伸缩性好与相关软件集成程度高等优点,可跨越从运行Microsoft Windows 98 的膝上型电脑到运行Microsoft Windows 2012 的大型多处理器的服务器等多种平台使用。
Microsoft SQL Server 是一个全面的数据库平台,使用集成的商业智能 (BI)工具提供了企业级的数据管理。Microsoft SQL Server 数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使您可以构建和管理用于业务的高可用和高性能的数据应用程序。
网络Microsoft SQL Server
⑧ 我的电脑不知怎么了,sql server服务占用了大量内存,求助处理.
使用两个服务器内存选项 min server memory 和 max server memory 重新配置缓冲池中 Microsoft® SQL Server™ 实例所使用的内存量(以 MB 为单位)。
默认情况下,SQL Server 能够可用系统资源动态改变它的内存需求。min server memory 的默认设置为 0,max server memory 的默认设置为 2147483647。可以为 max server memory 指定的最小内存量为 4 MB。
当 SQL Server 动态使用内存时,它要求系统定期地检测可用的物理内存数量。SQL Server 根据服务器活动增大或收缩高速缓冲存储器,以使可用物理内存保持在 4 MB 到 10 MB 之间。这就避免了 Microsoft Windows NT® 4.0 或 Windows® 2000 换页。如果有较少可用内存,则 SQL Server 将内存释放给 Windows NT 或 Windows 2000,后者通常继续使用可用列表。如果有更多可用内存,则 SQL Server 将内存再提交到高速缓冲存储器。SQL Server 仅在其工作负荷需要更多的内存时才增加高速缓冲存储器的内存;处于休眠状态的服务器不增大其高速缓冲存储器。
允许 SQL Server 动态使用内存是推荐使用的配置;然而,可以手工设置内存选项并且可以禁止 SQL Server 动态使用内存的能力。在设置 SQL Server 使用的内存量之前,应确定适当的内存设置,方法是从全部物理内存中减去 Windows NT 4.0 或 Windows 2000 以及 SQL Server 的任何其它实例所需要的内存(以及其它系统使用的内存,如果该计算机不为 SQL Server 专用)。这就是可以分配给 SQL Server 使用的最大内存量。
说明 如果您已经安装并且运行了全文检索支持功能(Microsoft 检索服务,亦即 MSSearch),那么您必须手工设置 max server memory 选项,为 MSSearch 服务运行预留足够的内存。max server memory 设置必须与 Windows NT 4.0 虚拟内存大小一起进行调整,以便使得保留给全文检索的虚拟内存是物理内存的 1.5 倍(不包括计算机中其它服务所需的虚拟内存)。应这样配置 SQL Server max server memory 选项,使得留有足够的虚拟内存满足全文检索内存需求。全部虚拟内存 -(SQL Server 最大虚拟内存 + 其它服务需要的虚拟内存)>= 1.5 倍物理内存。
手工设置内存选项
手工设置 SQL Server 内存选项有两种主要方法:
第一种方法,设置 min server memory 和 max server memory 为同一数值。该数值与分配给 SQL Server 的固定内存量相对应。
第二种方法,把 min server memory 和 max server memory 数量设置到一个范围段内。这种方法在系统或数据库管理员希望配置 SQL Server 实例,使其适应在同一台计算机上运行的其它应用程序的内存需求时很有用。
min server memory 保证了 SQL Server 实例使用的最小内存量。SQL Server 启动时不立即分配 min server memory 中所指定的内存量。但是,当内存使用由于客户端负荷而达到该值后,SQL Server 将无法从已分配的缓冲池中释放内存,除非减少 min server memory 值。
说明 不保证 SQL Server 分配 min server memory 中所指定的内存量。如果服务器上的负荷从不需要分配 min server memory 中所指定的内存量,则 SQL Server 将以较少的内存运行。
max server memory 则可防止 SQL Server 使用多于指定数量的内存,这样剩余的可用内存可以快速运行其它应用程序。SQL Server 启动时不立即分配 max server memory 中所指定的内存。内存使用随 SQL Server 的需要而增长,直到达到 max server memory 中所指定的值。SQL Server 无法超过该内存使用值,除非增加 max server memory 值。
重要 服务器启动时,在地址窗口扩展 (AWE) 内存模式下运行的 SQL Server 实例确实分配 max server memory 中所指定的全部内存量。有关 AWE 内存的更多信息,请参见管理 AWE 内存。
在应用程序启动和 SQL Server 释放内存之间将有一个较短的时间延迟,使用 max server memory 可以避免该延迟,从而可以提高其它应用程序的性能。仅当与 SQL Server 共享同一台服务器的新应用程序在启动时显示有问题时,才设置 min server memory。最好让 SQL Server 使用全部可用的内存。
如果手工设置内存选项,应确保适当地设置用于复制的服务器。如果服务器是一个远程分发者或者是一个出版者/分发者的组合,则必须为它分配至少 16 MB 的内存。
理想情况下,在不引起系统交换页面到磁盘的前提下,应尽可能多地分配内存给 SQL Server。该值因系统不同而有很大差别。例如,在一个 32 MB 系统中,分配 16 MB 给 SQL Server可能是合适的;在一个 64 MB 系统中,则可能适合分配 48 MB。
说明 当增大 SQL Server 内存数量时,应确保有足够的磁盘空间来容纳操作系统虚拟内存的支持文件(Pagefile.sys)。有关虚拟内存支持文件的更多信息,请参见 Windows NT 4.0 和 Windows 2000 文档。
指定的内存数量必需满足 SQL Server 的静态内存(核心开销、打开的对象、锁等等)以及数据缓存(亦称高速缓存)的需要。
如有必要,在系统监视器(在 Windows NT 4.0 中为性能监视器)中使用统计功能帮助调整内存值。应该只有在您添加或减少内存,或者改变系统使用方式时改变这些值。
虚拟内存管理器
Windows NT 4.0 和 Windows 2000 随时提供一个 4 GB 的虚拟地址空间,其中较低的 2 GB 地址空间对于每个进程是专用的,并可由应用程序使用。较高的 2 GB 地址由系统保留使用。Windows NT Server 企业版为每个 Microsoft Win32® 应用程序提供 4 GB 的虚拟地址空间,其中较低的 3 GB 地址空间是每个进程专用的,并可由应用程序使用。较高的 1 GB 地址由系统保留使用。
4-GB 的地址空间由 Windows NT V虚拟内存管理器(VMM)映射到可用的物理内存空间。取决于硬件平台的支持,可用的物理内存可以高达 4 GB。
Win32 应用程序(如 SQL Server)只能识别虚拟(或称逻辑)地址,而不是物理地址。在给定的某一时刻一个应用程序使用多少物理内存由可用的物理内存和 VMM所决定。应用程序不能直接控制物理内存。
象 Windows NT 4.0 或 Windows 2000 这样的虚拟地址系统允许过度提交物理内存,这使虚拟内存和物理内存的比率大于 1:1。因此,较大的程序可以运行在具有不同物理内存配置的计算机上。然而应用比组合平均工作集大得多的虚拟内存可能导致较差的性能。
SQL Server 可以将内存锁定为工作集。因为内存被锁定了,当运行其它应用程序时可能出现内存不足的错误。如果出现内存不足的错误,则可能是分配给 SQL Server 的内存太多。set working set size选项(通过 sp_configure 或 SQL Server 企业管理器设置) 可以使锁定内存为工作集功能失效。默认情况下,set working set size 选项处于禁用状态。
手工配置给 SQL Server 多于物理内存数量的虚拟内存会导致性能较低。而且,必须考虑 Windows NT 4.0 或 Windows 2000 操作系统的内存需求(大约 12 MB,因应用程序的开销而略有不同)。当 SQL Server 的配置参数上调时,系统的开销可能也会增长,因为 Windows NT 4.0 或 Windows 2000 需要更多的常驻内存来支持附加的线程、页表等。允许 SQL Server to 动态使用内存可以避免内存相关的性能问题。
min server memory 和 max server memory 是高级选项。如果要使用 sp_configure 系统存储过程改变该选项,必须把 show advanced options 设置为 1,该选项立即生效(无需停止并重新启动服务器)。