标签: memory

SQL 批量插入/BCP 导出后未释放已用内存

我创建了一个非常基本的 SQL 表,如下所示

CREATE TABLE [dbo].[TickData](
[Date] [varchar](12) NULL,
[Time] [varchar](12) NOT NULL,
[Symbol] [varchar](12) NOT NULL,
[Side] [varchar](2) NOT NULL,
[Depth] [varchar](2) NOT NULL,
[Quote] [varchar](12) NOT NULL,
[Size] [varchar](18) NOT NULL
    ) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)

然后我执行了 3 Gig Bulk Insert

    BULK
    INSERT TickData
    FROM 
    'C:\SUMO.csv'
    GO
Run Code Online (Sandbox Code Playgroud)

然后 SQL 服务器的 RAM 使用量飙升,吃掉了大约 30Go 的 RAM:

在此处输入图片说明

在此处输入图片说明

我更愿意认为这是一种异常行为,可以采取措施来避免这种情况。

编辑:
好的,这似乎是默认行为。很公平。
但是,为什么在批量插入完成后很久没有释放内存

一些额外的考虑:
至于有关 SQL 服务器在操作系统“告知”时释放内存的评论,我在 24 核 32 Gb Xeon 服务器上的实践经验证明这是不准确的:一旦内存消耗大的 BCP 提取结束我有一个数据处理应用程序的 .Net 实例池,它们需要处理提取的数据,并且它们会窒息/争吵以共享剩余内存以尝试执行它们的工作,这比打开 SQL Server 需要更长的时间关闭,内存可供所有应用程序共享。我必须停止 …

sql-server memory

10
推荐指数
2
解决办法
5650
查看次数

锁使用的内存

我有点好奇,具有 128 GB 数据库 RAM 大小的 SQL 2012 企业版之一是 370 GB 并且还在增长,锁 (OBJECTSTORE_LOCK_Manager) 内存管理员使用的内存量显示为 7466016 KB。我也可以通过查看性能计数器来确认select * from sys.dm_os_performance_counters where counter_name = 'Lock Memory (KB)'

但是,当我运行查询时

select count(*) from sys.dm_tran_locks
Run Code Online (Sandbox Code Playgroud)

它只显示了 16 个锁。那么什么是使用超过 7 GB 的锁。有办法查到吗?

这是否意味着一旦分配了锁的内存,SQL 还没有释放它?在过去的 1 小时内,我没有看到锁计数超过 500,但锁内存保持不变。

最大服务器内存为 106 GB,我们没有在内存中使用锁定页面,我在过去 12 小时内没有看到任何内存压力或错误日志中的任何错误。可用 MBytes 计数器显示超过 15 GB 的可用内存。

活动监视器始终显示 0 个等待任务,因此显然没有阻塞。

考虑到 SQL 服务器锁占用大约 100 字节的内存,7 GB 是大量内存,并试图找出谁在使用它。

我通过锁计数运行服务器仪表板报告最高事务,它说“当前系统上没有运行锁定事务。但是,锁内存仍然显示如上所述。数据库在夜间最忙。

sql-server-2008 sql-server memory sql-server-2008-r2 sql-server-2012

10
推荐指数
2
解决办法
5497
查看次数

MySQL不释放内存

在对其执行任何大型插入或选择语句之后,MySQL 似乎希望将整个表保留在缓存中(表大小 = ~20GB)。现在我的 innodb 缓冲池是 20GB。总内存为 32GB。我将提供一些内存使用情况和 innodb 状态的输出以及 mysqltuner 的输出。过去几天一直让我发疯。请帮忙!我感谢任何反馈,如果您需要更多信息,请告诉我。

此外,执行“FLUSH TABLES”只会在内存中关闭并重新打开它们。至少我认为这就是正在发生的事情。这是我执行一堆插入之前的 innodb 当前内存状态:

----------------------
BUFFER POOL AND MEMORY
----------------------
Total memory allocated 21978152960; in additional pool allocated 0
Dictionary memory allocated 6006471
Buffer pool size   1310719
Free buffers       347984
Database pages     936740
Old database pages 345808
Modified db pages  0
Pending reads 0
Pending writes: LRU 0, flush list 0, single page 0
Pages made young 78031, not young 0
0.00 youngs/s, 0.00 non-youngs/s
Pages read 551887, …
Run Code Online (Sandbox Code Playgroud)

mysql innodb memory

10
推荐指数
1
解决办法
2万
查看次数

SQL Server 2012 缓冲池外的内存消耗

我有一个 SQL Server 2012 SP2 企业版的实例,它消耗的内存比最大值高约 20GB。内存限制。实例限制为 65GB,但以下查询中使用的物理内存显示为 86GB

SELECT (physical_memory_in_use_kb/1024)/1024 AS [PhysicalMemInUseGB]
FROM sys.dm_os_process_memory;
GO
Run Code Online (Sandbox Code Playgroud)

服务器是具有 2 个 NUMA 节点的物理服务器。有没有一种方法可以找出正在消耗缓冲池之外的内存的东西(我假设这就是正在发生的事情)?

这是 DBCC MEMORYSTATUS 的输出:-

DBCC MEMORYSTATUS 的输出

这是设置的内存限制:-

内存限制的屏幕截图

提前致谢。

更新:-我已经运行了 Aaron 建议的查询

SELECT TOP (20) * FROM sys.dm_os_memory_clerks ORDER BY pages_kb DESC
Run Code Online (Sandbox Code Playgroud)

