【问题标题】:unused data in mysql myisam storage enginemysql myisam 存储引擎中未使用的数据
【发布时间】:2013-07-12 21:14:45
【问题描述】:

我试图了解 MyISAM 如何物理存储其记录。 在 MyISAM 存储引擎的可变大小记录中,每条记录后面都有一些未使用的数据。保留多少字节作为未使用的数据? MyISAM 是否使用了任何特定的算法?

编辑:我必须在这里问另一个问题。插入新记录时,是否会在该记录的末尾保留任何可用空间,然后再开始下一条记录以供将来使用?

【问题讨论】:

  • 查看此链接以获得很好的答案stackoverflow.com/questions/16711983/…
  • 是的,我读过那个答案,但它没有谈到引擎如何管理每条记录的未使用数据部分。
  • “未使用的数据”是由于删除记录或更新具有较短值的可变长度字符串而产生的。
  • @eggyal:你的意思是当 myisam 插入一条新记录时,它不会在该记录的末尾为未使用的数据保留任何空间?
  • 我不会发誓,但这肯定是我对Dynamic Table CharacteristicsMyISAM Record Structure 的解释。为了更加确定,需要深入研究来源。

标签: mysql myisam


【解决方案1】:

eggyal 说的是真的:“未使用的数据是由于删除记录或更新具有较短值的可变长度字符串而产生的”。

这也意味着,除非您“清空”您的数据库,否则每条新记录都会占用该空闲空间,即使该记录比可用空间长。根据记录的保存方式,每条记录都有不同的块类型。

如果记录长于可用空间,它将占用所有空间,并“寻找”其他未使用的数据,直到记录完全写入。

如果没有未使用的数据,则在最后写入记录。

【讨论】:

    猜你喜欢
    • 2012-05-04
    • 2016-12-23
    • 1970-01-01
    • 1970-01-01
    • 2011-09-07
    • 1970-01-01
    • 2011-07-17
    • 2019-01-14
    • 2011-03-25
    相关资源
    最近更新 更多