标签: memory

最大 SQL Server 内存设置为 12 GB,但它仍然超过 12 GB。如何防止 SQL Server 超过最大内存限制?

用户 'mrdenny' 写道,在您设置 SQL Server 最大内存后...

现在,这不会将 SQL Server 的所有方面都限制为该内存量。这仅控制缓冲池和执行计划缓存。CLR、全文、SQL Server exe 文件使用的实际内存、SQL 代理、扩展存储过程等不受此设置控制。

我的问题是我的服务器正在超过 12 GB 的内存,如果 CLR、全文和服务器 exe 文件占用了额外的内存。

如何配置 SQL Server,使其不超过设置的最大限制?

有人告诉我有一种方法可以做到,但是在 Google 上搜索后我找不到解决方案。

sql-server memory

6
推荐指数
2
解决办法
2526
查看次数

数据库管理器未能分配共享内存,因为已达到操作系统内核内存限制

我已经安装了 IBM DB2 10.5.5,我想在那里创建一个新数据库。

当我输入命令时

db2 create database test1
Run Code Online (Sandbox Code Playgroud)

我收到一条错误消息

SQL1084C  The database manager failed to allocate shared memory because an 
operating system kernel memory limit has been reached.  SQLSTATE=57019
Run Code Online (Sandbox Code Playgroud)

以下是我运行“ipcs -l”时得到的输出

 ------ Shared Memory Limits --------
max number of segments = 10000
max seg size (kbytes) = 4882812
max total shared memory (kbytes) = 33554432
min seg size (bytes) = 1

------ Semaphore Limits --------
max number of arrays = 4096
max semaphores per array = 250
max semaphores …
Run Code Online (Sandbox Code Playgroud)

db2 memory

6
推荐指数
2
解决办法
8780
查看次数

SQL Server Management Studio 2016(第 16 版)不断崩溃

更新到第 16 版后,我的 SSMS 会自动断开连接并弹出“连接到数据库引擎”弹出窗口(下面的屏幕截图)。此外,当我运行查询时,我不断收到“ System.OutOfMemoryException ”,即使我的机器有 16GB 的 RAM 并且当前只使用了大约 4GB。这些错误发生在简单的查询中,比如SELECT GETDATE();对可能是什么问题的任何建议?在此处输入图片说明

memory ssms sql-server-2016

6
推荐指数
1
解决办法
3521
查看次数

SQL Server:分配与保留与提交

SQL Server 中分配给内存组件的内存究竟是什么?

我认为committed内存是正在使用的物理内存reserved量,是虚拟地址空间中尚未映射到物理内存的内存量。

但是当谈到allocated记忆时,我感到困惑。当内存组件从内存管理器请求内存时,被授予的内存的性质是什么?真实/物理或 VAS?

以下是 DMV 的示例:

SELECT pages_kb AS A
,virtual_memory_committed_kb AS C
,virtual_memory_reserved_kb AS R
FROM sys.dm_os_memory_clerks;
Run Code Online (Sandbox Code Playgroud)

A、C 和 R 列之间没有任何关系。最初我期望的是A = C + R,这意味着 A,分配的内存页,应该作为 VAS 中的内存开始,并表示使用这么多内存的意图。但显然这是不对的。

我如何解释分配的内存?谢谢

sql-server memory

6
推荐指数
1
解决办法
4107
查看次数

SQL Server 占用太多内存

我们的一个 SQL Server 出现了我以前从未见过的问题。

SQL Server(企业版)运行的数据库只有 70MB 的数据。但几个小时后,服务器需要 10 GB 或更多内存。几天后,服务器内存不足。我已经在 SSMS 中配置了最大内存参数,但它没有帮助。

你有什么想法怎么做才能找到问题吗?

这是 dbcc memorystatus 结果的链接:https ://drive.google.com/open ? id = 0B2FJAT6lteKJOEJmUFdqb0ZERFU

数据库版本:Microsoft SQL Server 2014 (SP2-CU5) (KB4013098)。企业版。这是一个虚拟机。

我检查了另一个线程,发现了这个查询:

SELECT TOP (21) [type] = COALESCE([type],'Total'), 
  mb = SUM(pages_kb/1024.0)
FROM sys.dm_os_memory_clerks
GROUP BY GROUPING SETS((type),())
ORDER BY mb DESC;
Run Code Online (Sandbox Code Playgroud)

我在 SQL Server 上运行它并得到以下结果:

  1. 总计 = 2452,9
  2. CACHESTORE_SQLCP = 2141,5
  3. MEMORYCLERK_SQLBUFFERPOOL = 160
  4. MEMORYCLERK_SOSNODE = 33
  5. USERSTORE_SCHEMAMGR = 30.94

cachestore 的值在它只运行了几个小时后就这么高,这是否正常?

运行此查询:

select value_in_use
from sys.configurations
where name = 'max …
Run Code Online (Sandbox Code Playgroud)

sql-server memory sql-server-2014

6
推荐指数
1
解决办法
2340
查看次数

如何限制 pg_dump 使用的资源?

是否可以限制 所使用的系统资源pg_dump

我有一个使用PostgreSQL数据库的资源相当密集的服务器。它正在运行FreeBSD 10.2。服务器有 8 GB 内存。

我使用以下命令运行备份。

pg_dump -h <address> -U <user> -Fc <database> -f <location>
Run Code Online (Sandbox Code Playgroud)

