mysql - 是否值得在 Mysql 上启用统计信息
问题描述
在 PhpMyAdmin 的“数据库”选项卡下有一个名为“启用统计信息”的链接。
- 在哪些情况下启用统计信息可以提高或降低服务器性能(CPU/RAM/IO/执行时间)
- 在哪些情况下启用统计信息可能会提供错误的结果
谢谢你。
解决方案
目前还不太清楚你到底在问什么,但我会试一试。
那里可以显示的统计数据需要额外的服务器处理时间来计算。我刚刚做了两次快速测试,一台服务器存储了 400 个表和 400 万行;另一个有 47GB 的数据,共 300 个表。两者的加载速度几乎与页面正常加载的速度一样快,两种情况下的延迟都只有几分之一秒。
此设置不是持久的,它仅在活动显示期间加载附加统计信息,并且数据库选项卡在下次查看时返回标准显示。
选择启用这些统计信息会为每个数据库和整个数据库服务器的总数提供附加信息。
表数、行数、数据量、索引量(索引?)、存储的总数据和开销是显示的附加列。
在哪些情况下启用统计信息可以提高或降低服务器性能
收集额外的统计数据永远不会提高服务器性能。如果您有大量数据,或者我猜这里的负载如此之大,以至于表无法锁定足够长的时间来计算统计信息,它会减少。
在哪些情况下启用统计信息可能会提供错误的结果
我不认为这是在这里警告或可能发生的事情。计算数据使用量的方式可能会不一致,尤其是在涉及开销或数据库有许多已删除记录时,因为即使删除行后 MySQL 在磁盘上使用的大小也不会自动减少。这可能导致 MySQL 显示较小的数据库大小但仍使用大量磁盘空间,但这不会通过 phpMyAdmin 显示为错误结果。除此之外,我不确定你在问什么关于错误结果的问题,如果我回答得不够好,也许你想澄清一下。
推荐阅读
- java - 在 int 范围内使用 int 字面量从 long 到 int 的有损转换
- git - GitLab 设置 ssh 密钥
- apostrophe-cms - 如何在'apos.area'内的html标签中包装撇号小部件?
- python - VSCode 1.39.x 和 Python 3.7.x:“ImportError:尝试在没有已知父包的情况下进行相对导入”- 在没有调试的情况下启动 (CTRL+F5))
- javascript - 如何从 Greasemonkey 脚本中取消选中 HTML 页面上的所有“md-checkboxes”(不是真正的复选框)?
- laravel - AWS 中的数据库连接有时会丢失
- r - Rmarkdown nocite 不显示 pdf 中的引文
- javascript - 这个 indexOf 查询不起作用是有原因的吗?
- python-3.x - 有没有办法将 spacy 训练的模型加载到 gensim 中?
- ansible - Ansible become 报告成功,但由于缺少权限,命令失败