资讯专栏INFORMATION COLUMN

技术分享 | MySQL 8 和 MySQL 5.7 在小型设备的内存消耗分析

ZweiZhao / 833人阅读

摘要:如果我们查看命令的输出,我们会看到这也展示出使用的更多常驻内存和虚拟内存。特别是可怕的虚拟内存,因为它远远超过这些上可用的物理内存。当然,虚拟内存使用是现代应用程序实际内存需求的一个很差的指标,但它确实证实了更高的内存需求这个事。

作者:Peter Zaitsev
翻译:管长龙

虽然我们经常在较大规模的系统上运行 MySQL ,但我们常常在最小的云实例上运行 MySQL,或者只在我们的笔记本电脑上运行它。在这些情况下,MySQL 8 和 MySQL 5.7 的内存消耗非常重要。
在比较 MySQL 8 和 MySQL 5.7 时,您应该知道 MySQL 8 会使用更多内存。对运行相同轻量级工作负载的 MySQL 8 和 MySQL 5.7(实际上它们是 Percona Server 版本)的 1GB VM 进行基本测试。

我看到以下 vmstat 输出:
MySQL 5.7 vmstat 输出

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
4  0  65280  71608  58352 245108    0    0  2582  3611 1798 8918 18  9 11 33 30
4  0  65280  68288  58500 247512    0    0  2094  2662 1769 8508 19  9 13 30 29
3  1  65280  67780  58636 249656    0    0  2562  3924 1883 9323 20  9  7 37 27
4  1  65280  66196  58720 251072    0    0  1936  3949 1587 7731 15  7 11 36 31

MySQL 8.0 vmstat 输出

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r  b   swpd   free   buff  cache   si   so    bi    bo   in    cs us sy id wa st
9  1 275356  62280  60832 204736    0    0  2197  5245 2638 13453 24 13  2 34 27
3  0 275356  60548  60996 206340    0    0  1031  3449 2446 12895 25 11 10 28 26
7  1 275356  78188  59564 190632    0    1  2448  5082 2677 13661 26 13  6 30 25
4  1 275356  76516  59708 192096    0    0  2247  3750 2401 12210 22 12  4 38 24

正如您所看到的,MySQL 8 使用了大约 200MB 的 swap 分区,并且使用更少的系统缓存,被分配更多内存。

如果我们查看“top”命令的输出,我们会看到:
MySQL 5.7

MySQL 8.0

这也展示出 MySQL8 使用的更多常驻内存和虚拟内存。特别是“可怕的”虚拟内存,因为它远远超过这些 VM 上可用的 1GB 物理内存。当然,虚拟内存使用(VSZ)是现代应用程序实际内存需求的一个很差的指标,但它确实证实了更高的内存需求这个事。

实际上,正如我们从 “vmstat” 输出中所知道的那样,即使没有太多的“空间”,MySQL 8 和 MySQL 5.7 都不会在低负载下使用 swap 分区。如果您有多个连接或希望在同一个 VM 上运行某些应用程序,则可以使用 swap(如果未启用交换,则可能导致 OOM)。

这是一个有趣的实验,能看看我有多少可以驱动 MySQL 5.7 和 MySQL 8 的内存消耗。
以下是我用于此测试的配置:

[mysqld]
innodb_buffer_pool_size=256M
innodb_buffer_pool_instances=1
innodb_log_file_size=1G
innodb_flush_method=O_DIRECT
innodb_numa_interleave=1
innodb_flush_neighbors=0
log_bin
server_id=1
expire_logs_days=1
log_output=file
slow_query_log=ON
long_query_time=0
log_slow_rate_limit=1
log_slow_rate_type=query
log_slow_verbosity=full
log_slow_admin_statements=ON
log_slow_slave_statements=ON
slow_query_log_always_write_time=1
slow_query_log_use_global_control=all
innodb_monitor_enable=all
userstat=1

总结
在开发环境中迁移到 MySQL 8 时,请记住,使用相同的设置需要比 MySQL 5.7 配置更多的内存。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/110741.html

相关文章

  • MySQL性能基准测试对比:5.7 VS 8.0

    摘要:翻译目的在于传递更多全球最新数据库领域相关信息,并不意味着腾讯云数据库产品团队赞同其观点或证实其内容的真实性。不得擅自使用腾讯云数据库团队的名义进行转载,或盗用腾讯云数据库团队名义发布信息。 本文由云+社区发表作者:数据库 版权声明:本文由腾讯云数据库产品团队整理,页面原始内容来自于severalnines英文官网,若转载请注明出处。翻译目的在于传递更多全球最新数据库领域相关信息,并...

    Cheng_Gang 评论0 收藏0
  • MySQL性能基准测试对比:5.7 VS 8.0

    摘要:翻译目的在于传递更多全球最新数据库领域相关信息,并不意味着腾讯云数据库产品团队赞同其观点或证实其内容的真实性。不得擅自使用腾讯云数据库团队的名义进行转载,或盗用腾讯云数据库团队名义发布信息。 本文由云+社区发表作者:数据库 版权声明:本文由腾讯云数据库产品团队整理,页面原始内容来自于severalnines英文官网,若转载请注明出处。翻译目的在于传递更多全球最新数据库领域相关信息,并...

    moven_j 评论0 收藏0
  • MySQL性能诊断实践之系统观测工具

    摘要:摘要今天我带来的分享是系统观测工具,有所关联但不涉及自身的这样一个话题。所以今天我想向大家介绍的是四部分内容慢的诊断思系统观测工具介绍脚本集使用举例使用方法限制第一部分,我们向大家介绍一下常规的诊断慢的思路,也是业界的常规思路。 本文根据黄炎在2018年8月3日在【2018 MySQL技术交流大会 · 上海站】现场演讲内容整理而成。 showImg(https://segmentfau...

    songze 评论0 收藏0
  • 如何入门 MySQL

    摘要:是最流行的关系型数据库管理系统之一,在应用方面,是最好的,关系数据库管理系统应用软件之一。是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。 前言: 关于如何入门MySQL,后台有好多同学咨询我,可能部分读者刚开始学习MySQL,我前面发的文章对部分同学来说暂时接触不到。原本写技术文章的目的是记录自己的工作...

    Rocture 评论0 收藏0
  • 单表60亿记录等大数据场景MySQL优化运维之道 | 高可用架构

    摘要:此文是根据杨尚刚在高可用架构群中,针对在单表海量记录等场景下,业界广泛关注的问题的经验分享整理而成,转发请注明出处。杨尚刚,美图公司数据库高级,负责美图后端数据存储平台建设和架构设计。 此文是根据杨尚刚在【QCON高可用架构群】中,针对MySQL在单表海量记录等场景下,业界广泛关注的MySQL问题的经验分享整理而成,转发请注明出处。 杨尚刚,美图公司数据库高级DBA,负责美图后端数据...

    xcc3641 评论0 收藏0

发表评论

0条评论

阅读需要支付1元查看
<