MySQL表空间管理与优化(8/16)

这篇具有很好参考价值的文章主要介绍了MySQL表空间管理与优化(8/16)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

表空间管理和优化

  1. innodb_file_per_table参数(此参数在分区表章节中还会出现):

    • 这个参数决定了InnoDB表数据的存储方式。当参数设置为ON时,每个InnoDB表的数据会单独存储在一个以.ibd为后缀的文件中,这有利于管理和回收空间。从MySQL 5.6.6版本开始,默认值就是ON。
    • 这个参数设置为 OFF 表示的是,表的数据放在系统共享表空间,也就是跟数据字典放在一起;就是information_schema。

    一个表单独存储为一个文件更容易管理,而且在你不需要这个表的时候,通过 drop table 命令,系统就会直接删除这个文件。而如果是放在共享表空间中,即使表删掉了,空间也是不会回收的。所以参数推荐为ON。

  2. 空洞的产生

    • 当删除表中的数据时,InnoDB引擎会标记记录为删除,而不是立即释放空间。这意味着即使删除了表中一半的数据,表文件的大小可能不会变化。

    • 删除数据或插入数据(导致数据页分裂)时,可能会在数据页上产生空洞。空洞是未被使用但已被标记为可复用的空间。大量增删改操作的表可能会存在很多空洞。

    • 要收缩表空间,可以通过重建表来实现。这涉及创建一个新表,将原表中的数据按主键ID递增顺序重新插入新表,从而消除空洞。

  3. 重建表的方法

  4. 使用ALTER TABLE命令

    • 这是最常用的重建表的方法。通过指定ENGINE=InnoDB,你可以让MySQL重新创建表的物理存储。这个过程会创建一个新的临时表,将原表中的数据按主键ID递增顺序导入新表,然后删除原表并将新表重命名为原表的名字。例如:
      ALTER TABLE table_name ENGINE=InnoDB;
      
    • 在MySQL 5.6及更高版本中,这个过程通常是Online的,也就是说,在重建表的过程中,可以继续对表进行增删改操作。
  5. 使用OPTIMIZE TABLE命令

    • 这个命令是ALTER TABLE ... ENGINE=InnoDB的别名,它会尝试优化表的存储。在某些情况下,这可能意味着重建表,但行为可能因MySQL版本和表的具体情况而异。例如:
      OPTIMIZE TABLE table_name;
      
    • 这个命令在执行时会获取表级锁,可能会影响业务操作。
  6. 使用ALTER TABLE ... ALGORITHM=COPY

    • 当你需要强制执行一个非在线的表重建时,可以使用这个选项。这会导致MySQL创建一个新表,并将数据从原表复制到新表中,然后删除原表并重新命名新表。例如:
      ALTER TABLE table_name ALGORITHM=COPY;
      
    • 这种方式不是在线的,可能会对业务操作产生影响。
  7. 使用gh-ost工具

  • 对于大型生产数据库,建议使用gh-ost(GitHub开源的在线DDL工具)来进行表重建。gh-ost允许你在不锁定整个表的情况下进行DDL操作,从而减少对业务的影响。
  1. 使用ANALYZE TABLE命令
    • 虽然这个命令不会重建表,但它可以更新表的索引统计信息,有助于优化查询性能。例如:
      ANALYZE TABLE table_name;
      
    • 这个操作通常很快,并且对业务操作的影响很小。

在进行表重建操作时,需要考虑操作对业务的影响。Online DDL方法(如ALTER TABLEOPTIMIZE TABLE)通常更适合生产环境,因为它们允许在重建过程中继续进行业务操作。对于大型表,应该在业务低峰期进行操作,并考虑使用gh-ost等工具来最小化对业务的影响。同时,确保在执行这些操作之前备份数据,以防万一出现问题。

作者与版本更新计划

感谢您的阅读与支持!本文是《MySQL实战与优化》专栏中的一篇精选文章,该专栏共包含16篇文章,旨在为您提供实战中可直接应用的宝贵知识。

关注公众号【数舟】,获取作者最新动态,公众号后台回复【mysql2024】,即可免费领取这份包含16篇文章的完整的PDF专栏!

MySQL表空间管理与优化(8/16),MySQL实战与优化指南v1.0,mysql,数据库

目前版本为v1.0,更新时间2024年4月10日。后续此文档更新与版本发布会同步到知识星球【数舟】中。

MySQL表空间管理与优化(8/16),MySQL实战与优化指南v1.0,mysql,数据库

知识整理与创作不易,感谢大家理解与支持!

加入知识星球,您将获得更多独家内容、专栏更新以及与行业内专家和同行的互动交流机会。我们在知识星球等您,一起探索MySQL的深层次世界!

星球内目前包含300+精品文章,内容涵盖大数据、MySQL、运维、Python、调优、经验分享、数据分析等方向内容,会根据大家的学习需求更新更多方向的内容。

🔗 立即扫描下方二维码,加入知识星球,与行业精英共同成长,开启您的专属学习之旅!

