数据库的行格式ROW_FORMAT

博客介绍了MySQL中Row Format行格式,即数据记录在磁盘的物理存储方式。针对InnoDB存储引擎,常见行格式类型有Compact、Redundant、Dynamic和Compressed,后续内容待续。

一 概述

       在MySQL中,所谓Row Format行格式是指数据记录(或者称之为行)在磁盘中的物理存储方式。具体地,对于InnoDB存储引擎而言,常见的行格式类型有Compact、Redundant、Dynamic和Compressed。

      细节待续

### 关于ROW_FORMAT=DYNAMIC与ROW_FORMAT=COMPRESSED的区别及用法 #### 存储格式概述 MySQL 中的 `ROW_FORMAT` 定义了表数据在磁盘上的存储方式。不同的格式会影响性能、压缩效率以及内存使用情况。以下是两种常见格式的关键特性及其差异。 --- #### 动态格式 (`ROW_FORMAT=DYNAMIC`) 动态格式允许 BLOB 和 TEXT 类型的数据存储在独立的页中,而不是直接嵌入到主记录中。这种方式可以减少单条记录的大小,从而提高查询性能并降低碎片化风险[^4]。 - **优点** - 支持较大的字段长度而不影响主记录大小。 - 减少页面溢出的可能性,提升 I/O 性能。 - 更适合处理包含大对象(BLOB/TEXT)的场景。 - **缺点** - 不提供内置的压缩功能,因此占用更多的磁盘空间。 - **适用场景** - 数据库中有大量 BLOB 或 TEXT 字段的应用程序。 - 需要频繁更新或删除操作的情况。 ```sql CREATE TABLE example ( id INT PRIMARY KEY, data MEDIUMBLOB ) ENGINE=InnoDB ROW_FORMAT=DYNAMIC; ``` --- #### 压缩格式 (`ROW_FORMAT=COMPRESSED`) 压缩格式通过算法减小每条记录的实际物理尺寸,从而节省磁盘空间。它适用于读密集型工作负载,在写入时可能会带来额外开销。 - **优点** - 显著减少磁盘占用量。 - 提高缓存命中率,因为更多数据能够被加载至缓冲池中。 - **缺点** - 写入速度较慢,由于需要实时计算压缩后的表示形式。 - 查询复杂度增加,尤其是涉及解压的操作可能消耗 CPU 资源。 - **适用场景** - 存储历史数据分析结果或其他只读数据集。 - 对成本敏感的大规模部署环境。 ```sql CREATE TABLE logs ( log_id BIGINT AUTO_INCREMENT PRIMARY KEY, message LONGTEXT NOT NULL ) ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8; ``` > 注:当指定 `KEY_BLOCK_SIZE` 参数时,会进一步调整索引键值所使用的块大小单位字节数。 --- #### 主要区别总结表格 | 特性 | DYNAMIC | COMPRESSED | |---------------------|----------------------------------|-----------------------------------| | 是否支持外部存储 | 是 | 否 | | 默认压缩 | 无 | 开启 | | 磁盘利用率 | 较低 | 较高 | | 更新/插入性能 | 较优 | 受限 | | 使用案例 | 大文件存储 | 归档日志 | --- #### 注意事项 某些情况下执诸如 `ALTER TABLE` 的语句可能导致重新构建整个表结构,并自动切换回默认设置除非显式声明所需格式。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值