《数据库程序员面试分模拟题12.docx》由会员分享,可在线阅读,更多相关《数据库程序员面试分模拟题12.docx(15页珍藏版)》请在优知文库上搜索。
1、数据库程序员面试分模拟题12简答题1. Oracle中锁的兼容性是什么样的?正确答案:常见SQ1.语句的锁兼容情况见卜.表。SQ1.语句行级锁模式是否允许锁操作?RS(江表级锁模式翳RXS(2)SRX(5)X(6)SE1.ECT.FROMtable.NU1.1.YYYYYINSERTINTOtable.XRXYYNNNINSERT*+APPEND*INTOvXNNNNNtable.UPDATEtable.XRXY*Y*NNNDE1.ETEFROMtable.XRX*NNNSE1.ECT.FROMtableFORRX(OracIeUPDATE(OF).9i是RS)Y*Y*Y*Y*N1.OCKTA
2、B1.EtableINROWRSYYYYNSHAREMODE1.OCKTAB1.EtableINDCVVVVySHAREUPDATEMODE011I11.OCKTAB1.EtableINROWpVVVMVEXC1.USIVEMODE11AN1.OCKTAB1.EtableINSYNYNNSHAREMODE1.OCKTAB1.EtableINSHAREROWSRXYNNNNEXC1.USIVEMODE1.OCKTAB1.EtableINMNKEXC1.USIVEMODE1、BN注:Y*表示当不与其他事务的行级锁冲突时才允许,否则将产生等待。锁之间的兼容模式见下表。Held/GetNull(I)R
3、S(2)RX(3)S(4)SSX(5)X(6)0、】fJJJJJJ2 RS3 RX4 S5 SSX6 X考点锁2. tnsnanes.Ora文件的作用是什么?正确答案:这个文件类似于1.inux系统的hosts文件,提供tnsname到主机名或者IP的对应关系。只有当sqlnet.Ora中有类似“NAMES.DIRECTORYPATH=(TNSNAMES)”的配置,客户端解析连接字符串时,数据库才会尝试使用这个文件。下面给出一个配置的例子:ORC1.=(DESCRIPTION=(ADDRESS=(PROToCO1.=TCP)(HoST=Ihr)(PoRT=I521)(CONNECT_DATA=
4、(Server=Dedicated)(SERVICE-NME=orcl)其中,每个部分的解梆如卜N1)PROTOCO1.:客户端与服务器端通信的协议,一般为TCP,该内容一般不用改。2)HOST:数据库所在的机器的主机名或IP地址。不管用主机名还是IP地址,在客户端一定要用ping命令ping通数据库所在的机器,否则需要在hosts文件中加入数据库所在的机器的主机名和IP地址的时应关系。3)PORT:数据库监听器的端口,可以查看服务器端的IiStener.ora文件或在数据库服务器中通过ISnrCtlStatUSlistenername命令来查看。一般为1521端口。4)SERVICENAME
5、:在数据库中使用“SHOWPARAMETERSERVICENAME命令查看,一般情况下和DBNAME相同。考点网络什么是分区索引?正确答案:分区索.器是简单地把一个索引分成多个片断。通过把一个索引分成多个片断,可以访问更小的片断(也更快),并且可以把这些片断分别存放在不同的磁盘上,从而避免I/O问题。B-Tree和位图索引都可以被分区,而HASH索引不可以被分区。可以有好几种分区方法:表被分区而索引未被分区;表未被分区而索引被分区;表和索引都被分区。不管采用哪种方法,都必须使用基于成本的优化器。有两种类型的分区索引:本地分区索引和全局分区索引。每个类型都有两个子类型,有前缀索引和无前缀索引。表
6、各列上的索引可以有各种类型索引的组合。如果使用了位图索引,那么就必须是本地索引。索引分区最主要的原因是可以减少所需读取的索引的大小,另外把分区放在不同的表空间中可以提高分区的可用性和可养性。在使用分区后的表和索引时,OraCle还支持并行查询和并行DV1.,这样就可以同时执行多个进程,从而加快处理.SQ1.语句。考点分类4. 区块链和云计算云存储有什么关系?正确答案:云计算通常定义为通过互联网来提供动态易扩展且经常是虚拟化的资源,但是提供云计算平台的往往是一个中心化机构。而区块链组成的网络一般是没有特定的机构,所以区块链更接近分布式计算系统的定义,属于分布式计算的一种。考点NeiYSQ1.和区
7、块链5. 在登记日志文件时为什么必须先写日志文件,后写数据库?正确答案:把对数据的修改写到数据库中和把表示这个修改的日志记录写到日志文件中是两个不同的操作。有可能在这两个操作之间发生故障,即这两个写操作只完成了一个。如果先写了数据库修改,而在运行记录中没有登记这个修改,那么以后就无法恢复这个修改了;如果先写日志,但没有修改数据库,那么在恢复时只不过是多执行一次UndO操作,并不会影响数据库的正确性。所以一定要先写日志文件,即首先把日志记录写到日志文件中,然后写数据库的修改。考点数据库系统的组成与结构6. 在OraCIe中,如何查询视图的所有列?正确答案:使用DBAjAB_COUJMNS视图可以
8、查询到所有的表、视图和簇表的列的详细内容,但是这个视图不包括系统产生的隐藏列和不可见列,而视图DBAJABCO1.s可以杳询到系统产生的隐藏列和不可见列。考点视图7. 请回答以下关于进程、线程以及程序的有关问题:1)进程和线程的区别是什么?2)多线程程序有什么优点与缺点?3)多进程程序有什么优点与缺点?与多线程相比,有什么区别?正确答案:1)进程和线程的关系如下:一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。资源分配给进程,同-进程的所有线程共享该进程的资源。处理机分给线程,即真正在处理机上运行的是线程。线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办
9、法实现同步。线程指的是进程内的一个执行单元,也是进程内的可调度实体。进程和线程的相同点如下:二者都具有ID、一组寄存器、状态、优先级以及所要遵循的调度策略.每个进程都有一个进程控制块,线程也拥有一个线程控制块。线程和子进程共享父进程中的资源:线程和子进程独立于它们的父进程,竞争使用处理器资源:线程和子进程的创建者可以在线程和子进程上实行某些控制,例如,创建者可以取消、挂起、继续和修改线程和子进程的优先级;线程和子进程可以改变其属性并创建新的资源。进程和线程的不同点如下:线程是进程的部分,个没有线程的进程是可以被看作单线程的,如果一个进程内拥有多个线程,进程的执行过程不是一条线(线程)的,而是多
10、条线(线程)共同完成的。启动一个线程所花费的空间远远小于启动一个进程所花费的空间,而旦,线程间彼此切换所需的时间也远远小于进程间切换所需要的时间。系统在运行的时候会为每个进程分配不同的内存区域,但是不会为线程分配内存(线程所使用的资源是它所属的进程的资源),同一个进程内的线程可以共享进程的资源。对不同进程来说,它们具有独立的数据空间,要进行数据的传递只能通过通信的方式进行,这种方式不仅费时,而且很不方便。而一个线程的数据可以直接为其他线程所用,这不仅快捷,而且方便。与进程的控制表PCB相似,线程也有自己的控制表TCB,但是TCB中所保存的线程状态比PCB表中少多了。进程是系统所有资源分配时候的
11、一个基本单位,拥有一个完整的虚拟空间地址,并不依赖线程而独立存在。2)多线程的优点如下:无须跨进程边界;程序逻辑和控制方式简单:所有线程可以直接共享内存和变量等;线程方式消耗的总资源比进程方式少。多线程的缺点如下:每个线程与主程序共用地址空间,受限于2GB地址空间;线程之间的同步和加锁控制比较麻烦;一个线程的崩溃可能影响到整个程序的稳定性:到达一定的线程数程度后,即使再增加CPU也无法提高性能,例如NindoWSServer2003,大约1500个线程数就快到极限了(线程堆栈设定为IMB),如果设定线程堆栈为2MB,还达不到1500个线程总数:线程能够提高的总性能有限,而且线程多了之后,线程本
12、身的调度也很烦琐,需要消耗较多的CP1.3)多进程的优点如下:每个进程互相独立,不影响主程序的稳定性,了进程崩溃也没关系;通过增加CPU,就可以容易扩充性能;可以尽量减少线程加锁/解锁的影响,即使线程运行的模块算法效率低,也可极大提高性能;每个进程都有2GB地址空间和相关资源,总体能够达到的性能上限非常大。多线程的缺点如下:逻辑控制复杂,需要和主程序交互;需要跨进程边界,如果有大数据量传送,就不太适用,适合于小数据量传送、密集运算、多进程调度开销比较大:最好是多进程和多线程结合,即根据实际的需要,每个CPU开启一个子进程,这个子进程开启多线程可以为若干同类型的数据进行处理.当然,也可以利用多线
13、程+多CPU+轮询方式来解决问题。方法和手段是多样的,关键是Fl己看起来实现方便又能够满足要求,代价也合适。8. 什么是反向健索引(ReVerSeKeyIndexes)?正确答案:反向键索引也称为反转索引,是一种B-TreC索引,它在物理上反转每个索引键的字节,但保持列顺序不变。例如,如果索引键是20,并且在一个标准的B-Tree索引中此键被存为十六进制的两个字节C1、15,那么反向键索引会将其存为15、CUSYSorciasmSE1.ECTDUMP(20,16)FROMDUA1.;D1.MP(2016,)Typ=21.en=2:cl,15反向键索引解决了在B-Tree索引右侧的叶块争用问题。
14、在OraCIeRAC数据库中的多个实例重复不断地修改同一数据块时,这个问题尤为严重。在一个反向键索引中,刻字节顺序反转,会将插入分散到索引中的所有叶块。例如键20和21,本来在一个标准键索引中会相邻,现在存储在相隔很远的独立的块中。这样,顺序插入产生的I/O被更均匀地分布了。使用反向键索引的最大的优点莫过于降低索引叶子块的争用,减少热点块,提高系统性能。由于反向键索引自身的特点,如果系统中经常使用范围扫描进行读取数据(例如在NHERE子句中使用“BETWEENAND”语句或比较运算符”=”等),那么反向键索引将不会被使用,因为此时会选择全表扫描,反而会降低系统的性能。只有对反向键索引列进行“=”操作时,其反向键索引才会使用。创建索引时使用REVERSE关键字,如卜NCreateindexrev_index_lhronxt_revi_lhr(object_id)reverse;A1.TERINDEXREVJNDEXREBUIDNOREVERSE:A1.TERINDEXNME-INXREBUI1.DON1.INEN