Mysql中的存储引擎InnoDB的行格式或记录格式

在数据库中我们可以通过命令:show engines;看到数据库中的存储引擎。InnoDB是数据库默认的存储引擎,InnoDB中数据是存储在磁盘中的,但数据的处理是在内存中进行的,会将数据从磁盘中加载到内存中,在内存中对数据进行修改或者添加等操作后又将数据刷新到磁盘中,由于InnoDB数据是存储在磁盘中的所以关闭服务器(关机重启)后也是有数据的。

磁盘中的数据加载到内存中,InnoDB采取的方式是:将数据划分为若干个页,以页作为磁盘和内存之间交互的基本单位,InnoDB中页的大小一般为 16 KB。也就是在一般情况下,一次最少从磁盘中读取16KB的内容到内存中,一次最少把内存中的16KB内容刷新到磁盘中。

Memory存储引擎的数据没有存储到磁盘中,关闭服务器后表中的数据也会消失。

Memory:

  1.将表中的数据存放在内存中,如果数据库重启或发生崩溃,表中的数据都将消失。

  2.它非常适合存储临时数据的临时表.默认采用哈希索引。

  3.只支持表锁,并发性较差。

Mysql中的存储引擎InnoDB的行格式或记录格式_第1张图片

在表中插入数据:是以记录为单位向表中插入数据的,记录是以行的形式存储的。这意味着页中保存着表中一行行的数据。这些记录在磁盘上的存放方式也被称为行格式或者记录格式。InnoDB存储引擎提供了CompactRedundantDynamic和Compressed行格式来存放行记录数据。

我们可以通过命令:show table status like 'table_name';来查看表中的记录格式。

Row_format:Dynamic 就代表了当前使用的行记录结构类型。

Mysql中的存储引擎InnoDB的行格式或记录格式_第2张图片

1.Compressed行格式和Dynamic不同的一点是,Compressed行格式会采用压缩算法对页面进行压缩,以节省空间。

2.指定和修改行格式的语法如下:

CREATE TABLE 表名 (列的信息) ROW_FORMAT=行格式名称

ALTER TABLE 表名 ROW_FORMAT=行格式名称

 

3.Dynamic和Compressed行格式:

这两种行格式类似于COMPACT行格式,不同处是处理行溢出数据时有点儿分歧,它们不会在记录的真实数据处存储字符串的前768个字节,而是把所有的字节都存储到其他页面中,只在记录的真实数据处存储其他页面的地址。

4.一个页一般是16KB,当记录中的数据太多,当前页放不下的时候,会把多余的数据存储到其他页中,这种现象称为行溢出

你可能感兴趣的:(mysql)