当前位置:首页 » 编程语言 » sql内存占用过小
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql内存占用过小

发布时间: 2022-09-05 07:36:49

Ⅰ 服务器内存很大,sql进程占用内存很小,查询速度很慢怎么解决

是不是内存分配不合理。如果是ORACLE 的话,内存有数据缓冲区,SGA,PGA等等,具体可以上网查一查怎么设置。另外查询速度很慢的原因非常多,从物理文件的I/O,内存管理,CPU使用,到SQL文都可能出问题。你只文这么一句话不可能帮你解决。

Ⅱ sql server 内存使用不高

  • 登陆SQL Server。

    通过Microsoft SQL Server Management Studio连接登陆SQL Server服务器。

  • 登陆成功后,选中服务器右键属性查看服务器属性,选中内存页面,可以看到最大内存大小设置是3000M。

  • 6

    总结操作步骤:

    1. 登陆SQL Server。

    2. 登陆成功后,选中服务器右键属性查看服务器属性,选中内存页面,可以看到最大内存大小设置是3000M。

    3. 通过资源管理器可以看到 SQL server 进程使用的内存差不多是3000M。

    4. 通过服务器属性中的内存页面,把最大内存设为1024M点确认后,等一会,再通过资源管理器查看SQL server进程使用的内存会降1024M左右。

    5. 通过服务器属性页面,把最大服务器内存设为合理的大小30000M。

    谢谢阅读,希望带给你帮助。

Ⅲ 如何手动设置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 指定的内存量。不过,除非降低 min server memory 的值,否则当内存使用量由于客户端负荷而达到该值后,SQL Server 不能从已分配的缓冲池中释放内存。
max server memory 避免了 SQL Server 缓冲池使用的内存量多于指定的内存量,这样剩余的可用内存可以用来快速启动其他应用程序。SQL Server 不会在启动时立即分配 max server memory 指定的内存量。内存使用量会随着 SQL Server 的需要增加,直到达到 max server memory 指定的值。除非提高 max server memory 的值,否则 SQL Server 不能超过此内存使用量。

Ⅳ sql 内存溢出

引起内存不足、内存溢出的 原因 有很多种,常见的有以下几种:
1.内存中加载的数据量过于庞大,如一次从数据库取出过多数据;
2.集合类中有对对象的引用,使用完后未清空,使得JVM不能回收;
3.代码中存在死循环或循环产生过多重复的对象实体;
4.使用的第三方软件中的BUG;
5.启动参数内存值设定的过小;
内存溢出的解决方案 :
第一步 ,修改JVM启动参数,直接增加内存。(-Xms,-Xmx参数一定不要忘记加。)
第二步 ,检查错误日志,查看“OutOfMemory”错误前是否有其它异常或错误。
第三步 ,对代码进行走查和分析,找出可能发生内存溢出的位置。
重点排查以下几点:
1.检查对数据库查询中,是否有一次获得全部数据的查询。一般来说,如果一次取十万条记录到内存,就可能引起内存溢出。这个问题比较隐蔽,在上线前,数据库中数据较少,不容易出问题,上线后,数据库中数据多了,一次查询就有可能引起内存溢出。因此对于数据库查询尽量采用分页的方式查询。
2.检查代码中是否有死循环或递归调用。
3.检查是否有大循环重复产生新对象实体。
4.检查对数据库查询中,是否有一次获得全部数据的查询。一般来说,如果一次取十万条记录到内存,就可能引起内存溢出。这个问题比较隐蔽,在上线前,数据库中数据较少,不容易出问题,上线后,数据库中数据多了,一次查询就有可能引起内存溢出。因此对于数据库查询尽量采用分页的方式查询。
5.检查List、MAP等集合对象是否有使用完后,未清除的问题。List、MAP等集合对象会始终存有对对象的引用,使得这些对象不能被GC回收。
第四步 ,使用内存查看工具动态查看内存使用情况。

Ⅳ 如何解决SQL Server数据库占用内存的问题 详细�0�3

