MySQL的系统库和事务
MySQL中的系统库
- performance_schema
- sys
- infomation_schema
- mysql
performance_schema
这里面主要保存的是和mysql性能相关的表
sys
系统表,这个表一般是看不见的,里面的表来自infomation_schema 和 performance_schema,以视图的形式存在,mysql5.7 以下没有这个表,需要安装
infomation_schema
里面存储的是表的元数据,比如表的结构、行、列、全局变量、字符集、存储引擎、分区、触发器、存储过程、视图等。
mysql
里面主要存储权限、日志、成本分析、复制、时区等信息
数据库中的事务
- 事务的特性
- 事务并发会带来什么问题
- MySQL的隔离级别
- 基本语法、保存点、隐式提交
事务的特性
- A (atomicity)原子性—要么全部成功,要么全部失败)
- C (consistency)一致性 —比如转账,有账户增加金额,就会有账户减少金额)
- I (isolation) 隔离性 —多个客户端同时操作时,客户端之间不应该相互影响
- D (Durability) 持久性,事务成功后,即使是数据库宕机,数据也不应该丢失,是持久化的
事务并发会带来什么问题
- 脏读
读取了别的事务还没有提交的部分,如果其他事务发生回滚,会造成数据不一致
- 不可重复读
在同一个事务里面,同一个语句,读取到的数据不一致
- 幻读
同一个事务里面执行同一个语句,查询到的数量不一致
MySQL的隔离级别
mysql 在可重复读级别,已经通过LBCC(LOCK BASE CONCURENCY CONTROL) 解决了幻读的问题,这一点和SQL92标准不同
基本语法、保存点、隐式提交
-
基本语法
begin; --开启事务
commit; --提交事务
rollback;–回滚事务 -
保存点
这个主要用于比较长的存储过程里面,回滚到某个点,而不是全部回滚
savepoint a;
rollback to savepoint a;
release savepoint a; -
隐式提交
事务开始后,如果重新开启一个事务、如果遇到执行ddl语句,如果发现修改数据库元数据等信息,会自动提交事务,这种叫做隐式提交