1.什么是存储引擎?
存储引擎其实就是如何实现存储数据,如何为存储的数据建立索引以及如何更新,查询数据等技术实现的方法。
MySQL默认配置了许多不同的存储引擎,可以预先设置或者在MySQL 服务器中启用。你可以选择适用于服务器、数据库和表格的存储引擎,以便在选择如何存储你的信息、如何检索这些信息以及你需要你的数据结合什么性能和功能的 时候为你提供最大的灵活性。
2.简单操作-MySQL中如何查看引擎
1)、show engines; // 查看mysql所支持的存储引擎,以及从中得到mysql默认的存储引擎。
2)、show variables like 'default_storage_engine'; // 查看mysql 默认的存储引擎
3)、show create table tablename ; // 查看具体某一个表所使用的存储引擎,这个默认存储引擎被修改了!
4)、show table status from database where name="tablename"
//准确查看某个数据库中的某一表所使用的存储引擎
5).可以通过engine关键字在创建或修改数据库时指定所使用到引擎。在创建表到时候通过engine=...或type=...来指定所要使用到引擎。
3.存储引擎详解
MySQL5.5以后默认使用InnoDB存储引擎,其中InnoDB和BDB提供事务安全表,其它存储引擎都是非事务安全表。
1.InnoDB
InnoDB存储引擎提供了具有提交,回滚,和崩溃恢复能力的事务安全;
对比MYISAM,INnoDB写的处理效率较差一些,并且会占用更多的磁盘空间保留数据和索引;
自动增长列:
InnoDB表的自动增长可以手工插入,但是如果插入的是空或0,则实际上插入的是自动增长后的值;
注:通过“ALTER TABLE ...AUTO_INCREMENT=n”可以强制设置自动增长值的起始值,但是该强制的默认值是保存在内存中,数据重启后该值将会丢失。可以使用LAST_INSERT_ID()查询当前线程最后插入记录使用的值(如果一次插入的是多条,那么返回的是第一条记录使用的自动增长值);
对于InnoDB表,自动增长列必须是索引,如果是组合索引,也必须是组合索引的第一列;
外键约束:
MySQL支持外键的存储引擎只有InnoDB,在创建外键的时候父表必须有对应的索引,子表在创建的时候也会自动创建对应的索引;
注:当某个表被其他表创建了外键参照,那么该表对应的索引或主键被禁止删除;
set foreign_key_checks=0临时关闭外键约束;set foreign_key_checks=1打开约束;
InnoDB存储引擎支持mvcc的行级锁;
InnoDB存储引擎使用的是B+tree;