考研复试-操作系统面试题

1. 事务的四个属性

ACID。即原子性(atomicity)、一致性(consistency )、隔离性(isolation)、持久性( durability)

原子性:表示这事务要么做,要么不做。

一致性:与原子性关系紧密,事务从提交之前由一个一致性状态到另一个一致性状态。

隔离性:事务之间不能互相干扰。

持久性:事务提交后对数据库中华的数据影响是永远的。


2.什么是存储过程,与函数有什么区别?

储存过程是一组编译的SQL语句。在大型数据库系统中,为了提高效率,将为了完成特定功能的SQL语句集进行编译优化后,存储在数据库服务器中,用户通过指定的存储过程的名字来调用执行。

与函数的区别:

(1)函数只能返回一个值或表的对象。存储过程可以返回多个参数。

(2)函数可以在SQL语句中使用,可以在select中使用。但是存储过程不行。

(3)存储过程实现的功能较复杂,执行速度会更快。函数实现的功能针对性较强。


3.什么是触发器  

触发器是一个特殊的存储过程,存储过程是我们调用的时候发生,而触发器是在某个事件触发的时候,自动执行。根据SQL语句的不同,触发器可分为两类:DMLinsert,updatedelete)触发器和DLLcreatealterdrop)触发器。

 触发器的主要作用表现在以下几个方面:
   
(1)增加安全性。
   
(2)利用触发器记录所进行的修改以及相关信息,跟踪用户对数据库的操作,实现审计。
   
(3)维护那些通过创建表时的声明约束不可能实现的复杂的完整性约束以及对数据库中特定事件进行监控与响应。
   
(4)实现复杂的非标准的数据库相关完整性规则、同步实时地复制表中的数据。
   
(5)触发器是自动的,它们在对表的数据做了任何修改之后就会被激活。例如,可以自动计算数据值,如果数据的值达到了一定的要求,则进行特定的处理。以某企业财务管理为例,如果企业的资金链出现短缺,并且达到某种程度时,则发送警告信息。



4.数据库的主键、超键、侯选建

超键(super key):在关系中能唯一标识元组的属性集称为关系模式的超键

候选键(candidate key):不含有多余属性的超键称为候选键
主键(primary key):用户选作元组标识的一个候选键程序主键
看下面的案列
学号 姓名 性别 年龄 系别 专业
20020612 李辉 男 20 计算机 软件开发
20060613 张明 男 18 计算机 软件开发
20060614 王小玉 女 19 物理 力学
20060615 李淑华 女 17 生物 动物学
20060616 赵静 男 21 化学 食品化学
20060617 赵静 女 20 生物 植物学
我们先看超键。这里{学号}可以作为超键,{名字}不可以作为超键。{学号,姓名}可以作为超键。注意可以是一个属性集。
再来看侯选建,首先它肯定是超键,那么{学号}满足,且没有多余的属性。再看{学号,姓名}这里姓名是个多余的,因为学号可以标识元组了,所以{学号,姓名}不是一个侯选建。
最后看主键。因为侯选建不唯一,主键只要选出一个侯选建,将器当成主键即可。

5.三个范式

第一范式:确保每列的原子性。如一个属性是地址,地址还可以细分为国家,省县,即不满足原子性。
第二范式:首先要满足第一范式的基础上,还要确保每列与主键是相关的。如(订单编号,产品编号,订购日期)这里的产品编号并没有和订单编号是相关的,所以不满足第二范式。
第三范式:在满足第二范式的基础上,还有让每列除了主键都是没有关系的。如(订单编号,订购日期,顾客编号,顾客姓名)虽然每列都与主键订单编号是相关的,但是你会发现顾客编号和顾客姓名是有联系的,即不满足第三范式。


6.什么是索引

索引是一种提高数据库查询速度的机制,它是一个在数据库的表或视图上按照某个关键字段的值,升序或降序排序创建的对象。你可以理解为索引是一种数据结构,按某个关键字建立一个B树,这样按这个关键字查询的时候会很快。但是相应的存储空间的开销大了,要拿出一部分空间来存储这个B树,并且数据在插入和修改的时候所需要的时间也比较多。


7.什么是游标

