数据库(一)

-------------------------------基本概念------------------------------
一.数据模型与数据结构模型
1.数据库系统的数据模型结构有3种:网状模型、层次模型、关系模型。
关系模型:关系模型是二维表,一张表即一个关系,关系模型的数据结构简单、清晰,用户理解容易,应用方便。鉴于此,当今大多数数据库系统都采用关系数据模型。
网状模型:网状模型是一种用网络结构表示实体类型及实体关系之间联系的模型,他相当于一个有向图。与层次模型结构不同的是,在网状模型中,一个结点可以有多个双亲结点,且允许一个以上的结点无双亲。
层次模型:指的是使用树形结构表示实体及其之间的联系,其结构是一棵有向树,树中的每个结点代表一种记录类型,在这些结点中,有且只有一个结点无双亲(根结点),其他结点有且只有一个双亲结点。
例题:用树形结构表示实体之间联系的模型是――――层次模型
2. 数据模型(Data Model)是数据库中用来对现实世界进行抽象的工具,是数据库中用于提供信息表示和操作手段的形式构架。一般地讲,数据模型是严格定义的概念的集合。因此,数据模型通常由数据结构、数据操作和完整性约束三部分组成。
1)数据结构:所研究的对象类型的集合,是对系统静态特性的描述。
2)数据操作:指对数据库中各种对象(型)的实例(值)允许进行的操作的集合,包括操作及有关的操作规则, 是对系统动态特性的描述。
3)完整性约束:它是组完整性规则的集合。完整性规则是给定的数据模型中数据及其联系所具有的制约和依存规则,用以限定符合数据模型的数据库状态以及状态的变化,以保证数据的正确、有效、相容。解析数据模型是数据库系统中最重要的概念之一。
3.数据模型的种类很多,按照这些数据模型在数据建模和数据管理中的不同作用,可以分为概念模型、逻辑模型和物理模型三类。
1).概念模型:概念数据模型(Conceptual Data Model)简称概念模型,它实际上是现实世界到机器世界的一个中间层次。概念模型用于信息世界的建模,是现实世界到信息世界的第一层抽象,是数据库设计人员进行数据库设计的有力工具,也是数据库设计人员和用户之间进行交流的语言。概念模型确定领域实体属性关系等,是独立于计算机系统的数据模型,完全不涉及信息在计算机中的表示,主要用于数据库设计,概念模型是种面向客观世界,面向用户的模型,例如ER模型(Entity系模型)属于概念模型,而E―R图主要由实体、属性和联系三个要素组成。
2).逻辑模型:逻辑数据模型(Logical Data Mode),又称为结构数据模型,是直接面向数据库的逻辑结构。逻辑模型将概念模型转化为具体的数据模型,即按照概念结构设计阶段建立的基本E-R图,按照选定的管理系统软件支持的数据模型(层次、网状、关系、面向对象),转换成相心的逻辑模型。这种转换要符合关系模型的原则。目前最流行的就是关系模型,也就是对应的关系型数据库。逻辑视型有严格的定义,数据库专家EF.Codd认为:一个基本数据楼型是组向用户提供的规则,这些规则规定数据结构如何组织以及允许进行何种操作。它是种与数据库管理系统相关的模型,主要用于DBMS的实现,例如层次模型、网状模型、关系模型、面向对象模型均属于这类数据模型。一个数据库的数据模型应包含数据结构、数据操作和数据完整性约束三个部分。
3).物理模型:物理数据模型(Physical Data Model) 简称物理模型,是根据逻辑模型对应到具体的数据模型的机器实现。物理模型是对真实数据库的描述,例如关系型数据库中的一些对象为表图、字段、数据类型、长度、主外键、约束、默认值等。
二.关系型数据库系统与文件系统
1.关系型数据库系统与文件系统的区别:
1)关系型数据库的整体数据是结构化的,采用关系模型来描述,这是它与文件系统的根木区别(数据模型包括数据结构、数据操作以及完整性约束条件)。
2)数据库系统的数据共享度高、冗余低,是面向整个机构、整个系统水组织数据的:而文件系统则是面向某个应用来组织数据,具有应用范围的局限性,不易扩展。
3)数据库系统具有高度的数据独立性,而文件系统的数据独立性差。关系型数据库系统采用两级映射机制,保证了数据的高度独立性,从而使得程序的编写和数据都存在很高的独立性。这方面是文件系统无法达到的,它只能针对某一个 具体的应用。
4)关系型数据库系统由统的DBMS进行管理,为数据提供了安全性保护、并发控制、完整性检查和数据库恢复服务,而文件系统中由应用程序自己控制。
三.数据库的组成与构成
1.数据库系统(DBS),一般由4个部分组成:数据库、硬件、软件和人员。
1)数据库:是指长期存储在计算机内的、有组织、可共享的数据集合。数据库中的数据按一定的数据模型组织的数学模型组织、描述和存储,具有较小的余,较高的数据独立性和易扩展性,并可为各种用户共享,
2)硬件:构成计算机系统的各种物理设备,包括存储所需的外部设备。硬件的配置应满足整个数据库系统的需要。
3)软件:包括操作系统、数据库管理系统及应用程序。数据库管理系统(DBMS)是数据库系统的核心软件,它在操作系统的支持下工.作,解决如何科学地组织和存储数据,如何高效获取和维护数据的系统软件,其主要功能包括数据定义功能、数据操纵功能、数据库的运行管理和数据库的建立与维护等。
4)人员:主要有4类。第一类为系统分析员和数据库设计人员:系统分析员负责应用系统的需求分析和规范说明,他们和用户及数据库管理员起确定系统的硬件配置,并参与数据库系统的概要设计:数据库设计人员负费数据库中数据的确定、数据库各级模式的设计第,类为应用程序员,负贵编写使可对数据进行检索、建立、删除或修改。第三类为最终用户,他们用数据库的应用程序,这些应用程序 第四类人员是数据库管理员(DBA),负责数据库的总体信息利用系统的接口或查询语言访问数据库。:维护数据库中的信息内容和结构,制定数据库的存储结构和控制。
2. 数据库管理员(DBA)的职责:
维护数据库中的信息内容和结构,
制定数据库的存储结构和存取策略,
定义数据库的安全性要求和完整性约束条件,
监控数据库的使用和运行,
负责数据库的性能改进、数据库的重组和重构,以提供系统的性能。
其中,应用程序包含在软件范围内,是指数据库应用系统。
3. 系统的主要特点有哪些?
1)数据结构化。数据库系统实现整体数据的结构化,这是数据库的主要特征之,也是数据库系统与文件系统的本质区别。
2)数据的共享性高,冗余度低,易扩充。
3)数据独立性高
4)数据由DBMS(数据库管理系统)统一管理和控制。
4.DBMS数据控制提供的数据控制功能包括那些?
数据的安全性保护:保护数据以防不合法的使用造成数据的泄密和破坏
数据的完整性检查:将数据控制在有效范围内,或保证数据之间满足一定的关系
并发控制:对多用户的并发操作加以控制和协调,保证并发的操作的正确性
数据库恢复:能将数据库从错误状态恢复到某一已知的正确状态。
5.数据的物理独立性和逻辑独立性分别指什么?
数据独立性表示应用程序与数据库中有存储的数据不存在依赖关系,包括数据的物理独立性和独立性和逻辑独立性。数据库管理系统的模式结构和二级映像功能保证了数据库中的数据具有很高的物理独立性和逻辑独立性。
物理独立性是指用户的应用程序与存储在磁盘上的数据库中数据是相互独立的。即:数据在磁盘上怎样存储由DBMS管理,用户程序不需要了解,应用程序要处理的只是数据的逻辑结构,这样当物理存储改变了,应用程序不用改变。
逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的,即:当数据的逻辑结构改变时,用户程序也可以不变。
6.使用数据库系统的优势有哪几点?
1)使用数据库系统可以大大提高应用开发的效率,方便用户的使用。在数据库系统中应用程序不必考虑数据的定义、存储和数据存取的具体路径,这些工作都由DBMS(数据库管理系统)来完成。
2)使用数据库系统可以减轻数据库系统管理人员维护系统的负担。因为DBMS(数据库管理系统)在数据库建立、运用和维护时对数据库进行统的管理和控制,包括数据的完整性、安全性、多用户并发控制、故障恢复等,都由DBMS执行。
总之,使用数据库系统的优点是很多的,既便于数据的集中管理,控制数据冗余提高数模的利用率和一致性,又有利于应用程序的开发和维护。
7.数据库设计过程包括哪几个主要阶段?
一般可分为以下几个阶段:①规划:②需求分析:③概念模型设计;④逻辑设计;⑤物理设计:⑥实施:⑦运行及维护。
8.软件生存期有哪几个阶段?
答案:软件定义时期、软件开发时期、软件维护时期。
8.数据库设计过程的输入和输出有哪些内容?
答案:数据库设计过程的输入包括四部分内容:①总体信息需求:②处理需求:③DBMS的特征:④硬件和OS(操作系统)特征。
数据库设计过程的输出包括两部分:
1)完整的数据库结构,包括逻辑结构和物理结构。
2)基于数据库结构和处理需求的应用程序的设计原则。这些输出一般以说明书的形式出现。
9.数据库设计的规划阶段应做哪些事情?
答案:数据库设计中的规划阶段的主要任务是进行数据库建立的必要性及可行性、确定数据库系统在组织中和信息系统中的地位,以及各个数据库之间的联系。