当备份完成时,相关的 postgres 进程的内存使用量不断上升。仅该进程就达到了 2.2 GB。此时内存几乎已用完并FreeBSD开始杀死进程。

我尝试更改备份的完成方式。例如,我尝试使用多个作业(因此将格式更改为目录)。

pg_dump -j 4 -h <address> -U <user> -Fd <database> -f <location>
Run Code Online (Sandbox Code Playgroud)

没有差异。最终,内存使用量将达到上限并FreeBSD终止数据库备份(以及其他进程)。

我还尝试调整一些系统变量。有管理内核资源资源消耗。这些影响了服务器使用的正在运行的 postgres 进程,但对进程使用没有影响pg_dump。在 FreeBSD 开始终止进程​​之前,它仍然上升到 2.2 GB。

我已经通读了pg_dump手册,除了多项作业之外,没有真正看到任何有帮助的内容。

此时我不太确定该怎么办。pg_dump有没有办法限制允许使用的资源?我不介意备份是否慢一些。只是不要在系统资源耗尽时操作系统必须开始终止进程​​。

postgresql memory pg-dump postgresql-9.4

6
推荐指数
1
解决办法
7221
查看次数

RDS (MySQL):Swap 使用量增长但有大量可用内存?

我们在 Amazon 的 RDS 上运行了一个 db.m4.10xlarge 实例。它运行 3 个相当繁忙的数据库,并连接了一个副本实例。

在过去的几周里,我注意到交换空间的使用量一直从 0 稳步上升到现在的 80MB 左右。我不知道为什么它在有足够的空闲(可用?)RAM 时使用交换空间。我在下面列出了过去两周的图表:

来自亚马逊 RDS 服务的图表

同样的事情也发生在复制品上,这是我的另一个担忧,因为我们的复制品滞后正在以类似的方式继续增长。

memory amazon-rds

6
推荐指数
0
解决办法
987
查看次数

为什么 SQL Server Standard 2017 使用的内存多于文档中描述的限制?

文档说:

例如:SQL Server 标准版的缓冲池内存限制为 128GB,因此缓冲池中缓存的数据和索引页限制为 128GB。从 SQL Server 2016 SP1 开始,您可以为每个实例的列存储段缓存提供额外的 32GB 内存,并为每个数据库的内存中 OLTP 提供额外的 32GB 内存配额。此外,如果最大服务器内存没有上限,SQL Server 中的其他内存使用者可能会消耗内存,这将受到“最大服务器内存”或服务器上的总内存的限制。

我们正在使用列存储,因此我预计 SQL Server 将受到使用 128+32 Gb 内存的限制。不使用内存优化表。

但实际上超过 215 Gb 用于缓冲池: 在此处输入图片说明

内存文员 在此处输入图片说明

整个 sql 过程大约需要 300Gb。 在此处输入图片说明

从 sys.dm_os_process_memory 中选择 *

在此处输入图片说明

最大内存设置为 360Gb。服务器有380Gb。

我错过了什么?

版本:

Microsoft SQL Server 2017 (RTM-CU14) (KB4484710) - 14.0.3076.1 (X64)
2019 年 3 月 12 日 19:29:19 版权所有 (C) 2017 Microsoft Corporation Standard Edition(64 位),Windows Server 2016 Standard 10.0(Build 10.03) :)(管理程序)

更新 (2019-04-26) 有趣的是 - MEMORYCLERK_SQLBUFFERPOOL 由两条记录呈现。第 3 …

sql-server memory sql-server-2017

6
推荐指数
1
解决办法
1040
查看次数

从内存中读取数据后,什么时候从内存中删除(基于磁盘的)表?

(基于磁盘,所以没有 Hekaton)表在内存中的持久化时间是否超过从它们读取数据的查询的生命周期?

如果是这样,是什么决定了它们在内存中停留的时间?

有没有办法管理它们在内存中持续多长时间?

sql-server memory table buffer-pool

6
推荐指数
1
解决办法
103
查看次数

无法回收内存中 OLTP 中索引未使用的内存

重现问题的步骤

创建具有内存优化文件组和容器的数据库 使用非集群 pk 创建仅模式内存表 模拟插入和删除活动。我的结果是我有高索引未使用的内存,不会下降。

 USE master
 go
 DROP DATABASE IF EXISTS MemoryOptimizedTest
 CREATE DATABASE MemoryOptimizedTest
 GO
 USE MemoryOptimizedTest
 GO
 ALTER DATABASE MemoryOptimizedTest 
 ADD FILEGROUP imoltp_mod CONTAINS MEMORY_OPTIMIZED_DATA
 GO 
 
 ALTER DATABASE MemoryOptimizedTest ADD FILE (name='imoltp_mod1', filename='c:\imoltp_mod1') TO FILEGROUP imoltp_mod
 GO
 
 
 DROP TABLE IF EXISTS dbo.MyCache
 CREATE TABLE dbo.MyCache
 (
    PK int NOT NULL, 
    SecondInt int NOT NULL,
    ThirdInt int NOT NULL,
     CONSTRAINT PK_MyCache PRIMARY KEY NONCLUSTERED (PK)
 ) WITH (MEMORY_OPTIMIZED = ON, DURABILITY = SCHEMA_ONLY)
 
 go

/* Generate activity …
Run Code Online (Sandbox Code Playgroud)

sql-server memory memory-optimized-tables sql-server-2019

6
推荐指数
1
解决办法
525
查看次数