Mysql:什么是碎片表,为什么要对它们运行 OPTIMIZE?

标签 mysql optimization

最近我们开始优化一个从未遵循任何标准的数据库。 我们想做以下事情。

    clean up of unused tables.
    optimizing data types and indexes.
    tuning slow queries. 
    evaluating my.cnf configurations with mysqltuner.pl and similar ones

在这个过程中,我遇到了优化碎片表。 这个碎片表是什么,这将如何影响功能和性能。 为什么我应该在这些表上运行 OPTIMIZE...?

我相信这根本不会影响功能。如果不对请指正。

预先感谢您的回复。 问候, 乌日

最佳答案

当您删除记录(或更新它们以变小)时,表中将出现“空洞”,即空数据 block 。如果新数据适合这些空洞,它们将被填充,但根据您使用表格的方式,可能会剩余大量浪费的空间。这并不好,因为您现在需要从磁盘读取更多 block 以获得相同数量的有用信息。

在这些碎片表上运行优化命令将四处移动记录以消除表中的漏洞。

在进行大量维护或更新操作(例如批量删除)之后,这样做通常是个好主意。

关于Mysql:什么是碎片表,为什么要对它们运行 OPTIMIZE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9987882/

相关文章:

Python 数据结构开销/性能

javascript - 优化JS函数getclassname

regex - 我以一种效率低下的方式使用 Python 正则表达式

Java 列表过滤和查找第一个/查找最后一个

mysql - 如何统计从指定行开始的行数?

c# - 无法在 x64 位 PC 上运行 Windows 应用程序

MYSQL - 条件列(如果行存在)否则默认为第一个返回

android - 优化 Android/iOS 设备上的巨大 VBO 绘图

php - 允许 MySQL 以 utf8mb4 编码存储表情符号吗?

mysql - 如何编写 HQL 查询