10.数据字典的内容和作用是什么?
答案:数据字典的内容一般包括: 数据项、数据结构、数据流
作用是对系统中数据做出详尽的描述,提供对数据库数据的集中管理。

11.对概念模型有些什么要求?
答案:对概念模型般有以下要求:
1)概念模型是对现实世界的抽象和概括,它应真实、分地反映现实世界中事物和事物之间的联系,具有丰富的语义表达能力,能表达用户的各种需求,包括描述现实世界中各种对象及其复杂联系、用户对数据对象的处理要求和手段。
2)概念模型应简洁、明晰,独立于机器,容易理解,方便数据库设计人员与应用人员交换意见,使用户能积极参与数据库的设计工作。
3)概念模型应易于变动。当应用环境和应用需求改变时,容易对概念模型修改和补充。
4)概念模型应很容易向关系、层次或网状等各种数据模型转换,易于从概念模式导出与DBMS有关的逻辑模式。
12.概念设计的具体步骤是什么?
①进行数据抽象,设计局部概念模式: ②将局部概念模式综台发全局概念模式:③评审。

13.什么是数据抽象?主要有哪两种形式的抽象?数据抽象在数据库设计过程中起什么作用:
答案:数据抽象是对人、物、事或概念的人为处理,它抽取人们关心的共同特性,忽略非本质的细节,并把这些特性用各种概念精确地加以描述,这些概念组成了某种模型。
数据抽象有两种形式:①系统状态的抽象,即抽象对象: ②系统转换的抽象,即抽象运算。
数据抽象是概念设计中非常重要的一步。通过数据抽象,可以将现实世界中的客观对象首先抽象为不依赖任何具体机器的信息结构。

