(1)存储引擎的介绍
介绍:当客户端发送一条SQL语句给服务器时,服务器端通过缓存、语法检查、校验通过之后,然后会通过调用底层的一些软件组织,去从数据库中查询数据,然后将查询到的结果集返回给客户端,而这些底层的软件组织就是存储引擎。
MySQL的存储引擎:
- MySQL的核心就是存储引擎,MySQL可以设置多种不同的存储引擎,不同的存储引擎在索引、存储、以及锁的策略上是不同的。
- Mysql5.5之前,使用的是myisam存储引擎,支持全文搜索,不支持事务。
- Mysql5.5以后,使用的是innodb存储引擎,支持事务以及行级锁
(2)MySQL事务的介绍
介绍:事务是一个操作序列,这些操作要么都做,要么都不做,是一个不能分割的工作单位。在两条或两条以上的SQL语句才能完成的业务时,才需要用事务,因为事务时同步原则,效率比较低。
事务的ACID特性:
- 原子性:放在同一事务的一组操作时不可分割的
- 一致性:在事务的执行前后,整体的状态是不变的
- 隔离性:事务之间是独立存在的,两个不同事务之间互不影响
- 持久性:事务执行之后,将会永久的影响到数据库。
#例:一个事务操作
BEGIN;
update t_account set money=money+100 where id =1;
update t_account set money=money-100 where id =2;
COMMIT;
#一个回滚操作
BEGIN;
update t_account set money=money+100 where id =1;
update t_account set money=money-100 where id =2;
COMMIT;
注意:MySQL数据库,dml操作采用的是自动提交
#查看自动提交
show variables like ‘autocommit‘;
#修改自动提交
set autocommit=0;
(3)MySQL事务并发时产生的问题
脏读:在一个事务的执行范围内,读到了另一事务未提交的数据。
解决:读已提交,一个数据库只能读到另一个事务提交后的数据。(Oracle默认的事务隔离级别)
不可重复读:一个