这是输出:-

内存职员输出

pages_kb 的总和达到 ~60GB

更新 2:- DBCC MEMORYSTATUS 的完整输出在这里:- http://pastebin.com/nGn6kXEc

更新 3:- 此处在 excel 文件中输出 Shanky 的脚本:- http://jmp.sh/LKRlH4K

更新 4:- 输出的屏幕截图:-

SELECT (physical_memory_in_use_kb/1024)/1024 AS [PhysicalMemInUseGB]
FROM sys.dm_os_process_memory;
GO
Run Code Online (Sandbox Code Playgroud)

PhysMemInUse 截图

所以这似乎表明 SQL Server 正在使用超过 65GB 的设置。

sql-server memory sql-server-2012

10
推荐指数
1
解决办法
2万
查看次数

为 SQL Server 和 NUMA 配置 RAM

意外的数据库管理员在这里。

题:

即使该服务器的唯一目的是仅为 SQL Server 数据库引擎提供服务,您是否仍会手动限制 SQL Server 的最大 RAM?

我有 Microsoft Windows 2012 R2 Server、SQL Server 2012 Std、32GB RAM。

管理员不断登录到 SQL Server 以使用其控制台和所有内容。

其次,您如何检查此 Windows 服务器是否启用了 NUMA?

sql-server memory sql-server-2012 numa

10
推荐指数
2
解决办法
1558
查看次数

我应该为云托管的 PostgreSQL 数据仓库获得多少 RAM?

我正在考虑将当前的 PostgreSQL 数据仓库迁移到具有 SSD 存储和 RAM 作为主要大小变量之一的云主机。我们目前处理的最庞大的数据将存在于每月分区表中。每个月大约有 70GB 的索引(40-ish w/o)。数据可能主要是定期批量加载,然后由 5 名研究人员组成的小团队访问。

我一直在尝试在此站点上搜索有关规范 RAM 的建议,我发现的所有内容是:

  • 适合整个数据库(>1TB,不现实)
  • 更多更好

是否应该有足够的 RAM 来至少将整个索引 (16GB) 加载到 RAM?我还需要提供其他详细信息吗?

postgresql data-warehouse memory

10
推荐指数
1
解决办法
4493
查看次数

如何限制 Oracle 的内存使用?

我想使用Oracle的自动内存管理,限制在4GB左右。(过去的经验表明,这对于我的开发 PC 来说已经足够了,而且比这更容易了解任何性能问题。)

我相信这些是要遵循的说明:

Oracle 12 自动内存管理

简而言之,要启用自动内存管理,请设置 memory_target 和(可选)memory_max_target。前一个参数应该是一个动态值,后者是一个更难的限制,只能在停止/启动数据库时更改。

我将这些设置为 sysdba:

SQL> alter system set memory_target = 4G scope = spfile;

System altered.

SQL> alter system set memory_max_target = 8G scope = spfile;

System altered.
Run Code Online (Sandbox Code Playgroud)

并检查值

SQL> show parameter target;
Run Code Online (Sandbox Code Playgroud)

范围可以只是当前正常运行时间的“内存”、“spfile”或“两者”;我选择 spfile,因为我将重新启动:

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
Run Code Online (Sandbox Code Playgroud)

然而,这太简单了:

ORA-00838: Specified value of MEMORY_TARGET is too small, needs to be at least 13104M
Run Code Online (Sandbox Code Playgroud)

恢复并不难,但在我看来,如何通过内存调整也不是很明显,所以我将在下面发布我所做的事情,高级海报可以纠正/粉碎我。无论哪种情况,我都认为将它放在一个地方很好。

memory configuration oracle-12c

9
推荐指数
2
解决办法
2万
查看次数

sql server 最大内存包括 SSIS?

我在以下服务器上安装了 2 个 sql server 和 SSIS 实例。

请注意 RAM 量接近 384 GB

在此处输入图片说明

在此处输入图片说明

这是我应用于 2 个实例的最大和最小内存设置。我假设两个实例将使用相同数量的资源,如果真的是这样,184,320 MB 也就是 180 GB 是设置内存的一个很好的起始数字?

我会为 SSIS 分配多少内存?

sql-server memory ssis sql-server-2014 ssis-2014

9
推荐指数
2
解决办法
2万
查看次数

DB Engine Stolen Server 内存太高

我从 System Center Operations Manager (SCOM) 收到错误消息。

如何解决这个错误?

SQL DB 2012 Engine Stolen Server Memory 过高。

我运行查询并得到这个计数器:

???????????????????????????????????????????????
? Stolen Server Memory (MB)     ? 7354.773437 ?
? Lock Memory (MB)              ? 106.195312  ?
? Free Memory (MB)              ? 64.632812   ?
? Connection Memory (MB)        ? 24.203125   ?
? Log Pool Memory (MB)          ? 14.085937   ?
? Optimizer Memory (MB)         ? 2.351562    ?
? Granted Workspace Memory (MB) ? 1.296875    ?
? Cursor memory usage           ? 0.000000    ?
? Cursor memory …
Run Code Online (Sandbox Code Playgroud)

sql-server memory sql-server-2012

9
推荐指数
1
解决办法
1万
查看次数

更改最大内存设置会使查询计划失效吗?

我最近将最大内存从默认(无限制)降低到 20 GB。这会清除计划缓存中最旧的查询吗?

sql-server memory configuration plan-cache sql-server-2016

9
推荐指数
1
解决办法
671
查看次数