14.数据库逻辑设计的目的是什么?
答案:数据库逻辑设计的目的是把概念设计阶段设计好的E-R图转换为与选用的DBMS所支持的数据模型相符合的逻辑结构(包括数据库内模式和外模式)。逻辑设计过程中的输入信息有:
1)独立于DBMS的概念模式,即概念设计阶段产生的所有局部和全局概念模式。
2)处理需求,即需求分析阶段产生的业务活动分析结果。
3)约束条件,即完整性、一致性、 安全性要求及响应时间要求等。
4) DBMS特性,即特定的DBMS所支持的模式、子模式和程序语法的形式规则。
逻辑设计过程输出的信息有:①DBMS可处理的模式:②子模式:③应用程序设计指南:④物理设计指南。

15.什么是数据库镜像?它有什么用途?
数据库镜像即根据DBA的要求,自动把整个数据库或者其中的部分关键数据复制到另一个磁盘上。每当主数据库更新时,DBMS自动能够把更新后的数据复制过去,即DBMS自动保证镜像数据与主数据的一致。
数据库的镜像用途:
1)用于数据库的恢复
2)提高数据库的可用性
16.什么是日志文件,为什么要设立日志文件?
日志文件是用来记录事务对数据库的更新操作的文件。
设立日志文件的目的是①进行事务故障恢复;②进行系统故障恢复;③协助后备副本进行介质故障恢复。
17.在登陆日志文件的时候为什么要必须先写日志文件后写数据库
把对数据的修改写到数据库中和把表示这个修改的日志记录写到日志文件中是两个不同的操作。有可能在这两个操作之间发生故障,即这两个写操作只完成了一个。如果先写了数据库修改,而在运行记录中没有登记这个修改,那么以后再也无法恢复这个修改了;如果先写日志,但没有修改数据库,那么在恢复时只不过是多执行一次Undo操作,并不会影响数据库的正确性。所以一定要先写日志文件,即首先把日志记录写到日志文件中,然后写数据库的修改。
18.数据库运行的过程中可能出现的故障有几类?那些故障影响事务的正常执行?那些故障破坏数据库的数据?
故障大致可分为:①事物内部的故障;②系统故障;③介质故障;④计算机病毒。
其中,事务故障、系统故障和介质故障影响事物的正常执行;介质故障和计算机病毒破坏数据库数据。
四.关系型数据库完整性规则
1.什么是数据库的完整性规则?
数据库完整性是指数据库中数据在逻辑上的一致性、正确性、有效性和相容性。
2.关系型数据库的三类完整性规则:
①实体完整性:关系的主属性不能为空值。
②参照完整性:如果关系R1的外键和关系R2的主键相符,那么外键的每个值必须在关系R2的主键的值中可以找到或者是空值;如果在两个有关联的数据表中,那么一个数据表的外键一定在另一个数据表中的主键中找到。因此定义外部关键字数据参照完整性。
③用户自定义完整性:某一个具体的实际数据库的约束条件,由应用环境所决定。
五.三级模式两级映像
1.三级模式:内模式、模式、外模式
两级映像:内模式映像、外模式映像
2.三级模式和两级映像有什么优点?
①数据库的二级映像保证了数据库外模式的稳定性,从而从底层保证了应用程序的稳定性。
②数据和程序之间的独立性使得数据的定义和描述可以从应用程序中分离出去。另外由于数据的存取由DBMS管理,用户不必考虑存储路径等细节,从而简化了应用程序的编制,大大减少了应用程序的维护和修改。
------------------------------------------数据库分类----------------------------------

  1. 请简述Oracle、MySQL、SQL Server数据库
    Oracle:是甲骨文公司的一款关系型数据库管理系统。是目前世界上流行的关系型数据库管理系统,系统可移植性好、使用方便、功能强大,适用于各类大、中、小、微机环境(大型业务,如:电信、移动、联通、公安系统)。是一种高效率、可靠性好、适应高吞吐量的数据库解决方案。
    MySQL:是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,现被甲骨文收购,适用于①Web网站系统;②日志记录系统;③数据仓库系统;④嵌入式系统
    SQL Server:由微软开发,免费适用于小型企业。
    --------------------------------------范式和反范式---------------------------
  2. 什么是范式,范式有哪些优缺点?
    当设计关系型数据库时,需要遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,越高的范式数据库冗余越小。
    优点:消除重复数据,减少数据冗余,让数据库内的数据更好地组织,让磁盘空间得到更有效的利用。
    缺点:范式的查询变得相当的复杂,在查询时需要更多地连接,一些复合索引的列由于范式化的需要被分割到不同的表中,导致索引不佳。
    2.**目前关系型数据库有六种范式:**第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)、第五范式(5NF,又称完美范式)。