在数据库中,游标提供了一种对从表中检索出的数据进行操作的灵活手段。它实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。
    游标总是与一条SQL选择语句相关联,因为游标由结果集(可以是零条、一条或由相关的选择语句检索出的多条记录)和结果集中指向特定记录的游标位置组成。当决定对结果集进行处理时,必须声明一个指向该结果集的游标。
    游标允许应用程序对查询语句select返回的行结果集中每一行进行相同或不同的操作,而不是一次对整个结果集进行同一种操作。它还提供对基于游标位置而对表中数据进行删除或更新的能力。而且,正是游标把作为面向集合的数据库管理系统和面向行的程序设计两者联系起来,使两个数据处理方式能够进行沟通。
    游标的优点有以下两个方面的内容:
(1)在使用游标的表中,对行提供删除和更新的能力。
(2)游标将面向集合的数据库管理系统和面向行的程序设计连接了起来。



8.如果数据库日志满了会出现什么情况?

 日志文件(Log File)记录所装对数据库数据的修改,主要是保户数据库以防止故障,以及复数据时使恢复用。其特点如下:
   (1)每一个数据库至少包含两个日志文件组。每个日志文件组至少包含两个日志文件成员;
   (2)日志文件组以循环方式进行写操作;
   (3)每一个日志文件成员对应一个物理文件。
    通过日志文件来记录数据库事务可以最大限度地保证数据的一致性与安全性,但一旦数据库中日志满了,就只能执行查询等读操作,不能执行更改、备份等操作。其原因是任何写操作都要记录日志,也就是说基本上处干不能使用的状态。


9.什么是回滚?和撤销有什么区别?   

为了保证在应用程序、数据库或系统出现错误后,数据库能够被还原,以保证数据库的完整性,所以需要进行回滚。回滚(rollback)就是在事务提交之前将数据库数据恢复到事务修改之前数据库数据状态。
   
需要注意回楼与撤销的区别。回滚是指将数据库的状态恢复到执行事务之前的状态,其中可能会使用UNDO日志进行回漆。撤销是一种记录日志的方式,并不是主要服务于事务回滚,而是主要用于系统从故障中恢复。例如,系统突然断电,系统要根据UNDO日志对未完成的事务进行处理,保证数据库的状态为执行这些事务前的状态。


10.什么是视图

 视图是由从数据库的基本表中选取出来的数据组成的逻辑窗口,不同于基本表。它是一个虚表,在数据库中,存放的只是视图的定义而己,不存放视图包含的数据项,这些项目仍然存放在原来的基本表结构中。

视图的作用非常多,主要有以下几点:首先可以简化数据查询语句;其次可以使用户能从多角度看待同一数据;然后,通过引入视图,可以提高数据的安全性;最后,视图提供了一定程度的逻辑独立性等

这里讲一下为什么视图可以提高安全性。因为视图是虚拟的,物理上是不存在的,用户对视图不可以随意的更改和删除,这样可以在一定程度上保证了安全。


11.什么是共享锁?互斥锁?

在数据库中,锁主要是对数据进行读/写的一种保护机制,从数据库系统的角度来看,一般可以将锁分为共享锁和互斥锁。共享锁简称S锁,也叫读锁。用于不更改或不更新数据的操作(只读操作),如select语句。如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁,不能加排他锁。共享锁可阻止其他并发运行的程序获取重叠的独占锁定,但是允许该程序获取重叠的共享锁定。其他用户可以获取共享锁锁定的资源,但是不能进行修改该共事锁。在执行select命令时,SQL Server 通常会对对象进行共享锁锁定。若事务T对数据DS锁,则其他事务只能对DS锁,而不能加X锁,直至T释放D上的S锁;一般要求在读取数据前要向该数据加共享锁,所以共享锁又称为读锁。通常加共享锁的数据页被读取完毕后,共享锁就会立即被释放。互斥锁简称X锁,也叫排他锁,用于数据修改操作,如insertupdatedelete。确保不会同时对同一资源进行多重更新。为了保证数据操作的完整性,引入了互斥锁。用互斥锁来保证在任意时刻,只能有一个线程访问对象。若事务T对数据DX锁,则其他任何事务都不能再对D加任何类型的锁,直至T释放D上的X锁;一般要求在修改数据前要向该数据加排他锁,所以排他锁又称为写锁。


  • 7
    点赞
  • 94
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值