MySQL 行格式:固定和动态之间的区别?

2024-04-10

MySQL 根据列数据类型将表的行格式指定为固定或动态。如果表具有可变长度列数据类型,例如 TEXT 或 VARCHAR,则行格式是动态的;否则,它是固定的。

我的问题是,两种行格式有什么区别?其中一个比另一个更有效率吗?


这种差异实际上只对 MyISAM 重要,其他存储引擎并不关心这种差异。EDIT :许多用户评论说 InnoDB 确实关心:链接 1 来自 steampowered https://dev.mysql.com/doc/refman/5.7/en/innodb-row-format.html, 链接 2 卡恩 http://www.mysqlperformanceblog.com/2010/02/09/blob-storage-in-innodb/.

使用固定宽度行的 MyISAM 有一些优点:

  1. 无行碎片:使用可变宽度的行可以将单个行分成数据文件中的多个部分。这会增加磁盘寻道并减慢操作速度。可以使用 OPTIMIZE TABLE 对其进行碎片整理,但这并不总是实用。

  2. 数据文件指针大小:在MyISAM中,有一个数据文件指针的概念,当需要引用数据文件时使用该指针。例如,当索引引用行实际存在的位置时,这会在索引中使用。对于固定宽度大小,该指针基于文件中的行偏移量(即,行为 1、2、3,无论其大小如何)。对于可变宽度,指针基于字节偏移量(即行可能是 1、57、163)。结果是,对于大型表,指针需要更大,这可能会增加表的开销。

  3. 在腐败的情况下更容易修复。由于每一行的大小相同,因此如果您的 MyISAM 表损坏,修复起来会容易得多,因此您只会丢失实际损坏的数据。对于可变宽度,理论上可变宽度指针可能会混乱,这可能会导致以错误的方式存储数据。

现在固定宽度的主要缺点是浪费更多空间。例如,您需要使用 CHAR 字段而不是 VARCHAR 字段,因此最终会占用额外的空间。

通常,您在格式上没有太多选择,因为它是根据架构决定的。但是,如果您只有几个 varchar 或单个 blob/文本来尝试对此进行优化,那么可能是值得的。例如,考虑将唯一的 varchar 转换为 char,或者将 blob 拆分到它自己的表中。

您可以在以下位置阅读更多相关信息:

http://dev.mysql.com/doc/refman/5.0/en/static-format.html http://dev.mysql.com/doc/refman/5.0/en/static-format.html

http://dev.mysql.com/doc/refman/5.0/en/dynamic-format.html http://dev.mysql.com/doc/refman/5.0/en/dynamic-format.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL 行格式:固定和动态之间的区别? 的相关文章

