首页
学习
活动
专区
圈层
工具
发布

mysql查看row format

基础概念

MySQL中的行格式(Row Format)定义了数据在磁盘上的存储方式。不同的行格式会影响数据的存储效率、空间利用率以及查询性能。MySQL支持多种行格式,包括Compact、Redundant、Dynamic和Compressed等。

相关优势

  1. Compact行格式:这是MySQL 5.0及之前版本的默认行格式,它将变长字段(如VARCHAR)的长度信息存储在每个记录中,适用于大多数情况。
  2. Redundant行格式:这是MySQL 5.0引入的一种行格式,与Compact行格式相比,它存储了更多的冗余信息,以提高某些查询的性能。
  3. Dynamic行格式:这是MySQL 5.6引入的一种行格式,它允许存储更长的变长字段,适用于包含大量变长字段的表。
  4. Compressed行格式:这是MySQL 5.7引入的一种行格式,它通过压缩数据来减少磁盘空间的使用,适用于存储大量数据的表。

类型

  • Compact:存储变长字段的长度信息。
  • Redundant:存储冗余信息以提高查询性能。
  • Dynamic:允许存储更长的变长字段。
  • Compressed:通过压缩数据减少磁盘空间使用。

应用场景

  • Compact和Redundant:适用于大多数情况,特别是数据量不大且查询性能要求不高的场景。
  • Dynamic:适用于包含大量变长字段的表,特别是数据量较大的情况。
  • Compressed:适用于存储大量数据的表,特别是对磁盘空间使用有严格要求的场景。

查看行格式

你可以使用以下SQL语句查看表的行格式:

代码语言:txt
复制
SHOW TABLE STATUS LIKE 'your_table_name';

或者:

代码语言:txt
复制
SHOW CREATE TABLE your_table_name;

遇到的问题及解决方法

问题1:为什么我的表使用了Compact行格式?

原因:这是MySQL 5.0及之前版本的默认行格式。

解决方法:如果需要更改行格式,可以使用以下SQL语句:

代码语言:txt
复制
ALTER TABLE your_table_name ROW_FORMAT=DYNAMIC;

问题2:为什么我的表使用了Redundant行格式?

原因:可能是手动设置为Redundant行格式,或者在某些情况下MySQL自动选择了Redundant行格式。

解决方法:如果需要更改行格式,可以使用以下SQL语句:

代码语言:txt
复制
ALTER TABLE your_table_name ROW_FORMAT=COMPACT;

问题3:为什么我的表使用了Dynamic行格式?

原因:这是MySQL 5.6及之后版本的默认行格式,适用于包含大量变长字段的表。

解决方法:如果需要更改行格式,可以使用以下SQL语句:

代码语言:txt
复制
ALTER TABLE your_table_name ROW_FORMAT=COMPACT;

问题4:为什么我的表使用了Compressed行格式?

原因:可能是手动设置为Compressed行格式,或者在某些情况下MySQL自动选择了Compressed行格式。

解决方法:如果需要更改行格式,可以使用以下SQL语句:

代码语言:txt
复制
ALTER TABLE your_table_name ROW_FORMAT=DYNAMIC;

参考链接

希望这些信息对你有所帮助!

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • MySQL row格式的两个问题

    因为客户的binlog_format设置为row,复制进程也只是延迟,show slave status的relay_master_log_file,exec_master_log_pos两个变量一直没有变化...然后我们直接查看对应的表结构,以及表的数据量。...延伸讨论 MySQL中有一个参数,slave_rows_search_algorithms 可以控制row格式下,mysql执行event时候,搜索对应行的方式。...2 从库alter语句导致同步中断 原因简述 MySQL row格式复制下,主从库之间同一个表如果列的类型不匹配,MySQL会尝试转码,如果转码失败(类型不兼容),则复制中断。...3 总结 MySQL的row格式复制对数据安全的保护,以及主从数据一致的保证是非常重要的,一般来说都建议设置成row格式。

    2.1K71

    row_format=compressed的细节和压缩的溢出页(FIL_PAGE_TYPE_ZBLOB)的简单介绍

    20), c5 varchar(20) not null, c6 varchar(300), c7 varchar(300) not null, c8 blob, c9 blob not null) row_format...压缩行的溢出页格式 FIL_PAGE_TYPE_ZBLOB 我们之前讲过非压缩页的溢出页,5.7的也有讲, 但是没得row_format=compressed的溢出页.... 这不,就来补上了么....其实row_format=compressed的溢出页(FIL_PAGE_TYPE_ZBLOB)非常简单, 就单纯的流式压缩,没得啥结构(除了比较固定的38字节fil_header)....(小细节: 大字段中: lob显示为hex格式, text显示为字符形式, 也是根据mysql显示效果来的) 总结 虽然row_format=compressed使用得不多,但使用该格式就很可能有溢出页了...简单总结下: row_format=compressed的元数据信息存储方式虽然复杂, 但我们只需要考虑不超过255字节的非空变长字段即可, 毕竟就它和结束标记符相同. row_format=compressed

    33820

    Mysql学习笔记(十三)查看mysql日志

    有时候需要查看一下二进制的日志文件,也就是binlog日志,那么这些命令都是怎么样的呐,作者通过摸索。...'; # 查看当前的二进制日志状态 show master status; #列表展示二进制文件 show binary logs; #查看二进制文件内容 mysqlbinlog.exe --no-defaults...\data\binlog.000121 | more 这里主要演示一下,查看特定二进制日志的效果。作者通过查询资料,发现二进制文件有statement模式和row模式,如下所示是row模式。...row模式中有一个标志table_id,然后binlog日志就是全部的二进制数字。如图所示。 ? ? 但是作者又想看一下都做了哪些操作?于是就用mysqlbinlog.exe来查看。...mysqlbinlog是可以按时间来查看的,但是作者在window平台下查看的时候发现日期错误,让人很是无语。索性把时间删了,然后显示为正序。

    2.8K10

    为什么要把MySQL的binlog格式修改为row

    我们知道binlog有两种常用的格式,一种是statement(默认),一种是row,很多人都说建议你修改为row格式,那么是为什么呢? 首先我们需要知道它们两个之间有什么不同?...statement格式记录的我们写的SQL语句,而row格式记录的则是实际受影响的数据的变化前后值 这里举两个例子说明一下: 删除 statement记录的是这个删除的语句,例如: delete from...; update t where id=5 and c=5 andd=5 set id=5,c=5,d=100 commit; 显然row格式记录方式按照这个binlog执行明显是正确的,也符合预期...可重复读级别下会存在间隙锁,会话2必须等会话1释放锁后才能执行,自然也不会出问题 数据恢复 除了避免主备不一致外,使用row格式的binlog对恢复数据也很友好 delete row格式的binlog会把被删掉的行的整行...这时,你直接把insert语句转成delete语句,删除掉这被误插入的一行数据就可以了 update row格式下,binlog里面会记录修改前整行的数据和修改后的整行数据。

    5K10
    领券