我应该牺牲 innodb_buffer_pool_size/RAM 来为 query_cache_size 腾出空间吗?

2024-04-21

我有一个 16GB 的专用 Mysql 服务器数据库。我的 innodb_buffer_pool_size 设置为 11GB 左右,我正在系统中实现查询缓存,其大小为 80mb。我应该从哪里创建这个空间,innodb_buffer_pool_size还是RAM?


早在 2014 年 6 月我就回答过https://dba.stackexchange.com/questions/66774/why-query-cache-type-is-disabled-by-default-start-from-mysql-5-6/66796#66796 https://dba.stackexchange.com/questions/66774/why-query-cache-type-is-disabled-by-default-start-from-mysql-5-6/66796#66796

在那篇文章中,我讨论了 InnoDB 如何微观管理 InnoDB 缓冲池和查询缓存之间的变化。

不使用查询缓存

最简单的答案是禁用查询缓存,但有一个问题:您必须同时设置查询缓存大小 http://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_query_cache_size and 查询缓存类型 http://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_query_cache_type为零(0)。

如果你不设置查询缓存类型 http://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_query_cache_type到零(0),变更的微观管理仍然发生。这是通过以下内容验证的MySQL 文档“查询缓存配置”第 8 段 http://dev.mysql.com/doc/refman/5.6/en/query-cache-configuration.html says

如果query_cache_size为0,则还应该将query_cache_type变量设置为0。在这种情况下,服务器根本不获取查询缓存互斥体,这意味着查询缓存无法在运行时启用,从而减少查询执行的开销。

使用查询缓存

如果您确实希望使用查询缓存,那么您需要研究您的数据。基本上,您需要知道结果的大小。然后你会设置查询缓存限制 http://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_query_cache_limit and query_cache_min_res_unit http://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_query_cache_min_res_unit以容纳平均大小的结果集以及最大大小的结果集。

作为替代方案,您可以全局启用查询缓存,但从数据库会话中禁用它的使用,如中所述第 9 段 http://dev.mysql.com/doc/refman/5.6/en/query-cache-configuration.html:

设置 GLOBAL query_cache_type 值可确定更改后连接的所有客户端的查询缓存行为。各个客户端可以通过设置 SESSION query_cache_type 值来控制自己连接的缓存行为。例如,客户端可以禁用其自己的查询的查询缓存,如下所示:

mysql> SET SESSION query_cache_type = OFF;

您的实际问题