第一范式(1NF):
特征:每一个属性不可再分
详解:所谓的第一范式是指在关系模型中,对域添加规范的要求,所有的域都应该是原子数据项,而不能是集合、数组、记录等非原子数据项。即当实体中的某个属性有多个值时,必须将其拆分为不同的属性。在符合第一范式表中的每个域值只能是实体的一个属性或一个属性的一部分。简言之,第一范式就是无重复的域。
举例:由“职工号”“姓名”“电话号码”组成的职工表,由于一个人可能有一个办公电话和移动电话,所以这是可以将其划分为第一范式。将电话号码划分为 “办公电话”和“移动电话两个属性”,即职工表(职工号,姓名,办公电话,移动个电话)。
第二范式(2NF)
特征:符合1NF,并且,非主属性完全依赖于码
详解:在第一范式的基础上,消除非主属性对主键部分的函数依赖。 在举例:选课关系表(学号,课程号,成绩,学分)中,码为组合关键字(学号,课程号)。但是由于非主属性学分仅仅依赖于课程号,对关键字(学号,课程号)只是部份依赖,而不是完全依赖,所以,此种方式会导致数据冗余、更新异常、插入异常和删除异常等问题,其设计模式不符合2NF。解决办法:将其分为两个关系模式:学生表(学号,课程号,分数)和课程表(课程号和学分),新关系通过学生表中的外键字课程号联系,在需要时通过两个表的连接来取出数据。
第三范式(3NF)
特征:符合1NF,并且,每个非主属性既不部份依赖于码也不传递依赖于码(在2NF基础上消除传递依赖)。
详解:如果关系模式R是第二范式,且每个非主属性都不传递依赖于R的码,则称R是第三范式的模式。第三范式是第二范式的一个子集,即满足第三范式必须要满足第二范式。
举例:学生表(学号,姓名,课程号,成绩),其中学生姓名若无重名,则该表有两个候选码(学号,课程号)和(姓名,课程号),存在函数依赖:学号姓名,(学号,课程号)成绩,(姓名,课程号)成绩,唯一的非主属性成绩对码不存在部份依赖,也不存在传递依赖,所以属于3NF。
3.什么是反范式?及其优缺点
不满足范式的模型,就是反范式模型。反范式与范式所有要求的正好相反,在反范式的设计模式中,可以允许适当的数据冗余,用这个冗余可以缩短查询获取数据的时间。反范式其本质就是用空间来换取时间,把数据冗余在多个表中,在查询时就可以减少或者避免表之间的关联。反范式技术也可以称为反规范化技术。
优点:减少数据库查询时表之间的连接次数,可以更好地利用索引进行筛选和排序,从而减少了I/O数据量,提高查询效率。
缺点:数据存在重复和冗余,存在部分空间浪费。另外,为了保持数据的一致性,必须维护这部分冗余数据,因此增加了维护的复杂性。所以,在进行范式设计时,要在数据一致性与查询之间找到平衡点,因为符合业务场景的设计才是好设计。
4.范式和反范式的对比:
模型 优点 缺点
范式化模型
优点:数据没有冗余,易更新。
缺点:当表的数据量比较多,查询设计需要很多关联模型时,会导致查询性能低下。
反范式化模型
优点:数据冗余将带来很好的读取性能(因为不需要关联很多表,而且通常反范式模型很少做更新操作)。
缺点:需要维护冗余数据,从目前NoSQL的发展可以看到,对磁盘空间的消耗是可以接受的。
5.常见数据库的反范式技术有哪些?
①增加冗余列;②增加派生列;③表水平分割;④表垂直分割。
-----------------------------------------------事务--------------------------------
1.特性:
事务有4个特性,一般称之为ACID特性。
名称 简介 举例
**原子性A:**事务里的所有操作要么全部做完,要么都不做,事务成功的条件 是事务里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚。
举例:
比如银行转账,从A账户转100元至B账户,分为两个步骤:1)从A账户取100元;2)存入100元至B账户。这两步要么一起完成,要么一起不完成,如果只完成第一步,第二步失败,钱会莫名其妙少了100元。
**一致性C:**一致性也比较容易理解,也就是说数据库要一直处于一致的状态,事务的运行不会改变数据库原本的一致性约束。
举例:
例如现有完整性约束a+b=10,如果一个事务改变了a,那么必须得改变b,使得事务结束后依然满足a+b=10,否则事务失败。
隔离性I:所谓的隔离性是指并发的事务之间不会互相影响,如果一个事务要访问的数据正在被另外一个事务修改,只要另外一个事务未提交,它所访问的数据就不受未提交事务的影响。
举例:
比如现有有个交易是从A账户转100元至B账户,在这个交易还未完成的情况下,如果此时B查询自己的账户,是看不到新增加的100元的。
持久性D: 持久性是指一旦事务提交后,它所做的修改将会永久的保存在数据库上,即使出现宕机也不会丢失。
2.事务可以分为那些类?
①扁平事务
②带有保存点的扁平事务
③链事务
④嵌套事务
⑤分布式事务
3.隔离级别及区别
现象 简介
脏读: 脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。可以理解为读取未提交数据

