【问题标题】:Buffer Pool Extension for MySQLMySQL 的缓冲池扩展
【发布时间】:2020-06-27 13:33:01
【问题描述】:

主机上的主内存是有限的,因此 mysql 引擎的缓冲池大小。想知道是否有任何已知的MYSQL 解决方案允许将缓冲池扩展到数据库引擎的非易失性随机存取内存(即固态驱动器或 AWS 基础设施的 EBS 卷)扩展。

[编辑] 我能够找到非常旧的 sql server 文档,但在 mysql 上没有找到任何东西。我正在寻找 mysql 引擎/innodb 的任何现有解决方案或如何添加该功能的良好参考点。

参考

SQL Server doc

【问题讨论】:

  • 您的文档是针对 sql server 的,而您的问题是关于 mysql 的?
  • 是的,我在 mysql 上没有找到任何东西。因此,我接触了社区。 sql server 链接仅供参考,以解释有关所询问功能的更多信息。
  • mysql 将缓冲池保存在数据目录中,大小是可配置的,我不认为是可配置的

标签: mysql database innodb


【解决方案1】:

MySQL 没有 Microsoft SQL Server 的缓冲池扩展等功能。

大多数操作系统允许通过磁盘存储扩展 RAM。它被称为交换空间。这个想法是,如果进程使用的虚拟内存多于系统物理 RAM 的容量,则可以使用一些存储空间。

问题是,即使是最好的 SSD 驱动器也比 RAM 慢大约 10,000 倍。如果你依靠 SSD 上的交换空间来补充 MySQL 的缓冲池,那么 MySQL 会慢到无法使用。

在我的工作中,当我们在 Linux 服务器上配置了交换空间时,MySQL 会过度分配虚拟内存并使用一些交换空间,这导致整个服务器因频繁访问磁盘而变得如此缓慢,以至于我们几乎无法 ssh到服务器将其关闭。所以我们禁用了交换空间。完全失败总比一蹶不振而无法恢复要好。

这适用于我们数据中心的物理服务器上的直接连接 SSD 存储。对于 AWS EBS 卷,情况会更糟,因为 EBS 是具有更高延迟的网络附加存储。

您不一定需要与整个数据集大小一样多的缓冲池。默认情况下,我们为缓冲池与存储选择 1:10 的比例。例如,10GB 缓冲池通常足以容纳 100GB 磁盘上的数据。至少作为默认的起点。有些工作负载需要更多的缓冲池,所以我们以后可能会调整它。

如果您的 MySQL 实例需要更多缓冲池,那么您确实需要拥有更多物理 RAM 的服务器。没有替代品有效。

这将花费更多来获得具有更多 RAM 的服务器。

如果应用程序没有产生足够的商业价值来支付它所需的服务器规模,那么它就不是一个可行的应用程序。

【讨论】:

    猜你喜欢
    • 2013-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-19
    • 2019-05-24
    相关资源
    最近更新 更多