SQL Server批量插入物理内存问题
我有一个脚本,按顺序执行15个批量插入操作到SQL Server数据库,所有脚本都基于以下一个: BULK INSERT M_USERS FROM 'spathusers.txt' WITH ( BATCHSIZE = 1000,FIELDTERMINATOR = '|',ROWTERMINATOR = 'n',FIRSTROW = 2,ERRORFILE='spathusers.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 Managment Studio中的对象资源管理器中: >右键单击您的服务器实例 或者,您也可以在查询窗口中运行它: sp_configure 'max server memory (MB)',10000 GO RECONFIGURE GO 10000个SQL内存为10GB. (编辑:随州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- sql – 查找值并显示找到的值的数据库,表,列,主键
- sql-server – 帮助安装SQL Server 2017 – VS Shell安装失
- 浅谈sql数据库常用语句,你知道多少?
- sql-server – 为什么我需要两个SQL Server Service Broker
- SQL Server Bulk Insert 只需要部分字段时的技巧
- @OrderBy导致java.lang.ClassCastException:antlr.CommonT
- sql-server – 在SAN环境中对SQL索引进行碎片整理是否有任何
- 分析SQL Server删除重复行的6个方法
- sql 常用技巧整理
- sql-server – 如何在SQL Server 2017中使用SNAPSHOT_MATER