不可重复读 :是指在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据。那么,在第一个事务中的两次读数据之间,由于第二个事务的修改,那么第一个事务两次读到的的数据可能是不一样的。这样就发生了在一个事务内两次读到的数据是不一样的,因此称为是不可重复读。可以理解为前后多次读取,数据内容不一致

幻读 :是指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行。同时,第二个事务也修改这个表中的数据,这种修改是向表中插入一行新数据。那么,以后就会发生操作第一个事务的用户发现表中还有没有修改的数据行,就好象发生了幻觉一样。可以理解为前后多次读取,数据总量不一致

脏读和不可重复读的区别:脏读是某一事务读取了另一个事务未提交的脏数据,而不可重复读则是在同一事物范围内多次查询同一条数据却返回了不同的数据值,这是由于在查询间隔期间,该数据被另一个数据修改并提交了。
幻读和不可重复读的区别:幻读和不可重复读都是读取了另一个事务中已经提交的数据,不同的是不可重复读查询的都是同一个数据项,而幻读针对的是一个数据整体(例如,数据的条数)。

4.在SQL标准中定义的4种隔离级别
未提交读 Read Uncommitted:一个事务可以读取到,另外一个事务尚未提交的变更
提交读 Read Committed:一个事务提交后,其变更才会被另一个事务读取到。
可重复读 Repeatable Read:在一个事务执行的过程中所读取到的数据,和事务启动时所看到的一致。
可串行化、序列化 Serializable:当操作一行数据时,读写分别都会加锁。当出现读写锁互斥时,会排队串行执行。