查询缓存、InnoDB 缓冲池、每个连接线程(请参阅我的帖子https://dba.stackexchange.com/questions/16969/how-costly-is-opening-and-fitting-of-a-db-connection/16973#16973 https://dba.stackexchange.com/questions/16969/how-costly-is-opening-and-closing-of-a-db-connection/16973#16973),操作系统都争夺 RAM。

当仅查看查询缓存和 InnoDB 缓冲池时,您需要查看 MySQL 运行数天或数周后 InnoDB 缓冲池中有多少可用空间。

您可以运行这个查询

SELECT variable_value / 64 free_mb
FROM information_schema.global_status
WHERE variable_name='Innodb_buffer_pool_pages_free';

这将告诉您可以将 InnoDB 缓冲池降低多少。然后,您可以将查询缓存增加该大小。如果此查询返回的值小于 1024,则可能不值得付出努力。您要么从 RAM 中获得额外的空间,要么只是禁用查询缓存。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我应该牺牲 innodb_buffer_pool_size/RAM 来为 query_cache_size 腾出空间吗? 的相关文章

  • InnoDB 因读未提交而死锁! - Java - Glassfish - EJB3(JPA/Hibernate)

    几天来 我在使用 Glassfish EJB3 和 Mysql InnoDB 的 Java 应用程序上遇到了死锁问题 配置 Mysql InnoDB Ver 14 12 Distrib 5 0 51a 适用于 debian linux gn
  • 使用 PHP 的 MySQL 连接字符串

    我正在尝试通过本地计算机连接到托管在我的服务器上的数据库 我的服务器有cPanel 11 它是一个典型的共享服务器 由CentOS提供支持 安装了PHP和MySQL 准确地说 我在同一台服务器上持有经销商帐户 我想在不同帐户或域之间访问数据
  • MySQL MIN/MAX 所有行

    我有桌子Races与行ID Name and TotalCP 我选择分钟 TotalCP FROM Races 但是我想选择具有最小值的整行 我如何在单个查询中做到这一点 从聚合值获取整行的一般形式是 SELECT FROM Races W
  • Mysql 创建定义器

    我创建了一个在 CentOS Web 服务器上运行的 Intranet Web 应用程序 该应用程序使用另一个本地服务器 始终是 CentOS 作为 MySQL 数据库 在数据库内部我创建了例程 这些例程总是这样开始 CREATE DEFI
  • MySQL 查询计算上个月

    我想计算上个月的订单总额 我收到了从当前日期获取当月数据的查询 SELECT SUM goods total AS Total Amount FROM orders WHERE order placed date gt date sub c
  • 即使使用“autoReconnect=true”,MySql JDBC 也会超时[重复]

    这个问题在这里已经有答案了 有时 我的 Java Tomcat6 Debian Squeeze 应用程序无法与 MySql 服务器通信 Tomcat 应用程序位于前端服务器上 而 MySql 位于单独的 仅限 MySql 的机器上 一个典型
  • Mysql 将 int 转换为 MAC

    我有一些数据可以转换 其中有 2 列 其中一列有 IP 它包含整数值 我在 mysql 查询中使用了以下函数 是否有一个函数可以用来转换我的 mac 列 其中包含整数和数据类型是bigint to MAC地址 SELECT INET NTO
  • MySQL 查询到 CSV [重复]

    这个问题在这里已经有答案了 有没有一种简单的方法来运行MySQL查询来自linux命令行并以csv格式输出结果 这就是我现在正在做的事情 mysql u uid ppwd D dbname lt lt EOQ sed e s g tee l
  • Java JDBC:更改表

    我希望对此表进行以下修改 添加 状态列 varchar 20 日期列 时间戳 我不确定该怎么做 String createTable Create table aircraft aircraftNumber int airLineCompa
  • 同一配置文件上的两个不同提供程序

    我在用着实体框架 6 1 0 I have 2 家提供者 MysqlClient 和 SQLServerCE 我需要创建2个不同的DBContext 这迫使我创造2个配置类因为mysql有一些不同的东西 但是当我初始化应用程序时 Datab
  • Draggable JS Bootstrap 模式 - 性能问题

    对于工作中的项目 我们在 JavaScript 中使用 Bootstrap Modal 窗口 我们想让一些窗口可移动 但我们遇到了 JQuery 的性能问题 myModal draggable handle modal header Exa
  • 显示标准化数据

    跟进问题 添加 2 个不同表的总和 https stackoverflow com questions 39717541 adding sum from 2 different tables 我创建了3个表 members videos v
  • 在 C# 中,当有人插入、删除或修改记录时,如何从 MySQL 获取事件?

    我正在 WPF Net 中开发一个程序 我需要知道何时有人对数据库的任何表进行更改 这个想法是在数据库发生更改时从数据库接收一个事件 我读了很多文章 但找不到解决我的问题的方法 亲切的问候 最好的解决方案是使用消息队列 在您的应用程序向数据
  • 连接 Netbeans 和 MySQL 但出现大整数错误

    所以我正在尝试向我的 Netbeans 数据库 即 MySQL 添加新连接 但我遇到了大整数转换错误 有人可以帮助我吗 详细地 我右键单击现有的MySQL 服务器位于 localhost 3306 root 已断开连接 gt gt 选择co
  • 从另一台计算机访问 MYSQL

    我想开发一个java桌面应用程序 我想在其中设置服务器 这意味着我在这里使用mysql db 该数据库将仅存储在一台电脑上 其余所有用户都可以访问该数据库 所以 我听说了mysql远程连接 其中尝试了一些事情 这些措施如下 我的电脑已连接w
  • MySQL 和 Hibernate 之间的主键自增由谁负责?

    MySQL CREATE TABLE role id role INT 11 unsigned NOT NULL AUTO INCREMENT PRIMARY KEY id role AUTO INCREMENT 1 休眠 Entity p
  • covertJSONtoSQL 在 NiFi 中返回空值

    我正在设计一项工作 使用以下命令将数据从 MySQL 中的数据库转移到另一个数据库 MySQL 执行SQL处理器随后将Avro转换为Json then 将Json转换为SQL then PutSQL如下流程图所示 将JSON转换为SQL返回
  • db:schema:load 与 db:migrate 使用 capistrano

    我有一个 Rails 应用程序 我正在将其移动到另一台服务器 我认为我应该使用 db schema load 来创建 mysql 数据库 因为这是推荐的 我的问题是我正在使用 capistrano 进行部署 并且它似乎默认为 rake db
  • 合并两个 MYSQL SELECT 查询[重复]

    这个问题在这里已经有答案了 可能的重复 如何将两个 Post Category 表 MYSQL SELECT 查询合并为一个 https stackoverflow com questions 12972130 how to combine
  • 如何解决“布局有超过 80 个视图,对性能不利”?

    我正在做一个有点复杂的布局 只是我无法修复 LINT 指示的错误 黑莓浏览次数超过 80 对性能不利 这是布局

随机推荐

  • Ionic2 - 如果超时则取消 Api 请求

    在我的应用程序中 我通过表单保存数据并调用 Api 进行相同的操作 为了检查它们的互联网连接是否缓慢 我在 ionic2 中使用超时 如下所示 savedata let headers new Headers headers set Con
  • 创建较慢的过渡。 TransitionManager.beginDelayedTransition();太快了

    我正在创建一个过渡 当单击按钮时 将执行以下方法 该方法改变了图像视图的大小和位置 并将其淡出 我在用TransitionManager beginDelayedTransition is too fast 放慢转变速度 但它仍然进展得太快
  • 为动态图像生成 CSS 精灵

    我有一个网页 其中包含大约 20 50 个动态图像 从非静态源提供的图像 这些图像通过基于请求 URL 的 servlet 提供 这会导致每个图像生成一个请求 从而导致性能下降 如果这些图像是静态的 我将创建一个 CSS 精灵并用一个请求替
  • 直线和水平线在断点处连接的分段回归

    我想做一个带有一个断点的分段线性回归 其中回归线的第二半有slope 0 有一些关于如何进行分段线性回归的示例 例如here https stackoverflow com questions 15874214 piecewise func
  • 如果我在 grails 中使用 groovy sql 类,它是否使用 grails 连接池?

    来自 sql 文档中的以下示例 如果我使用这两种方法之一在 Grails 服务类中创建 sql 实例 它会使用 Grails 连接池吗 它会参与任何交易功能吗 我需要自己关闭连接吗 还是会自动回到池子里 def db url jdbc hs
  • 如何在C中将RGB转换为HSL?

    如何在 C C 中将 RGB 转换为 HSL Note This is a short self answer I posted it here so people can find it quickly with a search 翻译代
  • 我可以在 asp.net 4.0 站点中托管 .net 2.0 虚拟目录吗?

    我们在 2 0 网站中运行 NET 4 0 虚拟目录没有任何问题 但相反的方式却给我们带来了一些问题 这是可以理解的 但是有没有办法解决这个问题呢 它们使用不同的应用程序池运行 我们可以让虚拟目录跳过网站的 web config 并直接转到
  • 从提升的进程正常执行进程

    是否有某种方法可以从提升的方式以非提升的方式启动流程 我的设置以提升的方式启动 当它完成时 它只会启动主应用程序 由于设置被提升 主进程也会被提升 这是不可取的 对此最好的解决方案是什么 这是一个问题 Vista Win7 似乎没有 API
  • Horizo​​ntalScrollView:带有 getView() 的 CustomAdapter 不会像 ListView 那样重用 ConvertViews

    在我过去的一个项目中 我实现了 时间选择器轮播 它基于一个HorizontalScrollView 用户可以在滚动该视图时选择时间 时间值是根据 X 偏移计算的HorizontalScrollView 我想在 github 上分享这个项目
  • 为什么我在访问最终局部变量时会出现 Java 中的 InstantiationException?

    我正在玩一些代码来制作 类似闭包 的构造 顺便说一句 不起作用 一切看起来都很好 但是当我尝试访问代码中的最终局部变量时 出现异常InstantiationException被抛出 如果我通过完全删除局部变量或使其成为类属性来删除对局部变量
  • 修复 iOS7 上主体背景随页面滚动的问题

    我使用以下 CSS 来创建固定的主体背景 除了新的 iOS7 之外 它几乎可以在所有浏览器上运行良好 后者的背景不再固定 它随页面滚动 知道如何解决这个问题吗 body background color 000 background ima
  • Coldfusion SQL 插入循环

    遇到一个问题 我想我可以看看是否有人对如何解决它有任何想法 基本上 我在单个变量下传递多个值 并且我想使用循环来提取每个单独的值并同时插入它 例如 ischecked 是我用来传入设备值的变量 如果我要选择两个设备 按提交并将变量 form
  • std::valarray 的运算符* 有什么问题?

    考虑以下 MCVE 其中我有两个值数组 其中w是两次v 在这里尝试一下 https godbolt org z JkXPNN include
  • 语音识别减少可能的搜索结果

    我开始使用 android sl4a 和 python 进行语音识别 到目前为止 它运行良好 我的用户应该用他的声音输入 0 到 9 之间的数字 有没有办法告诉android只搜索这些数字 从而减少识别时间 可能还有错误 不可以 您无法更改
  • Hello world WebGL 并行性示例

    围绕 WebGL 似乎有许多用于运行并行处理的抽象 例如 https github com MaiaVictor WebMonkeys https github com MaiaVictor WebMonkeys https github
  • 魔法记录添加对象,不同上下文错误

    我在我的应用程序中使用 Magical Record 并希望为用户添加添加 注释 的功能 注释 是 条目 的子项 我添加了这段代码 MagicalRecord saveWithBlock NSManagedObjectContext loc
  • 如何将 HashMap 作为 JSON 类型插入到 PostgreSQL 中?

    contacts数据结构为HashMap 我在用着PostgreSQL客户 Rust Postgres https github com sfackler rust postgres插入contact的键和值放入一个表中 然后我想从表中进行
  • 在 R 中上传超过 2.15 GB 的文件

    我有一个手动流程 通过curl 将 5 6 GB 文件上传到网络服务器 curl X POST data binary myfile csv http myserver port path to api 这个过程工作正常 但我很想使用 R
  • hg 将补丁应用于工作目录是什么意思?

    我一生中第一次尝试使用补丁 恢复损坏的存储库 所以我对这个概念不是很熟悉 尽管我读过一点 我正在使用 TortoiseHg 我已经创建了一个补丁 作为文件 切换到另一个存储库 并尝试导入它 我已要求 THg 将其导入存储库 其他选项是货架和
  • 我应该牺牲 innodb_buffer_pool_size/RAM 来为 query_cache_size 腾出空间吗?

    我有一个 16GB 的专用 Mysql 服务器数据库 我的 innodb buffer pool size 设置为 11GB 左右 我正在系统中实现查询缓存 其大小为 80mb 我应该从哪里创建这个空间 innodb buffer pool