经常看见有人问,MSSQL 占用了太多的内存,而且还不断的增长;或者说已经
最大的开销一般是用于数据缓存,如果内存足够,它会把用过的数据和觉得
你会用到的数据统统扔到内存中,直到内存不足的时候,才把命中率低的数据给
清掉。所以一般我们在看statistics io 的时候,看到的physics read 都是0。
其次就是查询的开销,一般地说,hash join 是会带来比较大的内存开销的,
而merge join 和nested loop 的开销比较小,还有排序和中间表、游标也是会
有比较大的开销的。
所以用于关联和排序的列上一般需要有索引。
再其次就是对执行计划、系统数据的存储,这些都是比较小的。
我们先来看数据缓存对性能的影响,如果系统中没有其它应用程序来争夺内
存,数据缓存一般是越多越好,甚至有些时候我们会强行把一些数据pin 在高速
缓存中。但是如果有其它应用程序,虽然在需要的时候MSSQL 会释放内存,但是
线程切换、IO 等待这些工作也是需要时间的,所以就会造成性能的降低。这样
我们就必须设置MSSQL 的最大内存使用。可以在SQL Server 属性(内存选项卡)
中找到配置最大使用内存的地方,或者也可以使用sp_configure 来完成。如果
没有其它应用程序,那么就不要限制MSSQL 对内存的使用。
然后来看查询的开销,这个开销显然是越低越好,因为我们不能从中得到好
处,相反,使用了越多的内存多半意味着查询速度的降低。所以我们一般要避免
中间表和游标的使用,在经常作关联和排序的列上建立索引。

Ⅵ 为什么SQL Server使用很少的内存

默认情况下,SQLServer会依据可获得的系统资源动态改变它的内存需求。如果SQLServer需要更多的内存,它会要求操作系统确定是否有空闲的物理内存可用,并使用可用的内存。若SQLServer不再需要当前分配给它的内存,它就将内存释放给操作系统。当SQLServer动态使用内存时,它要求系统定期地检测可用的物理内存数量。SQLServer根据服务器活动增大或收缩高速缓冲存储器,以使可用物理内存保持在4MB到10MB之间。这就避免了系统进行换页操作。[也就是说,这种情况下SQLSERVER本身不会使物理可用内存小于4M,如果比较长的时间内都小于4M的话,则要看一下是不是该服务器上其它应用程序有问题]第二种情况:限制使用内存使用setworkingsetsize为sqlserver保留等于服务器内存设置的物理内存空间。即使是sqlserver进程此时是空闲的,系统也不会将SQLServer页交换出去。使用minservermemory保证sqlserver使用的最小内存。SQLServer启动时不立即分配minservermemory中所指定的内存量。但是,当内存使用由于客户端负荷而达到该值后,SQLServer将无法从已分配的缓冲池中释放内存。使用maxservermemory则防止SQLServer使用多于指定数量的内存,这样剩余的可用内存可以快速运行其它应用程序。SQLServer启动时不立即分配maxservermemory中所指定的内存。内存使用随SQLServer的需要而增长,直到达到maxservermemory中所指定的值。SQLServer无法超过该内存使用值,除非增加maxservermemory值。第一种情况比较适用于服务器专做sqlserver服务器的情况,第二种情况适用于为在同一台计算机上运行的其它应用程序保留一定的内存以便于快速响应。(另:如果想动态分配sqlserver的内存,则不要设置setworkingsetsize选项,使用默认值即可。至于这些参数如何设置参见另外的文档)监视SQLServer所使用的内存和计数器有助于确定:是否由于缺少可用物理内存存储高速缓存中经常访问的数据而导致瓶颈存在。如果是这样,SQLServer必须从磁盘检索数据。是否可通过添加更多内存或使更多内存可用于数据高速缓存或SQLServer内部结构来提高查询性能。SQLServer需要从磁盘读取数据的频率。与其它操作相比,例如内存访问,物理I/O会耗费大量时间。尽可能减少物理I/O可以提高查询性能。对sqlserver服务器内存的监视:Memory:AvailableBytes计数器表示当前进程可使用的物理内存字节数。如果小于4M或更小,说明计算机上总的内存可能不足,或某个程序没有释放内存●Memory:PageFaults/sec每秒软性页面失效的数目(包括有些可以直接在内存中满足而有些需要从硬盘读取)较page/sec只表明数据不能在内存指定工作集中立即使用。如果该值偶尔走高,表明当时有线程竞争内存。如果持续很高,则内存可能是瓶颈。Memory:Pages/sec计数器表示由于缺页处理而从磁盘取回的页数,或由于缺页处理而写入磁盘以释放工作集空间的页数。●PageReads/sec每秒发出的物理数据库页读取数。这一统计信息显示的是在所有数据库间的物理页读取总数。由于物理I/O的开销大,可以通过使用更大的数据高速缓存、智能索引、更高效的查询或者改变数据库设计等方法,使开销减到最小。●PageWrites/sec所发出的物理数据库页写入的数目。若查看原帖>>

Ⅶ sql吃内存的问题,不管你的内存有多大,sql总是能占用你90+%的内存,增加了内存,他还是占用90+%的内存!

可以配置使用内存。
登录SQL Server Management Studio

在实例名上右键-属性-内存
在配置值中配置最大服务器内存。