MySQL 8k页一行能存多少数据
时间: 2023-09-15 12:17:34 浏览: 175
MySQL中的行存储是基于页(Page)的,每个页的大小默认为16KB(可以通过参数innodb_page_size进行修改),而在InnoDB存储引擎中,每行数据除了实际存储的数据外,还需要占用一定的存储空间来存储一些元数据信息。
具体来说,每行的存储结构包括了以下几个部分:
1. 固定长度的头信息(Fixed Header):包含了一些元数据信息,如行的长度和NULL列的位图等。
2. 可变长度的列数据(Variable Length Data):存储了行的实际数据,长度会根据实际数据的长度而变化。
3. 记录头(Record Header):存储了一些元数据信息,如行的长度和删除标记等。
因此,实际上一行数据所占用的存储空间取决于实际数据的长度以及元数据信息的大小。如果一行数据比较短,那么会有更多的空间用于存储实际数据;如果一行数据比较长,那么会有更多的空间用于存储元数据信息。
在MySQL的默认情况下,约定每页存储行的最大长度为8096字节,而实际上这个长度是可以通过参数innodb_page_size和innodb_default_row_format进行修改的。因此,一行数据所能存储的最大数据量也会因此而发生变化。
相关问题
mysql5.7数据导入5.5大字段问题
在将MySQL 5.7中的数据导入到MySQL 5.5中时,可能会遇到大字段问题。这个问题是由于InnoDB存储引擎的默认行格式导致的。默认情况下,InnoDB使用Antelope行格式,它将每个BLOB字段的前864个字节存储在页内,当BLOB字段超过一定数量时,单行大小就会超过8K,导致报错。具体的解决方法如下:
1. 打开MySQL的配置文件my.ini,在InnoDB配置中添加innodb_file_per_table=1,这将打开每个表独立存储空间的开关。
2. 检查innodb_file_per_table的配置是否已经打开,可以使用命令show variables like 'innodb_file_per_table';来检查。如果value值显示OFF,只需重启MySQL服务即可。
3. 设置MySQL全局变量innodb_file_format为Barracuda,这是一种支持大字段处理的存储格式。可以使用命令set GLOBAL innodb_file_format = 'Barracuda';来设置。
4. 设置对应表的属性为ROW_FORMAT=DYNAMIC,这将使用Barracuda行格式来处理大字段。可以通过ALTER TABLE语句来设置。
通过以上步骤,应该可以解决在将MySQL 5.7数据导入到MySQL 5.5时的大字段问题。这些步骤参考了中的文章,并且适用于InnoDB存储引擎。希望对您有帮助。
阅读全文
相关推荐









