标签: buffer-pool

理解 INNODB 缓冲池统计信息

在阅读了 mysql 文档中的这个页面后,我试图理解我们当前的 InnoDB 使用情况。目前,我们为缓冲池分配了 6GB 的 RAM。我们的数据库大小差不多。这是来自show engine innodb status\G(我们正在运行 v5.5)的输出

----------------------
BUFFER POOL AND MEMORY
----------------------
Total memory allocated 6593445888; in additional pool allocated 0
Dictionary memory allocated 1758417
Buffer pool size   393215
Free buffers       853
Database pages     360515
Old database pages 133060
Modified db pages  300
Pending reads 0
Pending writes: LRU 0, flush list 0, single page 0
Pages made young 7365790, not young 23099457
0.00 youngs/s, 0.00 non-youngs/s
Pages read 1094342, …
Run Code Online (Sandbox Code Playgroud)

mysql innodb buffer-pool

21
推荐指数
3
解决办法
5万
查看次数

MySQL InnoDB 缓冲池实例的最佳数量

服务器特性

  • 总系统 RAM:8GB(运行 MySQL + 其他东西而不是 MySQL,即不是专用于 MySQL)
  • CPU 核心数:6
  • 我在数据库中有大约 2GB 的数据
  • 我将 InnoDB 缓冲池大小设置为 4GB

哪个更好:

  • Innodb 缓冲池实例设置为 1?
  • Innodb 缓冲池实例设置为 2(每个 2GB)?
  • Innodb 缓冲池实例设置为 4(每个 1GB)?
  • Innodb Buffer Pool Instances 设置为 8(默认设置)

因此,我不确定如何推理缓冲池实例以及整个“在拥有如此大的 InnoDB 缓冲池大小时使用实例或遭受操作系统交换”。

mysql innodb buffer-pool

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

SQL Server 的内存使用情况

我如何在生产框中检查我的 SQL 服务器的内存使用情况。我正在使用 SQL Server 2016。当我检查任务管理器时,它显示在 90% 以上。我不认为这是 sql server 的真实内存使用情况。

我有一个 SQL 性能工具 grafana,它显示的 CPU 使用率比我在任务管理器中看到的少得多。我检查了资源监视器,可以看到平均 CPU 值。我对 SQL 服务器内存使用情况感到困惑。我正在尝试确定内存压力是否是我的某些问题的一个问题。

有人可以直接给出一个好的/正确的解释。

performance sql-server memory cache buffer-pool

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

有没有办法强制索引保留在 SQL Server 2008 的内存中?

我有一个包含数百万行的表,我需要不时从中运行一些查询。第一个查询通常会很慢(大约 10 秒),随后的查询通常会更快(大约 1 秒)。几个小时后,一个缓慢/然后快速的循环再次开始。

我已经在我的执行计划中检查了所有需要的索引都存在并得到了适当的使用,我认为性能差异是由于索引实际上在内存中用于后续查询(我是对的,还是有其他可能的原因?)

我还使用索引运行了许多其他查询,但这些查询耗时较少,性能也不那么重要,所以我担心这些索引实际上是将我的关键索引从内存缓存中推出。

除了明显的“添加更多 RAM”修复之外,我一直在考虑编写虚拟查询脚本,使其每小时运行一次,以强制索引返回内存。

有没有更优雅的方法来做到这一点?就像暗示 SQLServer 的一种方式,如果它只有足够的内存来保持一个索引缓存,它应该是那个?

我知道通常最好的办法是不要在这类事情上搞砸 SQLServer,但是我的查询的不寻常性质(很少运行,但对时间要求严格)让我相信它是有意义的(如果可能的话) .

我也很想知道是否有办法知道在给定时间哪些索引缓存在内存中?

performance index sql-server-2008 sql-server buffer-pool

11
推荐指数
1
解决办法
4919
查看次数

SQL Server 如何处理缓冲区缓存空间不足的查询数据?

我的问题是 SQL Server 如何处理需要将比可用空间更多的数据量拉入缓冲区缓存的查询?此查询将包含多个连接,因此磁盘上不存在此格式的结果集,它需要编译结果。但即使在编译之后,它仍然需要比缓冲区缓存中的可用空间更多的空间。

我举一个例子。假设您有一个 SQL Server 实例,它有 6GB 的可用缓冲区缓存空间。我运行具有多个连接的查询,读取 7GB 的数据,SQL Server 如何能够响应此请求?它是否将数据临时存储在 tempdb 中?它失败了吗?它是否只从磁盘读取数据并一次编译段?

此外,如果我尝试返回 7GB 的总数据会发生什么,这是否会改变 SQL Server 处理它的方式?

我已经知道有几种方法可以解决这个问题,我只是好奇 SQL Server 在按规定运行时如何在内部处理此请求。

此外,我确信该信息存在于某处,但我一直没有找到它。

sql-server memory database-internals sql-server-2012 buffer-pool

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

Microsoft SQL Server 2012 镜像断开连接

我有一些 Microsoft SQL Server 2012 镜像,在异步模式下没有见证,偶尔会断开连接。我正在运行 SQL Server 2012 11.0.5058。看着镜子边的原木我看到

未能分配 BUF:FAIL_BUFFER_ALLOCATION 1

有一大堆内存管理员消息

错误:802,严重性:17,状态:0。

缓冲池中没有足够的可用内存。

错误:1454,严重性:16,状态:1。

数据库镜像将被暂停。服务器实例 'instance' 在充当数据库 'database' 的镜像伙伴时遇到错误 802,状态 0,严重性 17。数据库镜像伙伴可能会尝试自动从错误中恢复并恢复镜像会话。有关更多信息,请查看错误日志以获取其他错误消息。