Read Uncommitted未提交读Read Committed提交读Repeatable Read可重复读Serializable可串行化、序列化
脏读允许
不可重复读允许允许
幻读允许允许允许
默认级别数据库Oracle、SQL ServerMySQL
并发性能最高比未提交读低比提交读低最低

--------------------------------------------锁-------------------------------------------
1.数据库三级封锁协议和两段锁协议
基本封锁类型:排它锁(X锁)和共享锁(S锁)
封锁协议: 在运用X锁和S锁对数据对象加锁时,还需要约定一些规则 ,例如何时申请X锁或S锁、持锁时间、何时释放等。称这些规则为封锁协议(Locking Protocol)。对封锁方式规定不同的规则,就形成了各种不同的封锁协议。
三级封锁协议:
1)一级封锁协议
一级封锁协议是:事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。事务结束包括正常结束(COMMIT)和非正常结束(ROLLBACK)。
一级封锁协议可以防止丢失修改(因为事务结束前都禁止其它事务进行数据修改),并保证事务T是可恢复的。使用一级封锁协议可以解决丢失修改问题。
在一级封锁协议中,如果仅仅是读数据不对其进行修改,是不需要加锁的,它不能保证可重复读和不读“脏”数据。
2)二级封锁协议
二级封锁协议是:一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,读完后方可释放S锁。
二级封锁协议除防止了丢失修改,还可以进一步防止读“脏”数据(确保在数据读取期间没有其它事务修改)。但在二级封锁协议中,由于读完数据后即可释放S锁,所以它不能保证可重复读。
3)三级封锁协议
三级封锁协议是:一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放。
三级封锁协议除防止了丢失修改和不读“脏”数据外,还进一步防止了不可重复读。(因为直到事务结束前,由于加了S锁,始终不会有其它事务对其进行修改)
两段协议:
① 在对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁。
② 在释放一个封锁之后,事务不再申请和获得其它任何封锁。
即事务的执行分为两个阶段:
第一阶段是获得封锁的阶段,称为扩展阶段。
第二阶段是释放封锁的阶段,称为收缩阶段。
可以证明,若并发执行的所有事务均遵守两段锁协议,则对这些事务的任何并发调度策略都是可串行化的。
另外要注意两段锁协议和防止死锁的一次封锁法的异同之处。一次封锁法要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行,因此一次封锁法遵守两段锁协议;但是两段锁协议并不要求事务必须一次将所有要使用的数据全部加锁,因此遵守两段锁协议的事务可能发生死锁。
三级封锁协议的目的是在不同程序上保证数据的一致性。三级封锁协议是从锁的隔离程度来定义,两段锁协议是从加锁、解锁的角度来描述。
2.什么是锁
锁机制用于管理对共享资源的并发访问,用于多个用户的环境下,可以保证数据库的完整性和一致性。以商场试衣间为例,一个试衣间可供多个消费者使用,为了避免冲突,试衣间加了锁,试衣服的人把门锁上其他人就不可以进去试衣服,只有是衣服的人换好衣服把门打开外面的人才可以进。
当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制,则就有可能读取和存储到不正确的数据,破坏数据库的完整性和一致性。当事务对某个数据对象进行操作前,先向系统发出请求,对其加锁。加锁后事务就对该数据对象有了一定的控制。
3.什么是更新丢失?
更新丢失就是两个事务都同时更新一行数据,一个事务对数据的更新把另一个事务对数据的更新覆盖了。这是因为系统没有执行任何的锁操作,因此并发事务并没有被隔离开。
4.什么是乐观锁、悲观锁?
乐观锁:缩写为OCC,从字面意义上理解,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据。相对于悲观锁,乐观锁在处理数据库时,不会使用数据库提供的锁机制,一般事项乐观锁的的方式就是记录数据版本。 悲观锁:缩写为PCC。是每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会进入阻塞状态,直到它拿到锁。
乐观锁应用场景:数据更新不频繁、查询比较多的场合,这样可以提高吞吐量
悲观锁应用场景:数据更新比较频繁的场合
5.数据库以及线程发生死锁的原理是什么?
所谓死锁指的是两个以及两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞现象,如果无外力作用,那么他们都将无法推进下去。此时,称系统处于死锁状态或者系统产生了死锁,这些永远在互相等待的进程称为死锁进程。
6.活锁产生的原因和解决方法
产生原因:当一系列封锁不能按照其先后顺序执行时,就可能导致一些事务无限期等待某个封锁,从而导致活锁。
解决方法:采用先来先服务的策略。当多个事务请求封锁同一数据对象时,封锁子系统按请求封锁的先后次序对事务排队,数据对象上的锁一旦释放就批准申请队列中的第一个事务获得锁。
7.什么是活锁
该等待事务等待时间太长,似乎被锁住了,实际上可能被激活。
-----------------------------------数据库对象-----------------------------------------
一.存储过程
1.什么是存储过程?
存储过程就是一条或多条SQL语句的集合,当对数据库进行一系列的操作时,存储过程就可以将这些复杂的操作封装成一个代码块,以便重复使用,大大减少了数据库开发人员的工作量。
2.存储过程有哪些优点?
① 存储过程的能力大大增强了SQL语言的功能和灵活性。
存储过程可以用流控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的 运算。
② 可保证数据的安全性和完整性。
③ 在运行存储过程前,数据库已对其进行了语法和句法分析,并给出了优化执行方案。这种已经编译好的过程可极大地改善SQL语句的性能。
④ 可以降低网络的通信量。
⑤ 使体现企业规则的运算程序放入数据库服务器中,以便集中控制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值