随机推荐

  • Asterisk AGI:如何获取或设置全局变量的值?

    我使用 Asterisk 1 8 和 PHP 来编写 AGI 脚本 EDIT 我正在努力从 AGI PHP 脚本中设置和获取全局变量的值 我可以设置通道变量 但不能设置全局变量 使用 PHPAGI 库 Tried Set varname v
  • Puppeteer 在非无头模式下打开一个空选项卡

    运行 puppeteer npm 的最新版本 0 13 0 并将参数传递给 puppeteer launch headless false chrome 以空页面作为第一个选项卡打开 并从第二个选项卡中的脚本打开实际页面 const pag
  • 尝试调整 2fs EB 卷大小失败 [已关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有一个 200GB 的 EBS 卷 正在尝试增加可用空间 我按照以下说明进行操作 http www hellersoftware com
  • Swift:通过 Twitter 分享文本

    所以基本上我正在制作一个事件应用程序 一切都很顺利 只是将活动分享到了 Twitter 我已经在互联网上搜索过 但我得到的只是使用我不想要的 Twitter 的本机应用程序 我想使用浏览器发推文 我已经实现了这个方法用于FB共享 任何想法都
  • terraform 资源创建 - this 关键字

    我在几个例子中发现了一种模式terraform代码在Github resource aws vpc this 我想知道关键字如何this与命名资源相比 提供了特殊的优势 我找不到哈希公司文档关于this关键词 https github co
  • 正则表达式:仅匹配一次

    我有一个包含多个 IP 地址和一些随机内容的字符串 例如像这样的 21 Jun 2018 01 15 38 0000 188 79 169 152 157 52 69 50 443 GET 157 52 69 30 157 52 69 10
  • C++:删除打印机队列

    我正在尝试从打印机中删除队列中的所有文件 我发现这看起来很简单 我尝试使用下面的代码删除队列 它可以编译 但 SetPrinter 返回 false 我收到的错误消息是 5 我尝试使用该方法将其解码为 正常 错误消息从这个问题 https
  • 是什么导致 Safari 中的音频播放缓慢/延迟?

    var audio new Audio data audio wav base64 UklGRoABAABXQVZFZm10IBAAAAABAAEAiBUAAIgVAAABAAgAZGF0YVwBAACHlqa1xNLg7vv Tk1LSk
  • 按 iframe 内的 Youtube 订阅表单按钮

    我正在搜索如何从 Youtube 订阅表单按下订阅按钮 但我没有找到任何可以帮助我的东西 我是 JS 新手 所以我希望你能帮助我 用于按下订阅按钮here http www youtube com subscribe widget p aa
  • 如何在 JavaScript 中模拟 target="_blank"

    当用户单击链接时 我需要更新数据库中的字段 然后在新窗口中打开请求的链接 更新没问题 但我不知道如何打开新窗口而不要求他们单击另一个超链接 a href http www mydomain com ReportID 1 target bla
  • 如何在 ASP.NET MVC 3 Intranet 应用程序中重新验证用户身份?

    该应用程序已经使用 Windows 集成安全性 而不是 Forms 我想要完成的是所谓的 逐步 身份验证 或针对以下情况的 强制重新身份验证 用户正在浏览网站做一些常见的 琐碎的事情 突然 用户必须执行敏感操作 例如授权 资源分配或确认汽车
  • iPhone开发与越狱

    我是 iPhone 开发新手 我们可以通过以下方式开发iphone应用程序 legal 越狱 如果我越狱了我的iPhone操作系统 之后我可以安装最新版本的iPhone操作系统吗 并从苹果网站再次使其合法 如果我开发越狱应用程序 我可以将其
  • .NET MVC:调用 RedirectToAction 传递模型?

    我有一个观点List aspx与班级绑定的Kindergarten 在控制器中 public ActionResult List int Id Kindergarten k from k1 in kindergartensRepositor
  • Android - 包括 GitHub 库 ActionBar PullToRefresh

    我在包含来自 GitHub 的库时遇到问题 这是图书馆 https github com chrisbanes ActionBar PullToRefresh https github com chrisbanes ActionBar Pu
  • 我正在尝试通过外部 api 从 json 数据获取键值对,并使用 Angular 和 TypeScript 显示它。我怎样才能实现这个目标?

    我想从我的 api 获取结果对象中的每个键值对以显示在我的前端上 即 类别 类型 难度 问题正确答案 我已正确设置服务和组件 我需要做的就是获取 json 并显示每一对 该方法名称称为 fetchQuestions 如下所示 我只需简单地以
  • 是否可以一次性增加 YouTube api 的配额?

    我正尝试将大约 4 000 个视频添加到 YouTube 播放列表中 使用基于成本的配额系统 我每天只能添加大约 200 个 这意味着我需要大约三周的时间来完成这个项目 此外 我需要添加的视频列表将继续增长 直到我最终确定播放列表 因为它在
  • CF10-jpg的文件格式

    在开发一个允许交换多个第三方应用程序的图像并从而为这些应用程序创建单独的 皮肤 的工具时 我偶然发现了一种 jpg 格式 我似乎无法找到任何合适的信息 当在十六进制编辑器中查看它时 它以标签 CF10 开头 搜索互联网只提供了一个能够处理此
  • 如何在 WAI 服务器中执行关闭命令?

    我想为我的 web 应用程序实现一个 正常关闭 命令 与我的第一直觉相反 即只是要求人们终止该进程 我的前两次尝试包括 liftIO exitSuccess E yield responseLBS statusOK G contentTyp
  • 颜色生成功能

    让我们考虑以下场景 一个可以生成从白色到红色 从白色到蓝色 从白色到粉色 从白色到橙色等代码颜色的函数 颜色代码采用 RGB 格式 值从 0 到 255 有任何想法吗 您能给我伪代码或此类算法的链接吗 听起来你在追求线性插值 http en
  • MySQL 行格式:固定和动态之间的区别?

    MySQL 根据列数据类型将表的行格式指定为固定或动态 如果表具有可变长度列数据类型 例如 TEXT 或 VARCHAR 则行格式是动态的 否则 它是固定的 我的问题是 两种行格式有什么区别 其中一个比另一个更有效率吗 这种差异实际上只对