SQL Server批量插入物理内存问题

前端之家收集整理的这篇文章主要介绍了SQL Server批量插入物理内存问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个脚本,按顺序执行15个批量插入操作到sql Server数据库,所有脚本都基于以下一个:
BULK INSERT M_USERS
    FROM '\\spath\users.txt'
    WITH ( 
        BATCHSIZE = 1000,FIELDTERMINATOR = '|',ROWTERMINATOR = '\n',FIRSTROW = 2,ERRORFILE='\\spath\users.err'
    )
GO

15个文本文件的大小各不相同.有些行少于5000行,而最大行有超过5,000,000行.我在具有12 GB内存和24 GB页面文件的服务器上运行该脚本.一旦启动,我注意到该服务器上的物理内存使用量稳步增加,直到接近100%.即使脚本完成(或由于内存不足而失败),内存使用量也不会下降.似乎sql Server从未释放它用于执行批量插入的内存资源.

有谁知道我是否可以通过修改我的脚本解决这个问题,或者这是sql Server的问题?

编辑:最终我收到错误“资源池’内部’没有足够的系统内存来运行此查询.”之后一切都失败了.

解决方法

这是设计的.除非限制sql Server可以访问的内存量,否则将占用尽可能多的内存.这通常不是一件坏事. sql有自己的内部操作系统,用于线程池和内存管理等,并且非常擅长这些.添加如此多的数据很可能导致sql在存储在内存中的数据缓存(以及其他一些东西)中投入大量资源.

如果sql Server是您计算机上唯一运行的东西,那么一般规则就是让它拥有除1.5 / 2 GB以外的所有内存,并为服务器操作系统保留该内存.您可以在sql Server上投入的内存越多,它就会越快乐.

编辑您的编辑:
您肯定希望限制sql Server将使用的内存.我不能确定你正在使用多少字节,但你可能会导致你的服务器交换sql,这是坏消息.

sql Server Managment Studio中的对象资源管理器中:

>右键单击您的服务器实例
>单击左侧导航列表中的“内存”
>将最大服务器内存(以MB为单位)设置为10000到15000(10-15 GB)之间的值.
>单击“确定”

或者,您也可以在查询窗口中运行它:

sp_configure 'max server memory (MB)',10000
GO
RECONFIGURE
GO

10000个sql内存为10GB.

原文链接:https://www.f2er.com/mssql/79575.html

猜你在找的MsSQL相关文章