一、事务
1.什么是事务,为什么需要事务
所谓事务,是一个操作序列,这些操作要么执行,要么都不执行,它是一个不可分割的工作单位。
为什么需要事务?例如:银行转账的问题,从一个账号扣款并使另一个账号入账,这两个操作要么都执行,要么都不执行。所以,应该把它们看成是一个事务。
2.事务四大特性
- 原子性:略
- 一致性:数据库总是从一个一致性的状态转换到另一个一致性的状态。
- 隔离性:略
- 持久性:一旦事务提交,则其所做的修改就会永久保存到数据库中。此时即使系统崩溃,修改的数据也不会丢失。
3.隔离级别
- READ UNCOMMITTED未提交读:如果一个会话的隔离级别为未提交读,则在其他会话中事务的操作都可以立即在此会话中被看到。所以会产生脏读的问题,即看到其他会话中还没有被提交的事务。
- READ COMMUTTED提交读:如果一个会话的隔离级别为提交读,则在其他会话中只有事务提交后才可以在此会话中被看到。
- REPEATABLE READ可重复读(面试常问):如果一个会话的隔离级别为可重复读,则在其他会话中,即使事务提交了,在此会话中也不会被看到。所以会产生幻读的问题,即在可重复读的会话中看不到其他会话中被提交的事务。
- SERIALIZABLE可串行化
4.注意事项
- Mysq可在每个会话中设置当前的隔离级别
- 隔离级别越高,并发性越低
- 每个会话的隔离级别只对当前隔离级别起作用
二、视图
1.什么是视图?
视图(View)是一种虚拟存在的表,对于使用视图的用户来说基本上是透明的。视图并不在数据库中实际存放数据,它的数据来自定义视图时使用的基本表,并且是在使用视图时动态生成的。
2.为什么要使用视图?
- 简化复杂的sql操作,在编写查询后,可以方便的重用它而不必知道它的查询细节
- 保护数据,可以给用户授予表的特定部分的访问权限而不是整个表
- 使用表的组成部分而不是整个表
三、索引
1.索引是什么?
索引是一种特殊的文件,它包含着对数据表里所有记录的引用指针。简单讲,就像一本书前面的目录,能加快查询速度。