目录
十六、存储引擎
1)存储引擎是:MySQL特有,其他数据没有
2)存储引擎的本质
1. 通过采用不同的技术将数据存储在文件或内存中
2. 每一种技术都有不同的存储机制,不同的存储机制提供不同的功能和能力
3. 通过选择不同的技术,可以获取额外的速度或功能,改善应用
3)MySQL支持多种,查看存储引擎,命令如下:
1. show engines\G
① 在创建时,可使用<engines>选项为create table语句显示指定存储引擎
a)例如:
Create table table_name(
No int
)ENGINE = MyISAM;
② 如果创建表时没有指定存储引擎,则使用当前默认的存储引擎
③ 默认的存储引擎可在 my.ini 配置文件中使用 default-storage-engin 选项指定
④ 修改表的存储引擎使用:alter table 表名 ENGINE = 存储引擎名称;
⑤ 查看表使用的存储,命令如下:
a)show create table emp\G;
b)show table status like 'emp'\G;
4)常用的存储引擎
1. MyISAM存储引擎
MyISAM引擎是MySQL数据库常用的;
它管理的表有以下特性:
使用三个文件表示每个表:
a)格式文件—存储表的结构(mytable.frm)
b)数据文件—存储表的数据(mytable.MYD)
c)索引文件—存储表的索引(mytable.MYI)
可转换为压缩,只读表来节省空间;
2. InnoDB存储引擎
InnoDB存储引擎时MySQL数据库的缺省(默认)引擎;
它管理的表具体有以下特征:
a)每个InnoDB表在数据库目录中以 .frm 格式文件表示
b)InnoDB表空间tables pace被用于存储表的内容
c)提供提供一组用来记录事务性活动的日志文件
d)用commit(提交)、saveponint及rollback(回滚)支持事务处理
e)提供全部ACID兼容
f)在MySQL服务器崩溃后提供自动恢复
g)多版本(MVCC)和行级锁定
h)支持外键及引用的完整性,包括级联更新和删除
3. MEMORY存储引擎
3.1 使用MEMORY存储引擎的表,因为数据存储在内存中,且行的长度固定,所以使得MEMORY存储引擎非常快
3.2 MEMORY存储引擎管理的表具有以下特征:
a)在数据库目录内,每个表均以 .frm格式文件表示
b)表数据及索引被存储在内存中
c)表级锁机制
d)字段属性不能包含text或BLOB字段
4. MEMORY存储引擎以前被称为HEAP引擎
5)选择合适的存储引擎
1.【MyISAM】表最适合于大量的数据读而少量数据更新的混合操作,MyIASM表的另一种适用情形是使用压缩只读表;
2.【InnoDB】如果查询中包含较多的数据更新操作,其行级锁机制和多版本的支持为数据读取和更新的混合提供了良好的并发机制;
3.【MEMORY】非永久需要的数据,或者是能够从基于磁盘的表中重新生成的数据。