MySQL数据库(八)__2018.11.14

Myisam存储引擎和innodab是存储引擎中的重中之重。

MYISAM存储引擎。

在MySQL5.5之前默认的存储引擎就是MYISAM,MYISAM的前身是ISAM。那会还没有一个存储引擎的概念,ISAM只是一个算法和处理方式。MySQL最初对表对象的管理方式默认只能有这一种,随着MySQL架构的不断发展,才在MySQL架构中引进了这些,存储引擎是可插拔式的,这也是很颠覆的。所以ISAM也进化到了MYISAM,并且一直也是作为MySQL默认的存储引擎,知道MySQL5.5之后,INNODB才取代了MYISAM的位置。

#测试M有ISAM存储引擎
USE imooc;
CREATE TABLE test_myisam(
	a INT UNSIGNED,
	b VARCHAR(20),
	c CHAR(32)
)ENGINE=MYISAM;

我们可以看到它在磁盘中创建了三个文件

默认MyISAM会在磁盘中创建三个文件:

.frm(结构文件)  .MYD(数据文件)  .MYI(索引文件)

可以在建表的时候指定数据文件和索引文件的存储位置,只有MyIASAM表支持DATA DIRECORY[=]数据文件保存的绝对路径.

INDEX DIRECTORY[=]索引文件保存的绝对路径.在默认的存储位置还是会保存数据文件和索引文件,只不过会在你指定的绝对位置产生一个软连接来指向这两个文件.

MyISAM单表支持的最大数据量2事的64次方条记录.每个表最多可以建立64个索引.如果是符合索引,每个复合索引最多包含16列,索引值最大长度1000B.

存储引擎对数据的存储和检索起着一个非常关键的作用.

存储引擎的特点.

缺点:存储引擎的所太粗了,它是表级索不是行级所,所以它不适合银行等业务.

优点:适合插入和查询多的业务.查询快写入也快.

MyISAM引擎的存储格式:

定长(FIXED 静态):是指字段中不包含varchar,text,二进制:字节数是固定的.(查找速度最快,数据库崩溃后恢复时它也是最快恢复的)

  动态(DYNAMIC)  压缩(COMPRESSED)

#测试MYISAM存储引擎的静态存储
CREATE TABLE myisam_1(
	a CHAR(32),
	id INT
)ENGINE=MYISAM;
#测试MYISAM存储引擎的动态存储
CREATE TABLE myisam_1(
	a VARCHAR(32),
	id INT
)ENGINE=MYISAM;

当包含变长字符串时,它生成的就是一个静态存储格式,只要字段中包含变长字段时就会生成动态的存储格式,当然也可以通过自己指定,让它生成静态的格式.把动态表又变回为静态.因为使用静态表可以很方便的到磁盘中去查找和定位数据,操作效率很高.动态表处理数据时会复杂一点.经常插入操作时会产生很多内存碎片.

压缩格式(COMPRESSED):通过myisampack工具创建.

#将存储格式指定为静态
CREATE TABLE myisam_3(
	a VARCHAR(30),
	id INT
)ENGINE=MYISAM ROW_FORMAT=FIXED;

40

猜你喜欢

转载自blog.csdn.net/weixin_40316053/article/details/84058343