介绍:数据库
InnoDB引擎是MySQL数据库的一个重要的存储引擎,和其余存储引擎相比,InnoDB引擎的优势是支持兼容ACID的事务(相似于PostgreSQL),以及参数完整性(有外键)等。如今Innobase实行双认证受权.MySQL5.5.5之后默认的存储引擎都是InnoDB引擎。缓存
特色是:并发
一、具备较好的事务支持:支持4个事务隔离级别,支持多版本读高并发
二、行级锁定:经过索引实现,全表扫描仍然会是表锁,注意间隙锁的影响性能
三、读写阻塞与事务隔离级别相关spa
四、具备很是高效的缓存特性:能缓存索引,也能缓存数据索引
五、整个表和主键以Cluster方式存储,组成一颗平衡树事务
六、全部Secondary Index都会保存主键信息内存
适用场景:it
一、须要事务支持(具备较好的事务特性)
二、行级锁定对高并发有很好的适应能力,但须要确保查询是经过索引完成
三、数据更新较为频繁的场景
四、数据一致性要求较高
五、硬件设备内存较大,能够利用InnoDB较好的缓存能力来提升内存利用率,尽量减小磁盘IO
谈一谈数据库事务的隔离级别?
一、Read uncommitted(读未提交)就是一个事务能够读取另外一个未提交事务的数据。
二、Read committed(读提交)就是一个事务要等另外一个事务提交后才能读取数据。
三、Repeatable read(重复读)就是在开始读取数据(事务开启)时,再也不容许修改操做。
四、Serializable(序列化)在该级别下,事务串行化顺序执行,能够避免脏读、不可重复读与幻读。是最高的事务隔离级别,可是这种事务隔离级别效率低下,比较耗数据库性能,通常不使用。
事务的做用就是保证数据的一致性、完整性。事务隔离级别越高,在并发下会产生的问题就越少,但同时付出的性能消耗也将越大,所以不少时候必须在并发性和性能之间作一个权衡。因此设立了几种事务隔离级别,以便让不一样的项目能够根据本身项目的并发状况选择合适的事务隔离级别,对于在事务隔离级别以外会产生的并发问题,在代码中作补偿。