解析:
数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务同时存取数据库中同一数
据时不破坏事务的隔离性和统一性以及数据库的统一性
乐观并发控制(乐观锁)和悲观并发控制(悲观锁)是并发控制主要采用的技术手段。
悲观锁:假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作。在查询完数据的时候
就把事务锁起来,直到提交事务。
实现方式:使用数据库中的锁机制。
乐观锁:假设不会发生并发冲突,只在提交操作时检查是否违反数据完整性。在修改数据的
时候把事务锁起来,通过 version 的方式来进行锁定
实现方式:乐一般会使用版本号机制或 CAS 算法实现。
两种锁的使用场景:
从上面对两种锁的介绍,我们知道两种锁各有优缺点,不可认为一种好于另一种,像乐
观锁适用于写比较少的情况下(多读场景),
即冲突真的很少发生的时候,这样可以省去了锁的开销,加大了系统的整个吞吐量。
但如果是多写的情况,一般会经常产生冲突,这就会导致上层应用会不断的进行 retry,
这样反倒是降低了性能,
所以一般多写的场景下用悲观锁就比较合适。
解析:
视图的特点如下:
视图的列可以来自不同的表,是表的抽象和在逻辑意义上建立的新关系。
视图是由基本表(实表)产生的表(虚表)。
视图的建立和删除不影响基本表。
对视图内容的更新(添加,删除和修改)直接影响基本表。
当视图来自多个基本表时,不允许添加和删除数据。
视图的操作包括创建视图,查看视图,删除视图和修改视图。
解析:
视图根本用途:简化 sql 查询,提高开发效率。如果说还有另外一个用途那就是兼容老的表
结构。
下面是视图的常见使用场景:
重用 SQL 语句;
简化复杂的 SQL 操作。在编写查询后,可以方便的重用它而不必知道它的基本查询细节;
使用表的组成部分而不是整个表;
保护数据。可以给用户授予表的特定部分的访问权限而不是整个表的访问权限;
更改数据格式和表示。视图可返回与底层表的表示和格式不同的数据。
解析:
视图的优点:
查询简单化。视图能简化用户的操作
数据安全性。视图使用户能以多种角度看待同一数据,能够对机密数据提供安全保护
逻辑数据独立性。视图对重构数据库提供了一定程度的逻辑独立性
视图的缺点:
性能。数据库必须把视图的查询转化成对基本表的查询,如果这个视图是由一个复杂的
多表查询所定义,那么,即使是视图的一个简单查询
,数据库也把它变成一个复杂的结合体,需要花费一定的时间。
修改限制。当用户试图修改视图的某些行时,数据库必须把它转化为对基本表的某些行
的修改。事实上,当从视图中插入或者删除时,情况
也是这样。对于简单视图来说,这是很方便的,但是,对于比较复杂的视图,可能是不可修
改的。
这些视图有如下特征:
有 UNIQUE 等集合操作符的视图。
有 GROUP BY 子句的视图。
有诸如 AVG\SUM\MAX 等聚合函数的视图。
使用 DISTINCT 关键字的视图。
连接表的视图(其中有些例外)
解析:
超键:在关系中能唯一标识元组的属性集称为关系模式的超键。一个属性可以为作为一个超
键,多个属性组合在一起也可以作为一个超键。超键包含候选键和主键。
候选键:是最小超键,即没有冗余元素的超键。
主键:数据库表中对储存数据对象予以唯一和完整标识的数据列或属性的组合。一个数据列
只能有一个主键,且主键的取值不能缺失,即不能为空值(Null)。
外键:在一个表中存在的另一个表的主键称此表的外键。