当前位置: 首页 > 面试题库 >

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

胡俊弼
2023-03-14
问题内容

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

我的问题是,两行格式之间有什么区别?一个比另一个更有效吗?


问题答案:

差异实际上仅对MyISAM至关重要,其他存储引擎并不关心该差异。 编辑:
许多用户评论InnoDB确实在乎:链接1由steampowered,链接2由Kaan。

使用具有固定宽度的行的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/dynamic-
format.html



 类似资料:
  • 本文向大家介绍静态绑定和动态绑定之间的区别,包括了静态绑定和动态绑定之间的区别的使用技巧和注意事项,需要的朋友参考一下 在本文中,我们将了解静态绑定和动态绑定之间的区别。 静态绑定 它在编译时解决。 它使用类和字段的类型。 它使用私有,最终和静态方法和变量。 示例:重载 动态绑定 在运行时解决。 虚方法使用此技术。 它使用对象来解决绑定。 示例:方法覆盖。

  • 本文向大家介绍静态和动态网页之间的区别,包括了静态和动态网页之间的区别的使用技巧和注意事项,需要的朋友参考一下 在互联网冲浪的背景下,网络浏览器(客户端)和网络服务器(服务器)之间存在两方通信。现在,为了规范这种通信,有一些协议(其中最常见的是HTTP协议)允许浏览器在其中进行通信向服务器发送HTTP请求,然后服务器将HTTP响应发送到浏览器。 现在,根据发送到浏览器的响应类型,我们可以将该响应分

  • 本文向大家介绍静态和动态测试之间的区别,包括了静态和动态测试之间的区别的使用技巧和注意事项,需要的朋友参考一下 众所周知,测试是任何应用程序或软件交付过程中最重要的阶段,因为测试不仅可以验证应用程序的质量,还可以为开发人员提供改进其产品的机会。 每个应用程序都以某种高级或低级语言进行开发,这意味着已经为其开发编写了一些代码,因此,在为应用程序编写的代码执行的基础上,存在测试的分类,即静态测试和动态

  • 本文向大家介绍静态SQL和动态SQL之间的区别,包括了静态SQL和动态SQL之间的区别的使用技巧和注意事项,需要的朋友参考一下 静态SQL 静态SQL是指那些固定且可以硬编码到应用程序中的SQL语句。由于静态sql是固定查询,因此可以分析和优化这些语句,并且出于安全目的不需要任何特定处理。 动态SQL 动态SQL是指根据用户输入动态生成并在应用程序中运行的SQL语句。Dynamic Sqls帮助开

  • 本文向大家介绍MySQL和MongoDB之间的区别,包括了MySQL和MongoDB之间的区别的使用技巧和注意事项,需要的朋友参考一下 MySQL是一个关系数据库。MongoDB是NoSQL数据库。 以下是MySQL和MongoDB之间的重要区别。 序号 键 的MySQL MongoDB 1 拥有/开发 MySQL由Oracle拥有。 MongoDB由MongoDB Inc.开发。 2 数据存储

  • 问题内容: 我需要在网页上显示一个大表,并且需要防止第一列和第一行滚动。 我想动态设置此表的垂直大小(在某些静态大小的页眉/页脚页面内容之间),以使其尽可能高,而不必强制浏览器窗口具有垂直滚动条。 这仅需要在使用所有/任何版本的现代浏览器中工作:html,css,javascript,jquery 重要顺序: 具有许多表单字段,隐藏值,行的javascript折叠等的复杂表,稍后将添加 第一行将有