我应该牺牲 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 腾出空间吗? 的相关文章

  • 内容长度标头与分块编码

    我正在尝试权衡设置的利弊Content LengthHTTP 标头与使用分块编码从我的服务器返回 可能 大文件的比较 使用持久连接需要其中之一来符合 HTTP 1 1 规范 我看到了的优点Content Length标头是 下载对话框可以显
  • WAMP/MySQL 错误语言不正确

    我已经多次重新安装WAMP 搜索了数百页 但仍未解决此问题 我查看了 phpmyadmin 配置文件 设置 cfg Lang en utf 8 卸载了多次 如上所述 似乎没有运气 任何帮助 将不胜感激 要更改 MySQL 在报告时使用的语言
  • 使用循环计算 Python 字典中元素的有效方法

    我有一个值列表 我希望在循环期间计算每个类的元素数量 即 1 2 3 4 5 mylist 1 1 1 1 1 1 2 3 2 2 2 2 3 3 4 5 5 5 5 mydict dict for index in mylist mydi
  • ERROR 188 (HY000): FTS 查询超出结果缓存限制 mysql

    我的表的文本列上有全文索引 约有 1100 万行 表结构 CREATE TABLE review id int 11 NOT NULL AUTO INCREMENT comments text COLLATE utf8mb4 unicode
  • uwsgi + Django REST框架:空闲时间后很少有缓慢的请求

    我正在运行 Django REST 框架 白天每分钟的请求率相当低 我注意到一个我无法解释或重现的问题 每天 在夜间或清晨 当我的 RPM 接近于零时 我会收到 1 10 个超慢的请求 我的平均响应时间100 到 200 毫秒之间 但是这个
  • 如何正确安装mysqlconnecter java?

    上网冲浪后 我意识到我应该在系统环境变量中设置类路径连接器 jar 文件的路径文件我这样做了 并在命令行中输入此命令我有这个 C Users User gt echo classpath D classpath mysql connecto
  • 如何在 MySQL 中存储工作日列表?

    我正在使用编写一个应用程序PHP我需要存储一个独特的工作日列表MySQL 在应用程序中 我有一个数组来存储工作日 如下所示 days Wed Thu Sat 我知道我可以使用SET列 但我不想使用这种类型 因为它与我正在使用的框架 Lara
  • 为什么 Chrome 审核建议我最小化 Cookie 大小?

    如何最小化请求的 cookie 大小 Chrome 似乎 警告我 我的 cookie 大小为 41B 这根本不是很多 但是它警告我有什么原因吗 这是一个 PHPSESSID cookie 我真的不知道如何最小化它 有任何想法吗 我的请求响应
  • Python:多重分配与单独分配速度

    我一直在寻求从我的代码中挤出更多的性能 最近 在浏览时这个 Python 维基页面 https wiki python org moin PythonSpeed 我发现了这个说法 多重分配比单独分配慢 例如 x y a b 比 x a y
  • ECHO MYSQL 结果显示空白页 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我知道这一定很简单 但我做不到 我需
  • FIND_IN_SET 具有多个值[重复]

    这个问题在这里已经有答案了 我想从数据库字段搜索多个值 以下是我的查询 SELECT FROM tablename WHERE FIND IN SET 12 13 15 15 category id 我如何搜索它对我不起作用 FIND IN
  • 如何在 mysql 或 JDBC 的表中自动插入外键引用?

    我正在使用MySQL 我的问题是如何自动将新添加的行插入外键表中 一个例子可以澄清我的问题 我有两个表 员工 和 薪水 CREATE TABLE Employee emp id int NOT NULL AUTO INCREMENT nam
  • PDO 如何在执行 rollBack() 函数之前回滚查询?

    这是我的脚本 try dbh con gt beginTransaction stmt1 dbh conn gt prepare UPDATE activate account num SET num num 1 stmt1 gt exec
  • 无法在 mysql 表中的值中使用破折号(-)[重复]

    这个问题在这里已经有答案了 我一直在尝试从 python 将数据插入 MYSQL 表 我的sql表中的字段是id token start time end time和no of trans 我想存储使用生成的令牌uuid4在令牌栏中 但由于
  • 如何更改Mysql的连接排序规则

    如何更改 mysql 数据库的连接排序规则 我在 ubuntu 14 中使用 Mysql workbench 5 5 和 mysql 5 5 当我执行存储过程时 出现错误 错误代码 1267 操作 的排序规则 utf8 general ci
  • 在 EXISTS 查询中使用 LIMIT 有什么意义吗?

    添加一个是否有任何性能优势LIMIT to an EXISTS查询 或者 MySQL 会自行应用限制吗 Example IF EXISTS SELECT 1 FROM my table LIMIT 1 can this improve pe
  • 在多个数据库的主目录中配置 .my.cnf 不起作用。适用于单个数据库

    这是我的 my cnf 文件 client user user1 password somePasswd1 database someDb client2 user user1 password somePassed2 database s
  • MYSQL数据库删除行后需要进行后期优化

    我有一个当前为 10GB 的日志表 它有很多过去两年的数据 我真的觉得目前我不需要那么多 我是否错误地认为在表中保存多年的数据不好 表越小越好 我的桌子都有 MYISAM 引擎 我想删除 2014 年和 2015 年的所有数据 很快我就会删
  • PHP strtotime返回Mysql UNIX_TIMESTAMP的不同值

    我在 stackoverflow 上搜索过帖子 发现了一些类似的帖子 但我认为这是一篇不同的帖子 我的 PHP 和 Mysql 服务器的时区全部设置为 UTC 在表中我使用时间戳字段 值为 2010 11 08 02 54 15 我使用这样
  • SQL查询:按字符长度排序?

    是否可以按字符总数对sql数据行进行排序 e g SELECT FROM database ORDER BY data length 我想你想用这个 http dev mysql com doc refman 5 0 en string f

随机推荐

  • 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