用户 'mrdenny' 写道,在您设置 SQL Server 最大内存后...
现在,这不会将 SQL Server 的所有方面都限制为该内存量。这仅控制缓冲池和执行计划缓存。CLR、全文、SQL Server exe 文件使用的实际内存、SQL 代理、扩展存储过程等不受此设置控制。
我的问题是我的服务器正在超过 12 GB 的内存,如果 CLR、全文和服务器 exe 文件占用了额外的内存。
如何配置 SQL Server,使其不超过设置的最大限制?
有人告诉我有一种方法可以做到,但是在 Google 上搜索后我找不到解决方案。
我已经安装了 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) 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 出现了我以前从未见过的问题。
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 上运行它并得到以下结果:
CACHESTORE_SQLCP = 2141,5MEMORYCLERK_SQLBUFFERPOOL = 160MEMORYCLERK_SOSNODE = 33USERSTORE_SCHEMAMGR = 30.94cachestore 的值在它只运行了几个小时后就这么高,这是否正常?
运行此查询:
select value_in_use
from sys.configurations
where name = 'max …Run Code Online (Sandbox Code Playgroud) 是否可以限制 所使用的系统资源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有没有办法限制允许使用的资源?我不介意备份是否慢一些。只是不要在系统资源耗尽时操作系统必须开始终止进程。
我们在 Amazon 的 RDS 上运行了一个 db.m4.10xlarge 实例。它运行 3 个相当繁忙的数据库,并连接了一个副本实例。
在过去的几周里,我注意到交换空间的使用量一直从 0 稳步上升到现在的 80MB 左右。我不知道为什么它在有足够的空闲(可用?)RAM 时使用交换空间。我在下面列出了过去两周的图表:
同样的事情也发生在复制品上,这是我的另一个担忧,因为我们的复制品滞后正在以类似的方式继续增长。
文档说:
例如:SQL Server 标准版的缓冲池内存限制为 128GB,因此缓冲池中缓存的数据和索引页限制为 128GB。从 SQL Server 2016 SP1 开始,您可以为每个实例的列存储段缓存提供额外的 32GB 内存,并为每个数据库的内存中 OLTP 提供额外的 32GB 内存配额。此外,如果最大服务器内存没有上限,SQL Server 中的其他内存使用者可能会消耗内存,这将受到“最大服务器内存”或服务器上的总内存的限制。
我们正在使用列存储,因此我预计 SQL Server 将受到使用 128+32 Gb 内存的限制。不使用内存优化表。
从 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 …
(基于磁盘,所以没有 Hekaton)表在内存中的持久化时间是否超过从它们读取数据的查询的生命周期?
如果是这样,是什么决定了它们在内存中停留的时间?
有没有办法管理它们在内存中持续多长时间?
重现问题的步骤
创建具有内存优化文件组和容器的数据库 使用非集群 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) memory ×10
sql-server ×6
amazon-rds ×1
buffer-pool ×1
db2 ×1
pg-dump ×1
postgresql ×1
ssms ×1
table ×1