事务四大特性
- 原子性
要么执行,要么不执行
原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。 - 隔离性
所有操作全部执行完以前其它会话不能看到过程
隔离性是当多个用户并发访问数据库时,比如同时操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。 - 一致性
事务前后,数据总额一致,事务执行的前后都是合法的数据状态,不会违背任何的数据完整性
一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。 - 持久性
一旦事务提交,对数据的改变就是永久的
持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。
数据库有四种隔离级别
- Read uncommitted(未授权读取、读未提交):
***如果一个事务已经开始写数据,则另外一个事务则不允许同时进行写操作,但允许其他事务读此行数据。***该隔离级别可以通过“排他写锁”实现。这样就避免了更新丢失,却可能出现脏读。也就是说事务B读取到了事务A未提交的数据。 - Read committed(授权读取、读提交):
***读取数据的事务允许其他事务继续访问该行数据,但是未提交的写事务将会禁止其他事务访问该行。***该隔离级别避免了脏读,但是却可能出现不可重复读。事务A事先读取了数据,事务B紧接了更新了数据,并提交了事务,而事务A再次读取该数据时,数据已经发生了改变。 - Repeatable read(可重复读取):
可重复读是指在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据。那么,在第一个事务中的两次读数据之间,即使第二个事务对数据进行修改,第一个事务两次读到的的数据是一样的。这样就发生了在一个事务内两次读到的数据是一样的,因此称为是可重复读。***读取数据的事务将会禁止写事务(但允许读事务),写事务则禁止任何其他事务。***这样避免了不可重复读取和脏读,但是有时可能出现幻象读。(读取数据的事务)这可以通过“共享读锁”和“排他写锁”实现。 - Serializable(序列化):
提供严格的事务隔离。它要求事务序列化执行,***事务只能一个接着一个地执行,但不能并发执行。***如果仅仅通过“行级锁”是无法实现事务序列化的,必须通过其他机制保证新插入的数据不会被刚执行查询操作的事务访问到。序列化是最高的事务隔离级别,同时代价也花费最高,性能很低,一般很少使用,在该级别下,事务顺序执行,不仅可以避免脏读、不可重复读,还避免了幻像读。
脏读:事务B读取事务A还没有提交的数据
不可重复读:两次事务读的数据不一致
幻读:事务A修改了数据,事务B也修改了数据,这时在事务A看来,明明修改了数据,咋不一样
√:会出现 ×:不会出现
数据库 与 数据仓库
数据库——联机事务处理OLTP(On-Line Transaction Processing)
存储的数据量小,方便操作,性能要求高,响应时间短、一次操作一个单元,可以更新数据。
数据库 比较流行的有:MySQL, Oracle, SqlServer等
数据仓库——联机事务分析OLAP(On-Line Analytical Processing)
存储的数据量大,对性能要求宽松,一次操作一个集合,数据是随着时间的变化而变化的、是不可修改的。
数据仓库 比较流行的有:AWS Redshift, Greenplum, Hive等
DBS、DB、DBMS
DBS(数据库系统)包含DB(数据库)和DBMS(数据库管理系统)
数据库的三集模式
数据库的三级模式包括模式、外模式、内模式。
模式是数据库中全体数据的逻辑结构和特征的描述 ,一个数据库只有一个模式。
外模式又称用户视图,一个数据库可以有多个外模式。
内模式也称物理模式或存储模式,一个数据库只有一个内模式。它是数据物理结构和存储方式的描述,是数据库的内部的表示方法。
模式对应基本表,外模式对应视图,内模式用于存储文件。
DDL、DML、DCL、DQL
DDL:数据库模式定义语言,create、alter、drop
DML:数据库操纵语言,insert、delete、update
DCL:数据库控制语言,grant、remove
DQL:数据库查询语言,select
数据库范式
1NF:属性(字段)不可分的原子性,即同一列中不能有多个值。
2NF:满足1NF,且数据库表中的每个实例或行必须可以被唯一地区分,为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。每一个非主属性完全依赖于R的某个候选键,则称R是第二范式模式。
3NF:满足2NF,且每个非主属性都不传递依赖于R的候选键,则称R是第三范式的模式。
BCNF:建在第三范式的基础上,如果关系模型R是第一范式,且每个属性都不传递依赖于R的候选键,那么称R为BCNF的模式。符合BCNF的,并消除了删除异常、插入异常和更新异常。
回收和增加建表、改表、删表、查表权限
回收权限:
REVOKE CREATE ,SELECT,ALTER,DROP ON T FROM user2;
REVOKE CREATE ON T FROM user2;
REVOKE DROP ON T FROM user2;
REVOKE ALTER ON T FROM user2;
REVOKE SELECT ON T FROM user2;
增加加权限:
GRANT CREATE ,SELECT,ALTER,DROP ON T FROM user2;
GRANT SELECT ON T FROM user2;
GRANT CREATE ON T FROM user2;
GRANT DROP ON T FROM user2;
GRANT ALTER ON T FROM user2;
GRANT SELECT ON T FROM user2;
共享锁(S)和排他锁(X)
共享锁(S锁)又称为读锁,若事务T对数据对象A加上S锁,则事务T只能读A;其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。这就保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。
SQL语句对应的运算
SQL语句中select对应投影运算,where语句对应选择运算,from后面的表对应连接运算。
主键、超键、候选键
主键:如果一个关系表中有多个候选键,则选择其中一个键作为关系的主键,用主键可以表示任意两行记录不相同。
超键:在一个关系表中,能唯一标识一行的属性或属性集称为关系的超键。
候选键:如果一个属性集能唯一标识行,且又不含多余的属性,那么这个属性集就称为关系的候选键。
E-R图的属性
在ER图中有如下四个成分:
矩形框:表示实体,在框中记入实体名。
菱形框:表示联系,在框中记入联系名。
椭圆形框:表示实体或联系的属性,将属性名记入框中。对于主属性名,则在其名称下划一下划线。
连线:实体与属性之间;实体与联系之间;联系与属性之间用直线相连,并在直线上标注联系的类型。(对于一对一联系, 要在两个实体连线方向各写1;对于一对多联系,要在一的一方写1。多的一方写N;对于多对多关系,则要在两个实体连线方向各写N,M。)
故障类型
1、事务故障是由于程序执行错误而引起事务非预期的、异常终止的故障。它发生在单个事务的局部范围内,实际上就是程序的故障。
事务故障更多的是非预期的,不能由事务程序处理的情况,主要有:
①逻辑上的错误,如运算溢出、死循环、非法操作、地址越界等等;
②违反完整性限制的无效的输入数据;
③违反安全性限制的存取权限;
④资源限定,如为了解除死锁、实施可串化的调度策略等而ABORT一个事务;
⑤用户的控制台命令。
2、系统故障是指系统在运行过程中,由于某种原因,造成系统停止运行,以致事务在执行过程中以非正常的方式终止,致使内存中的信息丢失,而存储在外存上的数据未受影响。
3、介质故障是指外存储设备故障,主要有磁盘损坏,磁头碰撞盘面,突然的强磁场干扰,数据传输部件出错,磁盘控制器出错等。