免费智能真题库 > 历年试卷 > 软件设计师 > 2017年下半年 软件设计师 上午试卷 综合知识
  第51题      
  知识点:   两级映像   数据库      索引   体系结构
  关键词:   聚簇索引   数据库   数据        章/节:   计算机软件知识       

 
采用三级结构/两级映像数据库体系结构,如果对数据库的一张表创建聚索引,改变的是数据库的( )。
 
 
  A.  用户模式
 
  B.  外模式
 
  C.  模式
 
  D.  内模式
 
 
 

 
  第56题    2017年下半年  
   18%
在基于Web的电子商务应用中,访问存储于数据库中的业务对象的常用方式之一是( )。
  第54题    2016年上半年  
   14%
某公司数据库中的元件关系模式为P(元件号,元件名称,供应商,供应商所在地,库存量),函数依赖集F如下所示:
F={元件号&..
  第23题    2017年下半年  
   25%
计算机系统的层次结构如下图所示,基于硬件之上的软件可分为a、b和c三个层次。图中a、b和c分别表示( )。
 
  第49题    2021年下半年  
   41%
采用三级模式结构的数据库系统中,如果对一个表创建聚簇索引,那么改变的是数据库的()。
  第51题    2019年下半年  
   67%
以下关于数据库两级映像的叙述中,正确的是(51)。
  第51题    2015年下半年  
   33%
数据库系统通常采用三级模式结构:外模式、模式和内模式。这三级模式分别对应数据库的(51)。
   知识点讲解    
   · 两级映像    · 数据库    ·     · 索引    · 体系结构
 
       两级映像
        数据库系统在三级模式之间提供了两级映像,即模式/内模式映像和外模式/模式映像。
        (1)模式/内模式映像。该映像存在于概念级和内部级之间,实现了概念模式到内模式之间的相互转换。
        (2)外模式/模式映像。该映像存在于外部级和概念级之间,实现了外模式到概念模式之间的相互转换。
        DBMS的二级映像功能保证了数据的独立性。
 
       数据库
        数据库(DataBase,DB)是指长期存储在计算机内的、有组织的、可共享的数据集合。数据库中的数据按一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。
        系统使用的所有数据存储在一个或几个数据库中。
 
       簇
        簇(cluster),有时被称为索引簇,是Oracle数据库中用于存储表的一种方法。在一个簇中,系统将多个相关的表存储在一起,以缩短用户访问相关记录的时间。只有当这些相关表经常被同时访问时,才适合使用簇。对用户和应用程序而言,簇的存在是透明的,簇只影响数据的存储方式。
        在某些情况下使用簇是非常有利的,而在另外一些情况下,使用簇却可能非常不利。应当仔细考虑簇是否有助于提高系统性能。一般而言,如果集中存放的数据主要用于连接表中,那么使用簇是很好的。如果两个表存放了相关数据,并且这两个表经常被同时访问,那么通过使用簇可将相关数据预装入SGA中,从而提高用户访问数据的性能。因为开发人员经常同时使用这两个表,所以在用户访问其中一个表时,将另一个表的数据也放入SGA中,可大大缩短用户访问数据的时间。如果一般情况下开发人员不会同时使用这些信息,那么簇将不能提高系统性能,并且这种情况下,簇实际上会导致系统性能的轻微下降,其原因是额外的表信息将占据更多的SGA空间。簇的另一个不足之处在于,当用户执行insert语句时将降低系统性能。引起性能下降的原因是簇在使用存储空间上采用的方法更加复杂,并且系统需要将多个表存储在同一个数据块中。簇表比单个表占用了更多的存储空间,这将导致系统扫描更多的数据。另外如果系统经常对这些表中的某一个表作全表扫描,那么不应当为这些表创建簇。因为如果创建了簇,那么额外数据将占用SGA的部分空间并导致额外的I/O操作,这两方面的原因都会降低系统性能。
 
       索引
        在数据库系统中,索引是一种可选结构,其目的是提高数据访问速度。利用索引可提高用户访问数据的速度,或直接从索引中独立检索数据。如果对索引的配置和使用进行了优化,那么索引能大大降低数据文件的I/O操作并提高系统性能。
        但是在为一个表创建索引之后,Oracle将自动维护这个索引。当用户在表中插入、更新或删除记录时,系统将自动更新与该表相关的索引。一个表可以有任意数量的索引,但一个表的索引越多,用户在该表中插入、更新或删除记录时所造成的系统开销也越大。其原因是无论何时更新表,系统都必须更新与之相关的索引。
        索引是建立在表的一个或多个字段之上的。索引的作用大小取决于该字段或字段集的选择性。所谓选择性,是指索引能降低数据集中的程度。如果表中与某个索引相关的字段值各不相同,那么该索引就有很好的选择性。一个选择性很差的索引的例子,是基于字段值仅为true/false的字段创建的索引,因为表中很多记录该字段的字段值都相同。一个索引可能只能帮助管理员降低检索的记录数,而不能惟一地确定一条记录。例如:如果为一个表的LastName字段创建了一个索引,现在用户需要搜索John Smith,那么这个索引将返回LastName字段值为Smith的所有记录,因而用户还不得不在返回的记录中搜索含John的记录。索引的选择性越好,就越有助于降低返回记录的数量,从而提高数据访问速度。下面介绍有效创建和使用索引的技巧和方法。
        . 索引和降低系统处理的数据量。
        索引的主要作用之一就是降低系统处理的数据量。对CPU使用和等待完成I/O操作的时间上,I/O操作引起的系统开销都是非常昂贵的。降低I/O操作可提高系统性能和处理能力。如果不使用索引,那么为了找到特定的数据,系统将不得不扫描表中的所有数据。
        例如如下查询语句:
        
        如果不使用索引,系统必须扫描整个emp表并检查表中每条记录的employee_id字段的值。如果emp表很大,那么这个操作可能意味着数量巨大的I/O读写和很长的处理时间。
        如果为emp表的employee_id字段创建了索引,那么系统将遍历该索引并找到用户所查询记录的ID。找到记录ID之后,只需一条额外的I/O操作就能检索到用户所需的数据。
        用于说明这个问题的最好例子,是只需查找一条记录的情况。在表的每条记录中,类似employee_id这样的字段的值可能在整个表中都是惟一的。这意味着查询结果值返回一条记录,这种查询的效率是非常高的。
        在某些情况下,索引必须返回大量数据。如下面的例子:
        
        这个查询语句很可能返回大量数据,因为索引操作返回了大量记录的ID,并且系统必须独立访问这些记录的ID,所以这种情况下,不使用索引可能比使用索引的效率更高,直接进行表扫描可能效率更高。不同情况下,采用哪种查寻方法更好,很大程度上取决于表的数据量和组织形式。
        对于不同的数据,在某些情况下位图索引可能非常有用,而在另外一些情况下,使用位图索引可能没有任何好处。
        . 索引和更新。
        如果对表创建了索引,那么更新、插入和删除表中的记录都将导致额外的系统开销。在系统提交这些操作之前,系统将会更新所有与该表相关的索引。这可能需要花费很长时间,并额外增加一定的系统开销。
        . 在字段选择性很低的情况下适用索引。
        在某些情况下,表中的某些字段的选择性可能很低。开发人员没必要为所有表创建索引,实事上,在某些情况下索引引起的问题比解决的问题更多。在很多情况下,需要反复试验,才能确定一个索引是否有助于提高系统性能。
        但是,位图索引能在字段选择性不高的情况下工作得很好。一个位图索引可以和其他位图索引联合使用,以降低系统检索的数据集。对于某些值为true/false、yes/no或其他小范围数据的字段,建立位图索引是非常合适的。请记住:位图索引所占用的空间,是随着与该索引相关的字段的不同值的数量的增加而增加的。
        如果决定创建一个索引,那么确定为哪些字段创建索引是非常重要的。对于不同的表,可能会选择一个或多个字段创建索引。可使用如下方法来确定在哪些字段上创建索引:
        ①选择那些最常出现在where子句中的字段。经常被访问的字段最可能受益于索引。
        ②经常用于连接表的字段是创建索引的必然候选字段。
        ③必须注意索引导致的查询语句性能的提高与更新数据时性能的降低之间的平衡。
        ④经常被修改的字段不适合创建索引,其原因是,更新索引将增加系统开销。
        在某些情况下,使用复合索引的效率可能比使用简单索引的效率更高。下面的一些例子说明了应当在何种情况下使用复合索引。
        ①某两个字段单独来看都不具有惟一性,但结合在一起却有惟一性,那么这种情况下,复合索引将工作得很好。例如:A字段和B字段都几乎没有惟一性值,但绝大多数情况下,字段A和B的某个特定组合却具有惟一性特点。那么在检索数据时,可在where子句重视and操作符来将这两个字段连接在一起。
        ②如果select语句中的所有值都位于复合索引中,那么Oracle将不会检索表,而直接从索引中返回数据。
        ③如果多个查询语句的where子句中作为查询条件的字段都不相同,但返回的记录相同,那么应当考虑利用这些字段创建一个复合索引。
        在创建索引之后,开发人员应当定期利用SQL TRACE工具或EXPLAIN PLAN来察看用户查询是否充分利用了索引。很有必要花费一定精力来试验使用索引和未使用索引在效率上的差别,以判断索引所耗费资源是否物有所值。
        应该删除那些不经常使用的索引。可使用alter index monitoring usage语句来跟踪索引的使用情况。还可以从系统表all_indexes、user_indexes和dba_indexes中查询用户访问索引的频率。
        如果为一个不适合创建索引的字段或表创建了索引,那么这可能会导致系统能力的下降。而如果创建的索引合理,那么这将降低系统的I/O操作并加快访问速度,从而大大提高系统性能。
 
       体系结构
        RPR的体系结构如下图所示。RPR采用了双环结构,由内层的环1和外层的环0组成,每个环都是单方向传送。相邻工作站之间的跨距包含传送方向相反的两条链路。RPR支持多达255个工作站,最大环周长为2000km。
        
        RPR体系结构
   题号导航      2017年下半年 软件设计师 上午试卷 综合知识   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
6 /
7 /
8 /
9 /
10 /
11 /
12 /
13 /
14 /
15 /
 
16 /
17 /
18 /
19 /
20 /
21 /
22 /
23 /
24 /
25 /
26 /
27 /
28 /
29 /
30 /
 
31 /
32 /
33 /
34 /
35 /
36 /
37 /
38 /
39 /
40 /
41 /
42 /
43 /
44 /
45 /
 
46 /
47 /
48 /
49 /
50 /
51 /
52 /
53 /
54 /
55 /
56 /
57 /
58 /
59 /
60 /
 
61 /
62 /
63 /
64 /
65 /
66 /
67 /
68 /
69 /
70 /
71 /
72 /
73 /
74 /
75 /
 
第51题    在手机中做本题