MySQL 数据库开发入门(四),java 高薪训练营百度网盘
存储引擎(Storage Engines)的主要工作就是与文件系统进行数据交互,比如我们常用的 InnoDB 引擎。
MySQL 的存储引擎是插件式的,应用程序无需针对不同的存储引擎进行对应的编码操作,MySQL 提供了一套标准的 API 标准,MySQL 服务会自动处理不同的存储引擎与文件系统的读写,用户层面没有感知。
存储引擎是指定在表上面的,每个表都可以指定其自己的引擎;不管使用什么存储引擎,都会产生一个后缀为 frm 的文件,改用来定义表结构。
1、MySQL 的存储引擎介绍
主要有以下 5 种存储引擎:
<table><tbody><tr><td><p>序号</p></td><td><p>存储引擎名称</p></td><td><p>存储引擎特点</p></td></tr><tr><td><p>1</p></td><td><p>MyISAM</p></td><td><p>Mysql5.5 版本之前的默认存储引擎</p></td></tr><tr><td><p>2</p></td><td><p>InnoDB</p></td><td><p>Mysql5.5 及以后版本的默认存储引擎,目前用得最多的一个存储引擎</p></td></tr><tr><td><p>3</p></td><td><p>CSV</p></td><td><p>数据存储以 CSV 文件,不适用大表或者数据的在线处理,适用于数据的快速导入与导出</p></td></tr><tr><td><p>4</p></td><td><p>Memory</p></td><td><p>数据都是存储在内存中,服务重启数据丢失,默认 16M 空间,可用于查询结果内存计算,创建临时表存储需要计算的数据</p></td></tr><tr><td><p>5</p></td><td><p>Archive</p></td><td><p>数据存储为 ARZ 文件格式,只支持 insert 和 select 两种操作,可用于数据备份</p></td></tr></tbody></table>
2、MyISAM 与 InnoDB 引擎的区别
Mysql5.5 版本之前默认的存储引擎就是 MyISAM 存储引擎,MySQL 中比较多的系统表使用 MyISAM 存储引擎,系统临时表也会用到 MyISAM 存储引擎,但是在 Mysql5.5 之后默认的存储引擎就是 InnoDB 存储引擎了。原因主要是 MyISAM 是表级锁定,限制了数据库读/写的性能;另外一个原因 MyISAM 不支持事务,基于以上两点,InnoDB 引擎使用得非常广泛。
MyISAM 与 InnoDB 引擎主要有以下 6 个方面的区别:
<table><tbody><tr><td><p>序号</p></td><td><p>对比</p></td><td><p>InnoDB</p></td><td><p>MyISAM</p></td></tr><tr><td><p>1</p></td><td><p>文件存储方式</p></td><td><p>.frm 表定义文件;.ibd 数据文件</p></td><td><p>.frm 表定义文件;.myd 数据文件;.myi 索引文件</p></td></tr><tr><td><p>2</p></td><td><p>索引方式</p></td><td><p>B+ Tree</p></td><td><p>B+ Tree</p></td></tr><tr><td><p>3</p></td><td><p>count(*) 操作</p></td><td><p>全表扫描</p></td><td><p>无需扫描</p></td></tr><tr><td><p>4</p></td><td><p>锁机制</p></td><td><p>表锁、 行锁</p></td><td><p>表锁</p></td></tr><tr><td><p>5</p></td><td><p>事务</p></td><td><p>支持事务的 ACID</p></td><td><p>不支持事务</p></td></tr><tr><td><p>6</p></td
<td><p>常用场景</p></td><td><p>读写操作</p></td><td><p>读多写少操作,比如配置表</p></td></tr></tbody></table>
3、数据文件存放路径
-- 查看数据存储的文件路径
show variables like 'datadir';
4、InnoDB 逻辑存储结构
MySQL 的存储结构分为 5 级:表空间、段、簇、页、行。
评论