ImageVerifierCode 换一换
格式:DOC , 页数:29 ,大小:270.04KB ,
资源ID:8189367      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/8189367.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(2024年数据库面试基础知识总结.doc)为本站上传会员【天****】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

2024年数据库面试基础知识总结.doc

1、1. 数据抽象:物理抽象、概念抽象、视图级抽象,内模式、模式、外模式 提示: (1). 概念模式:(面对单个用户的) 是数据中所有数据的整体逻辑结构的描述。它由若干个概念统计类型组成。 (2). 外模式:(面对全局的) 是用户与数据库系统的接口,是用户用到的那部分数据的描述。它由若干个外部统计类型组成。 (3). 内模式:(面对存储的) 是数据库在物理存储方面的描述,它定义所有的内部统计类型、索引、和文献的组织方式,以及数据控制方面的细节。 模式描述的是数据的全局逻辑结构,外模式描述的是数据的局部逻辑结构。对应与同一个模式能够有任意多个外模式。在数据

2、库中提供两级映像功效,即外模式/模式映像和模式/内模式映像。对于没一个外模式,数据库系统都有一个外模式/模式映像它定义了该外模式与模式之间的对应关系。这些映像定义一般包括在各自外模式的描述中,当模式变化时,由数据库管理员对各个外模式/模式的映像做对应变化,能够使外模式保持不变,从而应用程序无须修改,确保了数据的逻辑独立性。数据库中只有一个模式,也只有一个内模式,因此模式/内模式映像是唯一的,它定义了数据全局逻辑结构与存储结构之间的对应关系。当数据库的存储结构变化了,由数据库管理员对模式/内模式映像做对应变化,能够使模式保持不变,从而确保了数据的物理独立性。 2. SQL语言包括数据定义、

3、数据操纵(Data Manipulation),数据控制(Data Control) 数据定义:Create Table,Alter Table,Drop Table, Craete/Drop Index等 数据操纵:Select ,insert,update,delete, 数据控制:grant,revoke 3. SQL常用命令 CREATE TABLE Student( ID NUMBER PRIMARY KEY, NAME VARCHAR2(50) NOT NULL);//建表 CREATE VIEW view_name AS Select * FROM Tabl

4、e_name;//建视图 Create UNIQUE INDEX index_name ON TableName(col_name);//建索引 INSERT INTO tablename {column1,column2,…} values(exp1,exp2,…);//插入 INSERT INTO Viewname {column1,column2,…} values(exp1,exp2,…);//插入视图实际影响表 UPDATE tablename SET name=’zang 3’ condition;//更新数据 DELETE FROM Tablename WHERE co

5、ndition;//删除 GRANT (Select,delete,…) ON (对象) TO USER_NAME [WITH GRANT OPTION];//授权 REVOKE (权限表) ON(对象) FROM USER_NAME [WITH REVOKE OPTION] //撤权 列出工作人员及其领导的名字: Select E.NAME, S.NAME FROM EMPLOYEE E S WHERE E.SUPERName=S.Name 4. 视图 提示: 计算机数据库中的视图是一个虚拟表,其内容由查询定义。同真实的表同样,视图包括一系列带有名称的列和行数据。不过,视

6、图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。 从用户角度来看,一个视图是从一个特定的角度来查看数据库中的数据。从数据库系统内部来看,一个视图是由SELECT语句组成的查询定义的虚拟表。从数据库系统内部来看,视图是由一张或多张表中的数据组成的,从数据库系统外部来看,视图就犹如一张表同样,对表能够进行的一般操作都能够应用于视图,例如查询,插入,修改,删除操作等。 5. 完整性约束:实体完整性、参考完整性、用户定义完整性 提示: 定义:关系完整性是为确保数据库中数据的正确性和相容性,对关系模型提出的某种约束条件或规则。完整

7、性一般包括域完整性,实体完整性、参考完整性和用户定义完整性,其中域完整性,实体完整性和参考完整性,是关系模型必须满足的完整性约束条件。 (1). 域完整性约束:域完整性是确保数据库字段取值的合理性。    属性值应是域中的值,这是关系模式要求了的。除此之外,一个属性能否为NULL,这是由语义决定的,也是域完整性约束的重要内容。域完整性约束是最简单、最基本的约束。在当今的关系DBMS中,一般都有域完整性约束检查功效。   包括检查(CHECK)、默认值(DEFAULT)、不为空(NOT NULL)等。 (2). 实体完整性   实体完整性是指关系的主核心字不能重复也不能取“空值\"。

