事务
-
存储引擎
数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能。Mysql的核心就是存储引擎。
InnoDB是事务型数据库的首选,执行安全性数据库,行锁定和外键。mysql5.5之后默认使用。
MyISAM插入速度和查询效率较高,但不支持事务。
MEMORY将表中的数据存储在内存中,速度较快。 -
事务概念
一组dml操作作为最小原子单位,要么同时成功,要么同时失败。 -
事务四个特性(ACID)
原子性:一组操作不可分割,必须全部成功或者失败。
一致性:数据及其结构,约束等信息,在事务执行前后保持一致。
隔离性:并发事务之间互相不干扰。
持久性:事务执行完成,数据将持久化到数据库。 -
并发事务的存在问题
a) 脏读:一个事务读取到另一个事务未提交的数据
b) 不可重复读:一个事务在查询范围内,由另一个事务修改并进行事务提交,导致该事务在多次查询时出现数据不一致。
c) 幻读:一个事务在查询范围内,由另一个事务添加或者删除记录并进行事务提交,导致该事务产生”幻行”。 -
事务的隔离级别
a) 读未提交:最低(最快) 不常用
b) 读已提交:能够解决脏读问题。
c) 可重复读:能够解决脏读,不可重复读问题。(mysql)
d) 串行化:能够解决脏读,不可重复读,幻读问题。
Mysql支持四种隔离级别。
Oracle支持读已提交以及串行化,默认是读已提交。