存储引擎
概述:在mysql中的数据用各种不同的技术存储在文件(或内存)中。
查看mysql支持的存储引擎:show engines;
mysql中使用最多的存储引擎:innodb(支持事务)、myisam(不支持事务)、memory(不支持事务)。
事务
概述:一条或多条sql语句组成一个执行单位,一组sql语句要么都执行,要么都不执行 | ||
事务的ACID特点 | 1. 原子性 (Atomicity):事务是不可分割的最小操作单位,要么同时成功,要么同时失败 2. 一致性 (Consistency):保证数据的状态操作前和操作后保持一致 3. 隔离性 (Isolation):多个事务同时操作相同数据库的同一个数据时,一个事务的执行不受另外一个事务的干扰 4. 持久性 (Durability):当事务提交或回滚后,数据库会持久化的保存数据 |
|
分类 | 隐式事务 | 概述:没有明显的开启和结束事务的标志,本身就是事务自动提交 insert、update、delete语句本身就是一个事务 |
显式事务 | 概述:具有明显的开启和结束事务的标志 1. 取消自动提交事务:set autocommit=0; (默认开启事务) |
|
隔离级别 | 事务并发问题是如何产生的? - 当多个事务同时操作同一个数据库的相同数据时 | |
事务并发问题 | 脏读:一个事务读取到了另外一个事务未提交的数据,读到的是其他事务"更新"的数据 不可重复读:同一个事务中,多次读取到的数据不一致 幻读:第一个事务读取到了第二个更新事务没有更新的数据,读到的是其他事务"插入"的数据 |
|
处理事务并发问题,设置事务隔离级别 - READ UNCOMMITTED:出现脏读、不可重复读、幻读 - READ COMMITTED:可以避免脏读 (oracle默认) - REPEATABLE READ:可以避免脏读、不可重复读 (mysql默认) - SERIALIZABLE(串行化):可以避免脏读、不可重复读和幻读 |
||
设置当前MySQL隔离级别:set session|global transaction isolation level 隔离级别名; |