8、   一个关系对应现实世界中一个实体集。现实世界中的实体是能够相互辨别、识别的,也即它们应具备某种惟一性标识。在关系模式中,以主核心字作为惟一性标识,而主核心字中的属性(称为主属性)不能取空值,否则,表白关系模式中存在着不可标识的实体(因空值是“不确定\"的),这与现实世界的实际情况相矛盾,这么的实体就不是一个完整实体。按实体完整性规则要求,主属性不得取空值,如主核心字是多个属性的组合,则所有主属性均不得取空值。   如表1.1将编号作为主核心字,那么,该列不得有空值,否则无法对应某个详细的职工,这么的表格不完整,对应关系不符合实体完整性规则的约束条件。 (3). 参考完整性   参考完

9、整性是定义建立关系之间联系的主核心字与外部核心字引用的约束条件。   关系数据库中一般都包括多个存在相互联系的关系,关系与关系之间的联系是通过公共属性来实现的。所谓公共属性,它是一个关系R(称为被参考关系或目标关系)的主核心字,同时又是另一关系K(称为参考关系)的外部核心字。假如参考关系K中外部核心字的取值,要么与被参考关系R中某元组主核心字的值相同,要么取空值,那么,在这两个关系间建立关联的主核心字和外部核心字引用,符合参考完整性规则要求。假如参考关系K的外部核心字也是其主核心字,依照实体完整性要求,主核心字不得取空值,因此,参考关系K外部核心字的取值实际上只能取对应被参考关系R中已经存在

10、的主核心字值。   在学生管理数据库中,假如将选课表作为参考关系,学生表作为被参考关系,以“学号\"作为两个关系进行关联的属性,则“学号\”是学生关系的主核心字,是选课关系的外部核心字。选课关系通过外部核心字“学号’’参考学生关系。 (4). 用户定义完整性 实体完整性和参考完整性适合用于任何关系型数据库系统,它重要是针对关系的主核心字和外部核心字取值必须有效而做出的约束。用户定义完整性则是依照应用环境的要求和实际的需要,对某一详细应用所包括的数据提出约束性条件。这一约束机制一般不应由应用程序提供,而应有由关系模型提供定义并检查,用户定义完整性重要包括字段有效性约束和统计有效性。

11、6. 第三范式: 提示: (1). 第一范式(1NF):在关系模式R中的每一个详细关系r中,假如每个属性值都是不可再分的最小数据单位,则称R是第一范式的关系。例:如职工号,姓名,电话号码组成一个表(一个人也许有一个办公室电话和一个家里电话号码) 规范成为1NF有三种措施: 一是重复存储职工号和姓名。这么,核心字只能是电话号码。 二是职工号为核心字,电话号码分为单位电话和住宅电话两个属性 三是职工号为核心字,但强制每条统计只能有一个电话号码。 以上三个措施,第一个措施最不可取,按实际情况选用后两种情况。 (2). 第二范式(2NF):假如关系模式R(U,F)中的所有非主属

12、性都完全依赖于任意一个候选核心字,则称关系R 是属于第二范式的。 例:选课关系 SCI(SNO,CNO,GRADE,CREDIT)其中SNO为学号, CNO为课程号,GRADEGE 为成绩,CREDIT 为学分。 由以上条件,核心字为组合核心字(SNO,CNO) 在应用中使用以上关系模式有如下问题: a.数据冗余,假设同一门课由40个学生选修,学分就 重复40次。 b.更新异常,若调整了某课程的学分,对应的元组CREDIT值都要更新,有也许会出现同一门课学分不一样。 c.插入异常,如计划开新课,因为没人选修,没有学号核心字,只能等有人选修才能把课程和学分存入。 d.删除

13、异常,若学生已经结业,从目前数据库删除选修统计。某些门课程新生尚未选修,则此门课程及学分统计无法保存。 原因:非核心字属性CREDIT仅函数依赖于CNO,也就是CREDIT部分依赖组合核心字(SNO,CNO)而不是完全依赖。 处理措施:提成两个关系模式 SC1(SNO,CNO,GRADE),C2(CNO,CREDIT)。新关系包括两个关系模式,它们之间通过SC1中的外核心字CNO相联系,需要时再进行自然联接,恢复了本来的关系 (3). 第三范式(3NF):假如关系模式R(U,F)中的所有非主属性对任何候选核心字都不存在传递信赖,则称关系R是属于第三范式的。 例:如S1(SNO,

14、SNAME,DNO,DNAME,LOCATION) 各属性分别代表学号, 姓名,所在系,系名称,系地址。 核心字SNO决定各个属性。因为是单个核心字,没有部分依赖的问题,肯定是2NF。但这关系肯定有大量的冗余,有关学生所在的几个属性DNO,DNAME,LOCATION将重复存储,插入,删除和修改时也将产生类似以上例的情况。 原因:关系中存在传递依赖导致的。即SNO -> DNO。 而DNO -> SNO却不存在,DNO -> LOCATION, 因此核心辽 SNO 对 LOCATION 函数决定是通过传递依赖 SNO -> LOCATION 实现的。也就是说,SNO不直接决定非主属

15、性LOCATION。 处理目地:每个关系模式中不能留有传递依赖。 处理措施:分为两个关系 S(SNO,SNAME,DNO),D(DNO,DNAME,LOCATION) 注意:关系S中不能没有外核心字DNO。否则两个关系之间失去联系。 7. ER(实体/联系)模型 提示: 实体-关系模型是面对现实世界,而不是面对实现措施的,它重要是用于描述现实信息世界中数据的静态特性,而不包括数据的处理过程。 基本概念: 实体:现实世界中任何能够相互辨别的事物。解释:实体能够是人,也能够是物;能够指实际的对象,也能够指某些概念。例如,一个职工、一个学生、一门课,学生的某些选课。 属性

16、实体(或联系)所具备的某方面特性(相称于数据库表的字段(列)。例如:学生实体,可由学号、姓名、性别、年龄、系、年级。(9673101,王平,男,22,计算机系,三年级)这些属性组合起来就体现了一个学生的情况。(相称于统计,特性为字段)。 联系:发生在实体之间具备特定含义的对应关系 PS:实体、属性一般是名词,联系一般是动词 ER图中的四个基本成份: 1. 矩形框,表示实体 2. 菱形框,表示实体之间的联系 3. 椭圆形框,表示实体或联系的属性 4. 直线,连接实体、属性、和联系。直线端部标注联系的种类(1:1、1:N或M:N) 连个实体(或表)之间的联系分为三类: (1)

17、 一对一联系(1:1)假如实体集合A中的每一个实体,实体集合B中最少都一个实体与之联系,反之亦然,则称为实体集合A与实体集合B具备一对一联系,记为1:1。例如,一个班级有一个班长。 (2). 一对多联系(1:n)假如实体集合A中的每一个实体,实体集合B中最少都n(n>=0)个实体与之联系,反之,对于实体集合B中每一个实体,实体集合A中的至多有一个实体与之联系,则称为实体集合A与实体集合B具备一对多联系,记为1:n。例如,一个班级有多个班干部。 (3). 多对多联系(m:n)假如实体集合A中的每一个实体,实体集合B中最少有n(n>=0)个实体与之联系,反之,对于实体集合B中每一个实体,

18、实体集合A中的最少有m(m>=0)个实体与之联系,则称为实体集合A与实体集合B具备多对多联系,记为m:n。例如,一个学生能够选修多门课,一门课能够有多个学生选修。 8. 索引的作用 提示: 能够利用索引迅速访问数据库表中的特定信息。索引是对数据库表中一个或多个列(例如,employee 表的姓氏 (lname) 列)的值进行排序的结构。假如想按特定职工的姓来查找他或她,则与在表中搜索所有的行相比,索引有利于更快地获取信息。 索引提供指针以指向存储在表中指定列的数据值,然后依照指定的排序次序排列这些指针。数据库使用索引的方式与使用书的目录很相同:通过搜索索引找到特定的值,然后跟

19、随指针抵达包括该值的行。 在数据库关系图中,能够为选定的表创建、编辑或删除索引/键属性页中的每个索引类型。当保存附加在此索引上的表或包括此表的数据库关系图时,索引同时被保存。有关详细信息,请参见创建索引。 一般情况下,只有当常常查询索引列中的数据时,才需要在表上创建索引。索引将占用磁盘空间,并且减少添加、删除和更新行的速度。不过在多数情况下,索引所带来的数据检索速度的优势大大超出它的不足之处。然而,假如应用程序非常频繁地更新数据,或磁盘空间有限,那么最佳限制索引的数量。   在创建索引前,必须确定要使用的列和要创建的索引类型。 9. 事务 提示: 数据库事务(Databa

20、se Transaction),是指作为单个逻辑工作单元执行的一系列操作。事务处理能够确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面对数据的资源。通过将一组有关操作组合为一个要么所有成功要么所有失败的单元,能够简化错误恢复并使应用程序愈加可靠。一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性、一致性、隔离性和持久性)属性。 数据库事务的ACID特性 (1). 原子性(atomic)(atomicity)   事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。一般,与某个事务关联的操作具备共同的目标,并且是相互依赖的。假如系统只执行这些操作的一

21、个子集,则也许会破坏事务的总体目标。原子性消除了系统处理操作子集的也许性。 (2). 一致性(consistent)(consistency)   事务在完成时,必须使所有的数据都保持一致状态。在有关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有的内部数据结构(如 B 树索引或双向链表)都必须是正确的。某些维护一致性的责任由应用程序开发人员负担,他们必须确保应用程序已强制所有已知的完整性约束。例如,当开发用于转帐的应用程序时,应防止在转帐过程中任意移动小数点。 (3). 隔离性(insulation)(isolation)   由并发事务所作

22、的修改必须与任何其他并发事务所作的修改隔离。事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。这称为可串行性,因为它能够重新装载起始数据,并且重播一系列事务,以使数据结束时的状态与原始事务执行的状态相同。当事务可序列化时将取得最高的隔离级别。在此级别上,从一组可并行执行的事务取得的成果与通过连续运行每个事务所取得的成果相同。因为高度隔离会限制可并行执行的事务数,因此某些应用程序减少隔离级别以换取更大的吞吐量。预防数据丢失 (4). 持久性(Duration)(durability)   事务完成之后,它对于系统

23、的影响是永久性的。该修改虽然出现致命的系统故障也将一直保持。 10. 数据库中的锁 提示: 在数据库中引入锁的原因: 多个用户同时对数据库的并发操作时会带来如下数据不一致的问题: (1). 丢失更新:A,B两个用户读同一数据并进行修改,其中一个用户的修改成果破坏了另一个修改的成果,例如订票系统。 (2). 脏读:A用户修改了数据,随即B用户又读出该数据,但A用户因为某些原因取消了对数据的修改,数据恢复原值,此时B得到的数据就与数据库内的数据产生了不一致。 (3). 不可重复读:A用户读取数据,随即B用户读出该数据并修改,此时A用户再读取数据时发觉前后两次的值不一致。

24、 并发控制的重要措施是封锁,锁就是在一段时间内严禁用户做某些操作以防止产生数据不一致。 在数据库中重要使用两种锁: (1). 共享锁 共享 (S) 锁允许并发事务读取 (SELECT) 一个资源。资源上存在共享 (S) 锁时,任何其他事务都不能修改数据。一旦已经读取数据,便立即释放资源上的共享 (S) 锁,除非将事务隔离级别设置为可重复读或更高级别,或者在事务生存周期内用锁定提示保存共享 (S) 锁。 (2). 排它锁 排它 (X) 锁能够预防并发事务对资源进行访问。其他事务不能读取或修改排它 (X) 锁锁定的数据。 锁的粒度 锁粒度是被封锁目标的大小,封锁粒度小则并发性高,

25、但开销大,封锁粒度大则并发性低但开销小。 两段锁协议 所谓两段锁协议是指所有事务必须分两个阶段对数据项加锁和解锁:   1. 在对任何数据进行读、写操作之前,首先要申请并取得对该数据的封锁,并且   2. 在释放一个封锁之后,事务不再申请和取得任何其他封锁。   所谓“两段”锁的含义是,事务分为两个阶段,第一阶段是取得封锁,也称为扩展阶段。在这阶段,事务能够申请取得任何数据项上的任何类型的锁,不过不能释放任何锁。第二阶段是释放封锁,也称为收缩阶段。在这阶段,事务能够释放任何数据项上的任何类型的锁,不过不能再申请任何锁。   例如事务T1遵守两段锁协议,其封锁序列是:(如右)

26、   又如事务T2不遵守两段锁协议,其封锁序列是:   Slock A … Unlock A … Slock B … Xlock C … Unlock C … Unlock B;   能够证明,若并发执行的所有事务均遵守两段锁协议,则对这些事务的任何并发调度方略都是可串行化的。   另外要注意两段锁协议和预防死锁的一次封锁法的异同之处。一次封锁法要求每个事务必须一次将所有要使用的数据所有加锁,否则就不能继续执行,因此一次封锁法遵守两段锁协议;不过两段锁协议并不要求事务必须一次将所有要使用的数据所有加锁,因此遵守两段锁协议的事务也许发生死锁。 11. 死锁及处理 提示:

27、 所谓死锁: 是指两个或两个以上的进程在执行过程中,因争夺资源而导致的一个相互等候的现象,若无外力作用,它们都将无法推进下去。此时称系统处在死锁状态或系统产生了死锁,这些永远在相互等候的进程称为死锁进程。 因为资源占用是互斥的,当某个进程提出申请资源后,使得有关进程在无外力协助下,永远分派不到必需的资源而无法继续运行,这就产生了一个特殊现象死锁。 产生死锁的原因 1. 竞争资源引起进程死锁   当系统中供多个进程共享的资源如打印机、公用队列的等,其数目不足以满足诸进程的需要时,会引起诸进程对资源的竞争而产生死锁。   (1). 可剥夺资源和不可剥夺资源   系统中的资源能够分为两

28、类,一类是可剥夺资源,是指某进程在取得此类资源后,该资源能够再被其他进程或系统剥夺。例如,优先权高的进程能够剥夺优先权低的进程的处理机。又如,内存区可由存储器管理程序,把一个进程从一个存储区移到另一个存储区,此即剥夺了该进程本来占有的存储区,甚至可将一进程从内存调到外存上,可见,CPU和主存均属于可剥夺性资源。另一类资源是不可剥夺资源,当系统把此类资源分派给某进程后,再不能强行收回,只能在进程用完后自行释放,如磁带机、打印机等。   (2). 竞争不可剥夺资源   在系统中所配备的不可剥夺资源,因为它们的数量不能满足诸进程运行的需要,会使进程在运行过程中,因争夺这些资源而陷于僵局。例如

29、系统中只有一台打印机R1和一台磁带机R2,可供进程P1和P2共享。假定PI已占用了打印机R1,P2已占用了磁带机R2,若P2继续要求打印机R1,P2将阻塞;P1若又要求磁带机,P1也将阻塞。于是,在P1和P2之间就形成了僵局,两个进程都在等候对方释放自己所需要的资源,不过它们又都因不能继续取得自己所需要的资源而不能继续推进,从而也不能释放自己所占有的资源,以致进入死锁状态。   (3). 竞争暂时资源   上面所说的打印机资源属于可次序重复使用型资源,称为永久资源。尚有一个所谓的暂时资源,这是指由一个进程产生,被另一个进程使用,短时间后便无用的资源,故也称为消耗性资源,如硬件中断、信

30、号、消息、缓冲区内的消息等,它也也许引起死锁。例如,SI,S2,S3是暂时性资源,进程P1产生消息S1,又要求从P3接收消息S3;进程P3产生消息S3,又要求从进程P2处接收消息S2;进程P2产生消息S2,又要求从P1处接收产生的消息S1。假如消息通信按如下次序进行:   P1: ···Relese(S1);Request(S3); ···   P2: ···Relese(S2);Request(S1); ···   P3: ···Relese(S3);Request(S2); ···   并不也许发生死锁。但若改成下述的运行次序:   P1: ···Request(S3)

31、Relese(S1);···   P2: ···Request(S1);Relese(S2); ···   P3: ···Request(S2);Relese(S3); ···   则也许发生死锁。 2. 进程推进次序不当引起死锁   因为进程在运行中具备异步性特性,这也许使P1和P2两个进程按下述两种次序向前推进。   (1) 进程推进次序合法   当进程P1和P2并发执行时,假如按照下述次序推进:P1:Request(R1); P1:Request(R2); P1: Relese(R1);P1: Relese(R2); P2:Request(R2); P2:Re

32、quest(R1); P2: Relese(R2);P2: Relese(R1);这两个进程便可顺利完成,这种不会引起进程死锁的推进次序是合法的。   (2) 进程推进次序非法   若P1保持了资源R1,P2保持了资源R2,系统处在不安全状态,因为这两个进程再向前推进,便也许发生死锁。例如,当P1运行到P1:Request(R2)时,将因R2已被P2占用而阻塞;当P2运行到P2:Request(R1)时,也将因R1已被P1占用而阻塞,于是发生进程死锁。 编辑本段产生死锁的必要条件   虽然进程在运行过程中,也许发生死锁,但死锁的发生也必须具备一定的条件,死锁的发生必须具备如下四个

33、必要条件:   (1)互斥条件:指进程对所分派到的资源进行排它性使用,即在一段时间内某资源只由一个进程占用。假如此时尚有其他进程祈求资源,则祈求者只能等候,直至占有资源的进程用毕释放。   (2)祈求和保持条件:指进程已经保持最少一个资源,但又提出了新的资源祈求,而该资源已被其他进程占有,此时祈求进程阻塞,但又对自己已取得的其他资源保持不放。   (3)不剥夺条件:指进程已取得的资源,在未使用完之前,不能被剥夺,只能在使用完时由自己释放。   (4)环路等候条件:指在发生死锁时,必然存在一个进程——资源的环形链,即进程集合{P0,P1,P2,···,Pn}中的P0正在等候一个P1

34、占用的资源;P1正在等候P2占用的资源,……,Pn正在等候已被P0占用的资源。 处理死锁的基本措施   在系统中已经出现死锁后,应当及时检测到死锁的发生,并采取适当的措施来解除死锁。目前处理死锁的措施可归结为如下四种:   (1) 预防死锁。   这是一个较简单和直观的事先预防的措施。措施是通过设置某些限制条件,去破坏产生死锁的四个必要条件中的一个或者几个,来预防发生死锁。预防死锁是一个较易实现的措施,已被广泛使用。不过因为所施加的限制条件往往太严格,也许会导致系统资源利用率和系统吞吐量减少。   (2) 防止死锁。   该措施同样是属于事先预防的方略,但它并不须事先采取

35、各种限制措施去破坏产生死锁的的四个必要条件,而是在资源的动态分派过程中,用某种措施去预防系统进入不安全状态,从而防止发生死锁。   (3)检测死锁。   这种措施并不须事先采取任何限制性措施,也无须检查系统是否已经进入不安全区,此措施允许系统在运行过程中发生死锁。但可通过系统所设置的检测机构,及时地检测出死锁的发生,并精准地确定与死锁有关的进程和资源,然后采取适当措施,从系统中将已发生的死锁清除掉。   (4)解除死锁。   这是与检测死锁相配套的一个措施。当检测到系统中已发生死锁时,须将进程从死锁状态中解脱出来。常用的实行措施是撤消或挂起某些进程,以便回收某些资源,再将这些资

36、源分派给已处在阻塞状态的进程,使之转为就绪状态,以继续运行。死锁的检测和解除措施,有也许使系统取得很好的资源利用率和吞吐量,但在实现上难度也最大。 解除与预防   了解了死锁的原因,尤其是产生死锁的四个必要条件,就能够最大也许地防止、预防和解除死锁。因此,在系统设计、进程调度等方面注意怎样不让这四个必要条件成立,怎样确定资源的合理分派算法,防止进程永久占据系统资源。另外,也要预防进程在处在等候状态的情况下占用资源,在系统运行过程中,对进程发出的每一个系统能够满足的资源申请进行动态检查,并依照检查成果决定是否分派资源,若分派后系统也许发生死锁,则不予分派,否则予以分派。因此,对资源的分派要

37、予以合理的规划。 有序资源分派法   这种算法资源按某种规则系统中的所有资源统一编号(例如打印机为1、磁带机为2、磁盘为3、等等),申请时必须以上升的次序。系统要求申请进程:   1、对它所必须使用的并且属于同一类的所有资源,必须一次申请完;   2、在申请不一样类资源时,必须按各类设备的编号依次申请。例如:进程PA,使用资源的次序是R1,R2; 进程PB,使用资源的次序是R2,R1;若采取动态分派有也许形成环路条件,导致死锁。   采取有序资源分派法:R1的编号为1,R2的编号为2;   PA:申请次序应是:R1,R2   PB:申请次序应是:R1,R2   这

38、么就破坏了环路条件,防止了死锁的发生。 银行算法   防止死锁算法中最有代表性的算法是Dijkstra E.W 于1968年提出的银行家算法:   该算法需要检查申请者对资源的最大需求量,假如系统现存的各类资源能够满足申请者的祈求,就满足申请者的祈求。   这么申请者就可很快完成其计算,然后释放它占用的资源,从而确保了系统中的所有进程都能完成,因此可防止死锁的发生。 死锁排除的措施   1、撤消陷于死锁的所有进程;   2、逐一撤消陷于死锁的进程,直到死锁不存在;   3、从陷于死锁的进程中逐一强迫放弃所占用的资源,直至死锁消失。   4、从另外某些进程那里强行剥

39、夺足够数量的资源分派给死锁进程,以解除死锁状态。 12. 存储过程 提示: 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功效的SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(假如该存储过程带有参数)来执行它。 存储过程的种类 1. 系统存储过程   以sp_开头,用来进行系统的各项设定.取得信息.有关管理工作。 2. 本地存储过程   用户创建的存储过程是由用户创建并完成某一特定功效的存储过程,实际上一般所说的存储过程就是指本地存储过程。 3. 暂时存储过程   分为两种存储过程:   一是本地暂时

40、存储过程,以井字号(#)作为其名称的第一个字符,则该存储过程将成为一个存储在tempdb数据库中的本地暂时存储过程,且只有创建它的用户才能执行它;   二是全局暂时存储过程,以两个井字号(##)号开始,则该存储过程将成为一个存储在tempdb数据库中的全局暂时存储过程,全局暂时存储过程一旦创建,以后连接到服务器的任意用户都能够执行它,并且不需要特定的权限。 4. 远程存储过程   在SQL Server中,远程存储过程(Remote Stored Procedures)是位于远程服务器上的存储过程,一般能够使用分布式查询和EXECUTE命令执行一个远程存储过程。 5. 扩展存储过

41、程   扩展存储过程(Extended Stored Procedures)是用户能够使用外部程序语言编写的存储过程,并且扩展存储过程的名称一般以xp_开头。 存储过程的优点 1. 存储过程因为SQL语句已经预编绎过了,因此运行的速度比较快。 2. 可确保数据的安全性和完整性。通过存储过程能够使没有权限的用户在控制之下间接地存取数据库,从而确保数据的安全。通过存储过程能够使有关的动作在一起发生,从而能够维护数据库的完整性。 3. 能够减少网络的通信量。存储过程重要是在服务器上运行,减少对客户机的压力。 4. 存储过程能够接收参数、输出参数、返回单个或多个成果集以及返回值。能够向程序

42、返回错误原因 5. 存储过程能够包括程序流、逻辑以及对数据库的查询。同时能够实体封装和隐藏了数据逻辑。 13. 触发器 提示: 触发器(trigger)是个特殊的存储过程,它的执行不是由程序调用,也不是手工开启,而是由事件来触发,例如当对一个表进行操作( insert,delete, update)时就会激活它执行。触发器常常用于加强数据的完整性约束和业务规则等。触发器对表进行插入、更新、删除的时候会自动执行的特殊存储过程。触发器一般用在check约束愈加复杂的约束上面。触发器能够从 DBA_TRIGGERS ,USER_TRIGGERS 数据字典中查到。 触发器和一般的存储过程的区

43、分是:触发器是当对某一个表进行操作。诸如:update、insert、delete这些操作的时候,系统会自动调用执行该表上对应的触发器。 SQL Server 中触发器能够分为两类:DML触发器和DDL触发器,其中DDL触发器它们会影响多个数据定义语言语句而激发,这些语句有create、alter、drop语句。 DML触发器分类(依照触发时间来分) 1. after触发器(之后触发)         (1). insert触发器         (2). update触发器         (3). delete触发器     2. instead of 触发器

44、之前触发) 其中after触发器要求只有执行某一操作insert、update、delete之后触发器才被触发,且只能定义在表上。而instead of触发器表示并不执行其定义的操作(insert、update、delete)而仅是执行触发器自身。既能够在表上定义instead of触发器,也能够在视图上定义。       触发器有两个特殊的表:插入表(instered表)和删除表(deleted表)。这两张是逻辑表也是虚表。有系统在内存中创建者两张表,不会存储在数据库中。并且两张表的都是只读的,只能读取数据而不能修改数据。这两张表的成果总是与被改触发器应用的表的结构相同。当触发

45、器完成工作后,这两张表就会被删除。Inserted表的数据是插入或是修改后的数据,而deleted表的数据是更新前的或是删除的数据。 对表的操作 Inserted逻辑表 Deleted逻辑表 增加统计(insert) 存储增加的统计 无 删除统计(delete) 无 存储被删除的统计 修改统计(update) 存储更新后的统计 存储更新前的统计     Update数据的时候就是先删除表统计,然后增加一条统计。这么在inserted和deleted表就都有update后的数据统计了。注意的是:触发器自身就是一个事务,因此在触发器里面能够对修改数据进行某些特殊的检查。假

46、如不满足能够利用事务回滚,撤消操作。 insert触发器示例   create trigger tri_insert   on student   for insert   as   declare @student_id char(10)   select @student_id=s.student_id from   student s inner join inserted i   on s.student_id=i.student_id   if @student_id=''   begin   raiserror('不能插入1的学号!',

47、16,8)   rollback tran   end   go update触发器示例   create trigger tri_update   on student   for update   as   if update(student_id)   begin   raiserror('学号不能修改!',16,8)   rollback tran   end   go delete触发器示例   create trigger tri_delete   on student   for delete   as

48、  declare @student_id varchar(10)   select @student_id=student_id from deleted   if @student_id='admin'   begin   raiserror('错误',16,8)   rollback tran   end 14.内联接和外联接的区分 提示: 连接查询   通过连接运算符能够实现多个表查询。连接是关系数据库模型的重要特点,也是它区分于其他类型数据库管理系统的一个标志。   在关系数据库管理系统中,表建立时各数据之间的关系无须确定,常把一个实体的所有信息

49、存储在一个表中。当检索数据时,通过连接操作查询出存储在多个表中的不一样实体的信息。连接操作给用户带来很大的灵活性,他们能够在任何时候增加新的数据类型。为不一样实体创建新的表,尔后通过连接进行查询。   连接能够在SELECT 语句的FROM子句或WHERE子句中建立,似是而非在FROM子句中指出连接时有利于将连接操作与WHERE子句中的搜索条件辨别开来。因此,在Transact-SQL中推荐使用这种措施。   SQL-92标准所定义的FROM子句的连接语法格式为:    FROM join_table join_type join_table    [ON (joi

50、n_condition)]   其中join_table指出参加连接操作的表名,连接能够对同一个表操作,也能够对多表操作,对同一个表操作的连接又称做自连接。   join_type 指出连接类型,可分为三种:内连接、外连接和交叉连接。内连接(INNER JOIN)使用比较运算符进行表间某(些)列数据的比较操作,并列出这些表中与连接条件相匹配的数据行。依照所使用的比较方式不一样,内连接又分为等值连接、自然连接和不等连接三种。外连接分为左外连接(LEFT OUTER JOIN或LEFT JOIN)、右外连接(RIGHT OUTER JOIN或RIGHT JOIN)和全外连接(FULL OUTE

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服