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;

INNODB存储引擎:MySQL5.5之后默认的存储引擎,被业界公认为是高性能、高可用性最广泛性的存储引擎。

设计遵循ACID模型:原子性、隔离性、一致性、持久性(事务的四个特性,支持事务),具有从服务崩溃中恢复的能力,能够最大限度的保护用户的数据。

atomicity:原子性

consistoncy:一致性

solation:隔离性

durability:持久性

支持行级锁。可以提升多用户并发运行(读写)时的性能。

在维护数据完整性方面支持外键。支持外键保护数据的一致性和完整性。

innodb有自己独立的缓冲池(innodb buffer pool size),常用的数据和索引都在缓存中。

对于insert、update、delete操作,innodb会使用change buffering来自动优化,还可以提供一致性的读,并且能够缓存变更的数据,减少磁盘I/O提高性能。

storage Limits:最大存储限制(64TB)。

MVCC:是一种多版本并发控制机制

B-Tree Index:支持

Full-text search indexes:全文索引

缓存索引:

是否支持数据库集群。

backup/point-in-time recover:备份/时间点恢复

geospatial data type support:支持地理数据

锁的力度。

数据字典的更新统计。

创建表innodb之后会产生两个文件:.frm表结构文件、.ibd表空间(数据和索引)。可以自己指定数据保存在哪、索引保存在哪?

在创建innodb表的时候做好要指定主键(编号并且自动增长,或者放到一个经常查询的字段上)

索引的表都需要创建主键,因为它的主键索引是最快的。

了解了这些存储引擎之后,就可以根据业务需求选择合适的表结构。

USE imooc;
CREATE TABLE test_innodb(
	id INT UNSIGNED AUTO_INCREMENT KEY,
	username VARCHAR(20)NOT NULL
);

41

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值