我正在寻找一个迹象(如果有的话),要么忽略内存瓶颈选项,要么接受它,或者让我进一步调查。
例如:
页面寿命:
SELECT [object_name],
[counter_name],
[cntr_value]
FROM sys.dm_os_performance_counters
WHERE [object_name] LIKE '%Manager%'
AND [counter_name] = 'Page life expectancy'
Run Code Online (Sandbox Code Playgroud)
在这种情况下,在我当前的环境中,我有一台具有 8 GB RAM 的服务器,我会要求管理层提供更多内存。我相信这是一个内存瓶颈。
什么是使用 RAM 将是另一项调查。
下面的这封电子邮件是否有效识别可能的内存瓶颈?
我们需要查看 SQLServer:Buffer Cache Hit ratio
如果该比率小于 95%,则表示服务器处于内存压力之下
希望这可以帮助,
performance sql-server memory sql-server-2008-r2 sql-server-2014
我最近按照以下说明在我的 Ubuntu 14.04.3 系统中安装了 MySQL 5.7.11:http ://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/
由于完全空且未被任何其他程序调用,它总是在几个小时内增加 RAM 使用量,直到由于内存不足(ENOMEM)而无法启动 Node 应用程序。我首先假设是因为我在 768MB VPS 上运行,所以我调整了 my.cnf,使用了一些非常低的参数,但它一直表现得如此,几个小时后吃掉了超过 600MB 的 RAM。
请注意,它确实占用了所有 RAM,而不是某些缓冲区/缓存巫术,因为它会阻止其他程序启动。还是我在这里错了?
刚刚卸载了所有东西并重新安装了 MySQL 5.6,这个问题没有发生。有人可以帮我吗?我做错了什么还是这是某种错误?
谢谢!
我有一个占用 500gb 的数据库,我注意到即使我有 100gb 的 RAM,我的 ple 也很低。我在谷歌中搜索过原因,我发现了一些有趣的查询。我有一个在非常大的表上运行的查询,即使它使用聚集索引,它也会导致 ple 删除。我在查询前后以及查询完成后检查了缓冲池中的内容,看起来 DB 必须为我的查询中使用的索引释放一些空间,并且在查询旧索引加载到缓冲池之后。我的问题是 DB 应该有多少 RAM 内存,我如何计算它,它是否应该是让我一次将所有使用的索引保存在内存中的数量?或者我应该减少保存在表中的数据,以便索引会更小?
我使用的是 SQL Server 2014。有一些用户可以查询表。问题是,大多数时候这些查询使用大量内存。我想知道是否有任何方法可以限制每个用户的资源?
没有特定的查询。我只想控制用户。有时他们会做一些疯狂的事情。
我们正在运行SQL Server 2014 Enterprise Sp2使用1.5TB的内存和64 cores。17 GB这个单线程查询的内存接近,使用的最大内存是2.2gb,即使散列连接有足够的可用内存,它似乎没有使用它并溢出到磁盘。知道为什么吗?先感谢您。
SQLPerformance 中发布的相同问题。查询计划和图像张贴在那里
我想了解内存分数。它显示哈希连接具有 52.48% 的内存授权(总计 17GB+),接近 9GB。但是该计划使用的最大内存要少得多,即 2.2+GB,并且 Hash join 是此查询中唯一的溢出。我对内存分数有什么遗漏,它们不准确吗?
首先,我问这个的原因是因为我觉得我有一个数据库 - 根据我自己的估计 - 应该用大量 I/O 杀死磁盘,因为索引不适合内存,但在实际上它仍然表现良好。
让我们从相关表开始:
CREATE TABLE `search` (
`a` bigint(20) unsigned NOT NULL,
`b` int(10) unsigned NOT NULL,
`c` int(10) unsigned DEFAULT NULL,
`d` int(10) unsigned DEFAULT NULL,
`e` varchar(255) DEFAULT NULL,
`f` varchar(255) DEFAULT NULL,
`g` varchar(255) DEFAULT NULL,
`h` varchar(255) DEFAULT NULL,
`i` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Run Code Online (Sandbox Code Playgroud)
该a列是一个 8 字节的数字,其中编码了时间戳(以秒为单位)。该表有一个PARTITION BY RANGE (a), 将表分成每月分区。这是因为我们只在数据库中保留了 24 个月,其余的都被清除了。
该表每月增长约 2 亿行;整个表包含大约 50 亿行。
它运行的服务器有大约 360GB 的内存,其中 300GB 是为 MySQL …
是否有任何关于 1 GB = 1000 MB 或 1024 MB 的权威文档参考 1) 磁盘空间和/或 2) RAM?根据我的研究,1 GB 的“官方”细分曾经是 1024,但最近(相对而言)更改为 1000。
在数据库管理领域是否更准确?还是仅仅取决于上下文?
使用 SQL Server 2012 64 位 (v11.0.6020.0 - 2012 SP3)
下面是场景:
在我们的生产中,我们安装了 32 GB DDR3 RAM:
SQL Server 中的最大内存限制已设置为 16 GB,即 50% 容量:
当我启动任务管理器并检查内存占用的值时,它显示 16 GB,这是正确的:
但是当我选择百分比占用的内存时,它显示 80%-85% 这是不正确的:
这将继续增加,直到它占据超过 95% 并且
解决此问题的唯一方法是重新启动服务器
我的问题是
SQL Server 2014 速成版已发布,内存限制为 1 GB。
SQL 实例内存属性对此限制有何作用?例如,我可以将属性中的最小和最大内存限制设置为 4GB,并且根据任务管理器,该实例将“使用”4GB 的系统内存。
我最好将内存属性限制为 1 GB 还是在此处分配 > 1 GB 内存有优势。
有没有办法保留缓冲池缓存,以便可以在重新启动后加载?我的研究表明其他数据库服务器可以做到这一点,但 SQL Server 不是其中之一。我正在寻找在维护重启后最大化服务器性能的方法。
memory ×10
sql-server ×7
mysql ×2
performance ×2
buffer-pool ×1
disk-space ×1
maintenance ×1
mysql-5.6 ×1
mysql-5.7 ×1
percona ×1
ubuntu ×1