一种用来存储mysql中对象的一种特定的结构(文件结构),处于mysql的最底层,直接存储数据,这样导致上层数据的操作,依赖于存储引擎的选择,比如事务。
查看当前存储引擎:show engines \G
推荐使用存储引擎,更加注重数据的完整性和安全性,mysql版本>=5.5 提供事务、行级锁、外键约束的存储引擎
<
存储格式 数据,索引集中存储,存储于同一个表空间文件中。 数据(记录行) 索引(一种检索机制,也需要一定的空间) 创建表后会在对应数据库名目录下生成一个name.frm表结构文件,默认表的数据都在一个空间文件中 nmdata 通过配置,达到每张innodb表,一个表空间文件(name.ibd)的目的:
set global innodb_file_per_table = 1;数据按照主键顺序存储,插入时做排序工作,效率低。 支持事务、外键约束、维护数据完整性。 并发性处理:擅长处理并发的。 行级锁定: row-level locking,实现了行级锁定,在一定情况下,可以选择行级锁来提升并发性。也支持表级锁定,innodb根据操作选择。 多版本并发控制, MVCC,效果达到无阻塞读操作。相当于在更新操作时候会生成一个副本,不影响对记录的读操作。
version<= 5.5 MySQL默认的存储引擎。 ISAM:Indexed Sequential Access Method(索引顺序存取方法)的缩写,是一种文件系统。 擅长与处理 高速读与写。
<
存储方式 数据索引分别存储于不同的文件中。(name.frm name.MYD name.MYI) 数据的存储顺序为插入顺序,插入速度快,空间占用量小。 功能: 全文索引支持。(>=5.6 innodb 支持) 数据的压缩存储。
//使用mysql/bin目录下提供的可执行文件,在数据目录下执行 //压缩(减少磁盘空间,io开销) myisampack tal_name //压缩后需要重新建立索引 myisamchk -rq tbl_name //压缩后为只读表,如果需要更新,则需要解压后更新,再压缩(重新索引) myisamchk -unpack tbl_name并发性: 仅仅支持表级锁定。 支持 并发插入。写操作中的插入操作,不会阻塞读操作(其他操作)
存档型 仅提供 插入和查询操作。非常高效 无阻塞的插入和查询。
内存型 数据存储于内存中,存储引擎。缓存型存储引擎
读锁:读操作时增加的锁,也叫共享锁,S-lock。特征是 阻塞其他客户端的写操作,不阻塞读操作。 写锁:写操作时增加的锁,也叫独占锁或排他锁,X-lock。特征,阻塞其他客户端的读,写操作。
锁定粒度(范围): 行级:提升并发性,锁本身开销大 表级:不利于并发性,锁本身开销小。