任何有关检查哪些内容以找出镜像在这一系列事件后进入暂停状态然后断开连接的帮助将不胜感激。在这之后我可以重新建立镜子,它们可以正常工作几天,然后它又会再次发生。

mirroring sql-server-2012 buffer-pool

8
推荐指数
1
解决办法
1236
查看次数

DBCC CheckDB 后,性能监视器中的数据库缓存内存显着下降

我们一直在监控一些SQLServer: Memory Manager指标,并注意到在DBCC CheckDB工作后,指标

Database Cache Memory (KB)
Run Code Online (Sandbox Code Playgroud)

大幅下降。准确地说,它从 140 GB 缓存数据库内存下降到 60 GB。之后,在一周内再次缓慢上升。(“ Free Memory KB”的数量,紧随其后从 20 GB 增加到 100 GB CheckDB

DBCC CheckDB 每周日运行,因此数据库缓存内存必须每周再次增加

What is the behavior of this ? Why CheckDB pushes database pages out of memory ?
Run Code Online (Sandbox Code Playgroud)

第二个问题是为什么“ buffer cache hit ratioDBCC CheckDB完成后没有变化?

平均为 99.99%,在DBCC CheckDB工作后它下降到 ~98.00%,并很快恢复到 99%,而我预计“ buffer cache hit ratio”会显着下降,因为数据库数据必须再次从存储读取到 RAM?

sql-server dbcc-checkdb buffer-pool sql-server-2017 performance-monitor

8
推荐指数
1
解决办法
322
查看次数

缓冲区大小改变?

我有一个生产数据库,它遇到了剧烈波动的页面预期寿命 (PLE) 问题。(它在随机时间崩溃为零。)

我一直在研究 PLE 问题,并发现一些似乎指向 VMWare 问题的内容,但我不确定我是否正确使用了数据。似乎我正在丢失缓冲区/缓存页面。

我正在使用这个查询:

SELECT  COUNT(*) AS cached_pages_count, 
        CASE database_id
            WHEN 32767 THEN 'ResourceDb'
            ELSE DB_NAME(database_id)
        END AS database_name
FROM    sys.dm_os_buffer_descriptors
GROUP BY DB_NAME(database_id), database_id
ORDER BY cached_pages_count DESC;
Run Code Online (Sandbox Code Playgroud)

(在这里找到)

我正在计算 PLE 崩溃前后的结果(计数)。一个例子是之前的 1,097,820 和之后的 131,394。所以我似乎“丢失”了 966,426 页。

我的猜测是所有虚拟机的硬件都处于压力之下,因此它会随机从服务器中交换一些内存一段时间。(这只是一个猜测。)当这种情况发生时,所有页面都丢失了,因此 PLE 直线下降。

那么,我sys.dm_os_buffer_descriptors是否正确使用了视图? 从我读到的它总是显示使用过的缓冲区/缓存页面。所以如果它是空的(或显着减少),我要么不再有内存,要么是空的。(我很想用一种方法来证实这个结论。)

或者还有另一种解释为什么计数下降这么多?

该行下方的信息是从 OP 的评论中添加的


我们的系统管理员管理虚拟机。我希望在使用这些数据去找他们之前了解我的查询。从数据库的角度来看,PLE 崩溃的时间似乎是随机的。(在 PLE 崩溃期间不会发生重新索引或其他高性能的事情)

我做了大量的工作,看看它是否与工作负载有关。虽然存在一个性能不佳的查询,但用完所有缓存还不够。[没有] 当缓冲区计数下降时,服务器上没有重建或其他非常规用户活动。即使是这样,我也不会在上面的查询中看到使用它吗?(意味着如果它是 SQL Server 操作,计数不会保持不变,只是内容不同吗?)

我无权访问 VMWare 设置。我希望在涉及那些做的事情之前更好地理解我的发现。这个问题的重点是确保我首先正确使用视图。

在评论链的末尾:

我试图说 PLE 问题导致我丢失了缓冲页面问题。我用来获取 PLE 的查询将显示低 PLE,因为页面正在丢失。所以他们身上的东西消失了。这是一个错误的读数,因为内存量减少了。

这是我的@@Version:

Microsoft SQL Server 2012 …
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2012 page-life-expectancy buffer-pool

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

如何调试缓冲区问题?

我有一个产品“Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64)”,它显示出奇怪的缓冲区和页面预期寿命 (PLE) 症状。

我每分钟都在我的服务器上运行这个(跟踪这个问题):

SELECT @ple = CAST([cntr_value] AS VARCHAR(20))
FROM sys.dm_os_performance_counters
WHERE [object_name] LIKE '%Manager%'
AND [counter_name] = 'Page life expectancy'

SELECT @usedBufferPages = CAST(COUNT(*) /128 AS VARCHAR(20)) 
FROM sys.dm_os_buffer_descriptors

DECLARE @StartDate VARCHAR(8) = Convert(VARCHAR(8), GETDATE(), 14)
RAISERROR ('%s. PLE at %s and Used Buffers at %s at %s ', 0, 
            1,@runCountString ,@ple, @usedBufferPages, @StartDate) WITH NOWAIT  
Run Code Online (Sandbox Code Playgroud)

这是一些示例输出:

16. PLE at 858 和 Used Buffers at 7290 at 09:51:42 
17. PLE at …

performance sql-server sql-server-2012 page-life-expectancy buffer-pool

6
推荐指数
3
解决办法
1060
查看次数

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

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

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

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

sql-server memory table buffer-pool

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