简介
存储引擎就是指表的类型以及表在计算机上的存储方式。是mysql独有的,其中oracle是没有的
分类:
InnoDB,MyISAM,MEMORY
SHOW ENGINES
查看数据库的存储引擎 数据库默认引擎配置文件my.ini
1.Savepoints: 是否支持save point的事务点操作.
2.support: MySQL是否支持存储引擎,YES支持,NO不支持,Default默认使用的存储引擎.
3.Transactions: 是否支持事务 4.Comment: 注释 5.XA: 是否支持分布式
InnoDB默认
特点
支持事务处理以及Savepoints,同时对于数据库的崩溃具有修复能力,
行级锁定:MyISAM只支持表锁,InnoDB可支持行锁;InnoDB在并发量高时,性能比较优异,但容易死锁,基于索引
支持外键;父表中只有主键可以被字表外键关联,且更新具有一致性,但大数据情况下不建议使用外键。
支持AUTO_INCREMENT;自动增长列的值不能为空,并且值必须唯一,且必须为主键。
优缺点
缺点是读写效率较差,占用的数据空间相对较大。
适用于事务完整性比较高,更新删除比较频繁的操作;
实例
InnoDb引擎的mysql:表t_user ; uid为唯一索引,无其他索引
update t_user set age=10 where uid=1; 命中索引,行锁。
update t_user set age=10 where uid != 1; 未命中索引,表锁。
update t_user set age=10 where name='shenjian'; 无索引,表锁。
行级锁并不是直接锁记录,而是锁索引;
如果SQL语句用到了主键索引,mysql会锁住主键索引;
如果一条语句操作了非主键索引,mysql会先锁住非主键索引,再锁定主键索引。
MyISAM
特点
适用于以读取插入为主,对于并发要求比较低的情况 表锁
优势在于插入读取速度快。缺点是不支持事务的完整性和并发性。
存在了表共享读锁和表独占写锁两种特点,即读读可并发,写写以及写读会阻塞
MEMORY
特点
采用哈希索引的方式,在内存中创建表,执行速度快,但是数据没有保障,比如开关机会导致数据丢失
适用于要求读写速度快,数据安全要求性低,同时单表的数据量比较小的情况。 表锁