1 / 16
文档名称:

数据库-面试题.docx

格式:docx   大小:45KB   页数:16页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

数据库-面试题.docx

上传人:s1188831 2017/8/1 文件大小:45 KB

下载得到文件列表

数据库-面试题.docx

文档介绍

文档介绍:数据库面试题
(注:由于技术题库部分内容来源于网络,内容仅供参考,请面试官根据实际情况甄选使用)
1、事务
    事务是指一个工作单元,它包含了一组数据操作命令,并且所有的命令作为一个整体一起向系统提交或撤消请求操作,即这组命令要么都执行,要么都不执行。例如,网上购物的交易过程至少包括以下几个步骤的操作:
(1)更新客户所购商品的库存信息。
(2)保存客户付款信息。
(3)生成订单井且保存到数据库中。
(4)更新用户相关信息,如购物数量等。
    在正常的情况下,这些操作都将顺利进行,最终交易成功,与交易相关的所有数据库信息也成功地更新。但是,如果遇到突然掉电或是其他意外情况,导致这一系列过程中任何一个环节出了差错,如在更新商品库存信息时发生异常、顾客银行账户余额不足等,都将导致整个交易过程失败。而一旦交易失败,数据库中所有信息都必须保持交易前的状态不变,比如最后一步更新用户信息时失败而导致交易失败,那么必须保证这笔失败的交易不影响数据库的状态,即原有的库存信息没有被更新、用户也没有付款、订单也没有生成。否则,数据库的信息将会不一致,或者出现更为严重的不可预测的后果,数据库事务正是用来保证这种情况下交易的平稳性和可预测性的技术。
    事务必须满足4个属性即原子性(atomicity)、一致性(consistency )、隔离性(isolation)、持久性( durability),即ACID 4种属性。
2、什么是存储过程,与函数有什么区别?
    SQL语句执行的叶候要先编译然后再被执行。在大型数据库系统中,为了提高效率,将为了完成特定功能的SQL语句集进行编译优化后,存储在数据库服务器中,用户通过指定的存储过程的名字来调用执行。存储程是一组予编译的SQL语句。
    使用存储过程可以增强SQL语言的功能和灵活性,由于可以用流程控制语句编写存储过程,有很强的灵活性,所以可以完成复杂的判断和运算,且可以保证数据的安全性和完整性,同时,存储过程可以使没有权限的用户在控制之下间接地存取数据库,也保证了数据的安全。但存储过程不等于函数,两者虽然本质上没有区别,但具体而言有以下几个方面的区别:
   (1)存储过程一般是作为个独立的部分来执行的,而函数可以作为查询语句的一个部分来调用。由于函数可以返回一个对象,因此它一般在查询语句中位于From关键字的后面。
   (2)一般而言,存储过程实现的功能较复杂,而函数实现的功能针对性比较强。
   (3)函数需要用括号包住输入的参数,且只能返回一个值或表对象,存储过程可以返回多个参数。
   (4)函数可以嵌入在SQL中使用,可以在select中调用,存储过程不行。
   (5)函数不能直接操作实体表,只能操作内建表
   (6)存储过程在创建时即在服务器上进行了编译,执行速度更快。
3、什么是死锁?
    在操作系统中有若干程序并发执行,它们不断地申请、释放资源,在此过程中,由于争夺资源而处于无限期的等待状态,造成程序无法继续执行,若无外力作用,它们都将无法推进下去,这时称系统处于死锁状态或系统产生了死锁。此时便只能通过外来打破这种状态。
    产生死锁的原因有以下3点。
    (1)首先,系统资源不足,在系统中常常有多个进程共享资源的情况,如打印机,这些资源在同一时刻只能被一个进程使用。当资源数目不能满足进程时,便可能因为抢夺资源产生死锁。   (2)其次,进程运行推进顺序不对,进程在运行中具有异步性,当进程推进顺序不当时,便产生死锁。例如,进程P1和P2,两进程同时具有R1和R2两个资源时,才能执行,当两进程并发执行时,若P1保持资源R1,P2
保持资源R2,双方都在等待对方释放资源,此时便发生了死锁。
    (3)最后,资源分配不当,如果系统资源充足,进程的资源请求都能得到满足,死锁的可能性会被大大降低,而进程推进顺序与速度不同,也可能会产生死锁。总的来说,产生死锁有4个必要条件:1) 互斥,每个资源每次只能被一个进程使用;2)请求与保持等待,一个进程因请求资源而被阻塞时,对已获得的资源保持不放;3)不可剥夺,进程已获得的资源,在未使用完之前,不能强制剥夺;4)环路等待,若干进程之间形成首尾相接的等待资源关系。
    所以,为了预防死锁,就要打破产生死锁的4个条件中的一个或多个,网此需要最大限度地增加系统资源,合理地安排进程的顺序井确定合理的分配资源的算法。避免死锁是在资源的动态分配过程中,采取有效的方法防止系统进入不安全状态,达到预防死锁的目的,其中最具代表性的方法就是银行家算法。
4、什么是共享锁?互斥锁?
    在数据库中,锁主要是对数据进行读/写的一种保护机制,从数据库系统的角度来看,一般可以将