Mysql 提供了一套统一的应用开发模型和核心 API,因此,尽管不同的存储引擎拥有不同的特性,不过对于开发人员,应用操作都是完全透明的。应用层的连接并不直接访问存储引擎层,而是访问 Mysql 提供的 Api,也就是说不管所操作的表对象使用什么存储引擎,读写数据时执行的 DDL/DML 语句并没有不同
下面介绍使用最广泛的存储引擎
memory 存储引擎
内存存储引擎,直接把表保存到内存中,在磁盘中只拥有一个 .frm 文件,用来存储表结构的定义
通过指定 engine=memory 设置
当 Mysql 服务关闭时,所有 memory 引擎表中的数据全部会丢失
分配给 memory 引擎表的内存,正常情况不会释放,而是有该表一直持有,即使删除数据,也不会被收回,只有当整个表被删除或者重建时才会回收相关内存
memory 引擎表占用多少内存空间?由两个因素决定
首先 memory 引擎表能使用的最大内存不能超过 max_heap_table_size 系统设置的值,该值默认情况下是 16MB (还可以在会话时,临时设置 max_heap_table_size 变量的值)
在创建时通过 CREATE TABLE 语句的 MAX_ROWS 选项,指定表中最大的记录数的方式来限制表能够使用的内存空间
CSV 存储引擎
CSV 存储引擎是基于 CSV 格式文件存储数据
通过指定 engine=csv 设置
CSV 存储引擎因为自身文件格式的原因,所有列必须强制指定 NOT NULL ,另外 CSV 引擎也不支持索引,不支持分区
<