首页 >

mysql数据库的行格式 |mysql dataset

mysql报错类型,mysql索引底层实现,mysql表数据导入导出,mysql默认开始事务吗,mysql慢优化方法,mysql datasetmysql数据库的行格式 |mysql dataset

其中,纪录行为MySQL默认的行格式,适用于大多数的情况。纪录行采用变长方案以达到存储最优化,每一条记录中的字段长度不同,可以非常方便地添加或删除字段。但同时,由于其存储方式的特殊性,纪录行在更新时可能会导致记录“断行”,即新记录追加在原记录后面,而原记录的空间则无法被释放掉。

CREATE TABLE `test` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`username` varchar(20) NOT NULL DEFAULT '',
`password` varchar(32) NOT NULL DEFAULT '',
`age` tinyint(3) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;

除了默认的纪录行以外,MySQL还提供了动态行这种行格式。动态行将所有的变长字段集中排列,这样在修改记录时就不会使用原有记录的空间,而是新增加的记录会保存在表的末尾,从而避免了纪录行“断行”的问题。

CREATE TABLE `test` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`username` varchar(20) NOT NULL DEFAULT '',
`password` varchar(32) NOT NULL DEFAULT '',
`age` tinyint(3) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

压缩动态行是一种为了节约存储空间而产生的行格式。这种行格式可以使用更少的存储空间来存储每一条记录,但是读写效率可能稍微低一些。

CREATE TABLE `test` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`username` varchar(20) NOT NULL DEFAULT '',
`password` varchar(32) NOT NULL DEFAULT '',
`age` tinyint(3) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPRESSED;

固定行则是一种非常古老的行格式,早期的数据库软件大多采用这种行格式。固定行不支持变长字段,因此每一条记录的长度都是固定的。由于不用计算记录的长度,因此固定行的读写效率相对较高。

CREATE TABLE `test` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`username` char(20) NOT NULL DEFAULT '',
`password` char(32) NOT NULL DEFAULT '',
`age` tinyint(3) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED;

综上所述,选择哪一种行格式应该根据不同的使用场景来确定。如果数据表中字段经常变更,可以选择纪录行或动态行;如果数据表中有很多的变长字段,可以选择动态行;如果需要节约存储空间,可以选择压缩动态行;如果数据表的记录长度固定,可以选择固定行。


mysql数据库的行格式 |mysql dataset
  • 解决MySQL数据库空表问题的方法 |mysql下udf提权
  • 解决MySQL数据库空表问题的方法 |mysql下udf提权 | 解决MySQL数据库空表问题的方法 |mysql下udf提权 ...

    mysql数据库的行格式 |mysql dataset
  • mysql如何统计前几天的数据? |mysql 5.7.20 初始化
  • mysql如何统计前几天的数据? |mysql 5.7.20 初始化 | mysql如何统计前几天的数据? |mysql 5.7.20 初始化 ...

    mysql数据库的行格式 |mysql dataset
  • mysql的limit会全部查询吗 |mysql proxy安装
  • mysql的limit会全部查询吗 |mysql proxy安装 | mysql的limit会全部查询吗 |mysql proxy安装 ...