Mysql 行格式 DYNAMIC 和 COMPACT 区别

news/2024/11/16 11:45:21/

MySQL的InnoDB存储引擎提供了多种行格式,其中DYNAMIC和COMPACT是两种常见的选择。这两种行格式在处理数据时有一些关键的区别,尤其是在管理大字段(如BLOB、TEXT和大的VARCHAR字段)方面。以下是DYNAMIC和COMPACT行格式的主要区别:

  1. 大字段存储

    • DYNAMIC:在DYNAMIC行格式中,对于BLOB、TEXT和大的VARCHAR字段,只有20个字节的指针直接存储在行中,指向实际数据的位置。如果字段内容较大,它会被存储在外部的溢出页中,而不是和行的其他部分一起存储在同一个页面上。
    • COMPACT:与DYNAMIC格式相比,COMPACT行格式会尝试将更多的字段内容直接存储在行中,包括大字段的一部分(最多768字节)。只有当字段大小超过这个限制时,剩余的数据才会被存储在外部页中。
  2. 空间效率

    • DYNAMIC:由于将大部分大字段数据存储在行外,DYNAMIC行格式可以提高页的空间利用率,特别是在表中包含大量大字段时。这有助于减少页分裂,并提高缓存效率。
    • COMPACT:尽管COMPACT格式尽量减少了元数据的使用,但由于它尝试在行内存储更多数据,因此在包含大量大字段的表中,它可能不如DYNAMIC格式空间利用率高。
  3. 性能

    • DYNAMIC:对于包含大量BLOB、TEXT或大VARCHAR字段的表,DYNAMIC格式通常可以提供更好的性能。通过将这些大字段数据存储在外部,减少了主数据页的大小,提高了数据检索速度。
    • COMPACT:对于不包含大量大字段或对于这些字段的访问不频繁的表,COMPACT格式可能会表现得足够好,因为它能够在一定程度上减少对外部页的依赖。
  4. 向后兼容性

    • DYNAMIC:DYNAMIC格式是一个相对较新的引入,专为提高大字段处理的效率而设计。
    • COMPACT:COMPACT格式在较早版本的MySQL中被引入,提供了与旧版本的兼容性。

总而言之,选择哪种行格式取决于特定的应用场景和数据特征。对于包含大量BLOB、TEXT或大VARCHAR字段的表,DYNAMIC格式可能是更好的选择,因为它提供了更高的空间效率和性能优势。而对于不涉及这些大字段的表,或在兼容性是主要考虑因素的情况下,COMPACT格式可能是一个合适的选择。


http://www.ppmy.cn/news/1456106.html

相关文章

类和对象-Python-第一部分

初识对象 使用对象组织数据 class Student:nameNonegenderNonenationalityNonenative_placeNoneageNonestu_1Student()stu_1.name"林军杰" stu_1.gender"男" stu_1.nationality"中国" stu_1.native_place"山东" stu_1.age31print(stu…

C++进阶之路:何为引用、内联函数、auto与指针空值nullptr关键字

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…

森林消防泵操作指南:守护绿色的必备技能/恒峰智慧科技

在广袤无垠的森林中,每一片绿叶都承载着生命的希望。然而,当火焰无情地吞噬这片生机时,我们需要一种强大的力量来与之抗衡。这时,森林消防泵便成为了我们的守护者,掌握其操作技巧,更是每一位热爱大自然者的…

《Video Mamba Suite》论文笔记(4)Mamba在时空建模中的作用

原文翻译 4.4 Mamba for Spatial-Temporal Modeling Tasks and datasets.最后,我们评估了 Mamba 的时空建模能力。与之前的小节类似,我们在 Epic-Kitchens-100 数据集 [13] 上评估模型在zero-shot多实例检索中的性能。 Baseline and competitor.ViViT…

C++ | 类和对象(上)

目录 什么是类 类的介绍 struct在两种语言中的有何区别 私有变量命名注意点 类的作用域 类的声明定义分离 类的访问限定符 封装 类的实例化 类对象的存储 this指针 一道this指针相关的王炸题: 结语 什么是类 类的介绍 我们举一个日常生活中的例子&…

【开发技巧 | 第三篇】windows端口被占用及解决方法

文章目录 3.windows端口被占用及解决方法3.1查看指定端口被占用情况3.2根据PID查看对应的进程3.3根据PID杀死对应的进程3.4小结 3.windows端口被占用及解决方法 3.1查看指定端口被占用情况 netstat -aon|findstr 7090或 netstat -aon|findstr "7090"最后一列数字为…

优雅处理返回信息状态码:Result对象在Spring Boot中的应用

前言 在开发过程中,处理返回的信息状态码是一个重要的问题,尤其是在大型项目中。为了统一处理这些状态码,我在Spring Boot中创建了一个名为Result的Java对象,用于封装返回的信息和状态码。在本文中,我将分享如何实现这…

Agent AI智能体:我们的生活即将如何改变?

你有没有想过,那个帮你设置闹钟、提醒你朋友的生日,甚至帮你订外卖的智能助手,其实就是Agent AI智能体?它们已经在我们生活中扮演了越来越重要的角色。现在,让我们一起想象一下,随着这些AI智能体变得越来越…