MySQL表空间管理与优化(8/16),MySQL实战与优化指南v1.0,mysql,数据库文章来源地址https://www.toymoban.com/news/detail-849120.html

到了这里,关于MySQL表空间管理与优化(8/16)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于MYSQL的论坛管理系统数据库设计项目实战

    说明:这是一个数据库课程设计实战项目(附带 代码+文档+视频讲解 ),如需 代码+文档+视频讲解 可以直接到文章最后获取。 项目背景 随着互联网行业的发展,各种论坛纷纷而来。在论坛系统中,可让用户注册成为论坛会员,取得发表言论的资格,同时也需要论坛信息管理

    2024年02月11日
    浏览(57)
  • 数据库实战:基于Tkinter+MySQL的学生成绩管理系统

    用Python和数据库一起实现了一个简单的学生成绩管理系统,一起来看看吧! 本篇博客主要分为两大部分,数据库部分和Python程序设计部分,先将数据导入到数据库中,随后通过python程序设计连接到数据库,实现一系列的操作。 代码下载地址:https://download.csdn.net/download/m0_68

    2024年02月03日
    浏览(56)
  • 轻松入门MySQL:深入学习数据库表管理,创建、修改、约束、建议与性能优化(3)

    在项目中,正确设置数据表的限定条件是数据存储过程中的关键一步。我们频繁需要创建和修改表以管理各种业务数据。让我们深入学习创建和修改数据表的方法,以产品信息表( product_info )为例。 创建数据表 首先,让我们了解产品信息表的结构: product_id product_name cate

    2024年02月20日
    浏览(56)
  • 查询数据库空间(mysql和oracle)

    1.查看数据库表空间文件: 2.查看所有表空间的总容量: 3.查看数据库表空间使用率 4.1.查看表空间总大小、使用率、剩余空间 4.2.查看表空间使用率(包含temp临时表空间) 5.查看具体表的占用空间大小 1.更改表空间的dbf数据文件分配空间大小 2. 为表空间新增一个数据文件(表空间

    2024年02月05日
    浏览(45)
  • mysql语句查看数据库表所占容量空间大小

         六. 查看所有产生碎片的表 查看某个表的碎片大小 SHOW TABLE STATUS LIKE \\\'表名\\\'; 查询结果中的\\\'Data_free\\\'字段的值就是碎片大小。 7. 清理表碎片

    2024年02月11日
    浏览(41)
  • Camunda8微服务流程引擎搭建实战 -- camunda-identity接入keycloak,使用mysql数据库以OpenID Connect的方式实现用户的权限管理

    准备需要: docker最新版,camunda官方建议使用容器且最好能使用k8s,而且jar包启动失败时不能停止 mysql8.0+,keycloak默认使用postgresql,我不会 提前启动好其他组件,es,tasklis,operate,zeebe,偷个懒,我使用的jar包运行,也可以容器 组件下载地址,版本8.3.4 因为容器通信的问题(应该是通信/网络的

    2024年01月19日
    浏览(53)
  • MySQL数据库干货_16—— SQL99标准中的查询

    SQL99标准中的查询 MySQL5.7 支持部分的SQL99 标准。 SQL99中的交叉连接(CROSS JOIN) 示例: 使用交叉连接查询 employees 表与 departments 表。 SQL99中的自然连接(NATURAL JOIN) 自然连接 连接只能发生在两个表中有相同名字和数据类型的列上。如果列有相同的名字,但数据类型不同,NATURAL J

    2024年02月06日
    浏览(61)
  • 基于php+mysql的一个开源IT资产管理系统——CAT:v1.0.5

    来自作者的一段为提高管理效率,良好发展开源的理想。       来一杯咖啡与茶,为 IT 运维从业者减轻管理负担,提升管理效率,从繁重无序的工作中解压出来,利用剩余时间多喝一杯休息一下。 这是一个专为 IT 运维从业者打造的一站式解决方案平台,包含资产管理、工单

    2024年02月04日
    浏览(54)
  • 一文搞定Mysql+Navicat16长期免费直连数据库安装教程

    一、Mysql安装包的下载 这里下载的是mysql8版本 第一个安装包比较小, 第二个安装包比较大, 因为包含调试工具,我这里下载的是第一个。 二、解压并配置安装目录 这里浏览器默认的下载路径是TempEdgeDownload,把解压后的文件夹移动到了develop_tools文件目录下(安装目录) 三、添

    2024年02月12日
    浏览(44)
  • MySQL数据库——MySQL优化服务器,提高MySQL的运行速度!

    MySQL是一种广泛使用的关系型数据库管理系统,优化MySQL服务器可以显著提高数据库的性能和运行速度。在下面的回答中,我将介绍一些常见的MySQL优化策略和技术,以帮助提高MySQL服务器的性能。 1、优化数据库设计: 正确设计数据库结构,使用适当的数据类型、索引和约束

    2024年02月07日
    浏览(64)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包