mysql特有的存储引擎
mysql可以将数据以不同的技术存储在文件(内存),这种技术称为存储引擎
每一种存储引擎都使用不同的存储机制,索引技巧,锁定水平,最终提供广泛且不同的功能
show engines;//查看存储引擎
上图是我mysql的版本,在做练习时候版本不一样,所支持的存储引擎也是不一样的
MYISAM存储引擎(不支持事务)是MySQL常用的存储引擎
现在更高一点的版本所支持的默认存储引擎是INNODB
存储引擎基于表的,,创建表额时候没有指定存储引擎,用的是默认存储引擎
它管理的表具有以下特征:
(1)使用三个文件表示每个表
格式文件----存储表结构的定义(mytable.frm)
数据文件-----存储表行的内容(mytabke.MYD)
索引文件-----存储表上的所以你(mytable.MYI)
(2)灵活的AUTO-INCREANENT字段处理
(3)可被转换为压缩(减小这张表的占用空间),只读(提高表的检索效率)
INNODB存储引擎(执行速度没有MYISAM速度快)
支持事务
它管理的表具有下面主要特征
----每个INNODB表在数据库目录中以.frm格式文件表示
-----INNODE表空间TABLESPACE被用于存储表的内容
-----提供一组用来记录事务性活动的日志文件
-----用commit(提交),SAVPOINT及ROLLBACK(回滚)支持事务处理
-----提供全acid兼容
-----在mysql服务器崩溃后提供自动恢复
-----多版本(mvcc)和行级锁定
-----支持外键及引用的完整性,包括级联删除和更新
memory存储引擎
使用memory存储引擎的表,其数据存储在内存中,且行的长度固定,这使得memory存储引擎非常快
memory存储引擎管理表具有以下特征:
------在数据库目录内,每个表均以.frm格式的文件表示
-----表数据及索引被存储在内存中(不持久,短电丢失)
-----表级锁机制
-----不能包含TEXT或BLOB字段
MEMORY存储引擎以前被称为HEAP引擎
选择合适的存储引擎:
- MYISAM表最适合大量的数据读,而少量数据更新的混合操作
- 另一种适合情况是使用压缩的只读表
- 如果查询中包含较多的数据更新操作,应该使用INNODB,其行级锁机制和多版本的支持为数据读取和更新的混合操作提供了良好的并发机制(安全性高)
- 可以使用memory存储引擎来存储非永久需要的数据,或者是能够从基于磁盘的表中重新生成的数据