广州市品高软件股份有限公司11月招聘面试题109道20201111

路由选择协议的一个要求就是必须能够快速收敛,所谓“路由收敛”是指( )。

A)路由器把分组发送到预定的目标

B)路由器处理分组的速度足够快

C)文件系统管理的数据量比较少,而数据库系统可以管理巨大的数据量

D)网络设备的路由表和网络拓扑结构保持一致


正确答案:D
(23)D) 【解析】路由信息以精确的、一致的观点反映新的拓扑结构,这种精确的、一致的观点就称为收敛。当某个网络事件引起路由可用或不可用时,路由器就发出更新信息。路由更新信息遍及整个网络,引发重新计算最佳路径,最终达到所有路由器一致公认的最佳路径,这时我们说路由收敛到了新的网络拓扑结构。因此路由收敛是指网络设备的路由表与网络拓扑结构保持一致。


DB物理数据结构管理的原则中,不正确的是()

A.数据量大的表分放在不同磁盘上

B.将I/O访问分布在尽可能多的磁盘上

C.将访问量最大的几个不同的表,分放在不同磁盘上

D.数据表和索引放在一起存储


参考答案:D


下面关于基本表选择合适的文件结构的原则错误的是______。

A.如果数据库中的一个基本表中的数据量很少,操作很频繁,该基本表可以采用堆文件组织方式

B.顺序文件支持基于查找码的顺序访问,也支持快速的二分查找

C.如果用户查询是基于散列阈值的等值匹配,散列文件比较合适

D.如果某些重要而频繁的用户查询经常需要进行多表连接操作的,可以考虑将表组织成为非聚集文件


正确答案:C


以下关于聚集文件及其操作叙述错误的是______。

A) 聚集文件是一种具有多种记录类型的文件

B) 聚集文件存储了来自多个关系表的数据

C) 聚集文件中每个关系表对应文件中的记录类型是相同的

D) 聚集文件将不同关系表中有关联关系的记录存储在同一磁盘块内,从而减少数据库多表查询操作时的磁盘块访问次数,提高系统I/O速度和查找处理速度

A.

B.

C.

D.


正确答案:C
解析:聚集文件是一种具有多种记录类型的文件,它存储了来自多个关系表的数据,每个关系表对应文件中的一种记录类型。聚集文件将不同关系表中有关联关系的记录存储在同一磁盘块内,从而减少数据库多表查询操作时的磁盘块访问次数,提高系统I/O速度和查找处理速度。所以本题的答案为C。


如果数据库中的一个基本表中的数据量很少,且插入、删除、更新等操作频繁,该基本表最佳采用的文件结构是______。


正确答案:
    (7) [解析] 堆文件也称为无序(记录)文件,在堆文件中,记录随机地存储在文件物理空间中,新插入的记录存储在文件的末尾。
    [答案] (14)堆文件


广州市品高软件股份有限公司 11月招聘面试题 面试题 面试官常问到的一些题目整理如下: 问题 Q1:数据库的优化? 可用的回答 : 1. 优化索引、SQL 语句、分析慢查询; 2. 设计表的时候严格根据数据库的设计范式来设计数据库; 3. 使用缓存,把经常访问到的数据而且不需要经常变化的数据放在缓存中,能节约磁盘IO; 4. 优化硬件;采用SSD,使用磁盘队列技术(RAID0,RAID1,RDID5)等; 5. 采用MySQL 内部自带的表分区技术,把数据分层不同的文件,能够提高磁盘的读取效率; 6. 垂直分表;把一些不经常读的数据放在一张表里,节约磁盘I/O; 7. 主从分离读写;采用主从复制把数据库的读操作和写入操作分离开来; 8. 分库分表分机器(数据量特别大),主要的的原理就是数据路由; 9. 选择合适的表引擎,参数上的优化; 10. 进行架构级别的缓存,静态化和分布式; 11. 不采用全文索引; 12. 采用更快的存储方式,例如 NoSQL存储经常访问的数据 问题 Q2:如何在Python中实现多线程? 可用的回答 :Python有一个多线程库,但是用多线程来加速代码的效果并不是那么的好, Python有一个名为Global Interpreter Lock(GIL)的结构。 GIL确保每次只能执行一个“线程”。一个线程获取GIL执行相关操作,然后将GIL传递到下一个线程。 虽然看起来程序被多线程并行执行,但它们实际上只是轮流使用相同的CPU核心。 有这些GIL传递都增加了执行的开销。这意味着多线程并不能让程序运行的更快 问题 Q3:描述一下scrapy框架的运行机制? 可用的回答 : 从start_urls里面获取第一批url发送请求,请求由请求引擎给调度器入请求对列,获取完毕后, 调度器将请求对列交给下载器去获取请求对应的响应资源,并将响应交给自己编写的解析方法做提取处理,如 果提取出需要的数据,则交给管道处理,如果提取出url,则继续执行之前的步骤,直到多列里没有请求,程序结束。 问题 Q4:IO多路复用的作用? 可用的回答 : 基本概念 IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取,它就通知该进程。 IO多路复用适用如下场合: (1)当客户处理多个描述字时(一般是交互式输入和网络套接口),必须使用I/O复用。 (2)当一个客户同时处理多个套接口时,而这种情况是可能的,但很少出现。 (3)如果一个TCP服务器既要处理监听套接口,又要处理已连接套接口,一般也要用到I/O复用。 (4)如果一个服务器即要处理TCP,又要处理UDP,一般要使用I/O复用。 (5)如果一个服务器要处理多个服务或多个协议,一般要使用I/O复用。 与多进程和多线程技术相比,I/O多路复用技术的最大优势是系统开销小, 系统不必创建进程/线程,也不必维护这些进程/线程,从而大大减小了系统的开销。 问题 Q5:什么是_init_? 可用的回答 :_init_是Python中的方法或者结构。在创建类的新对象/实例时,将自动调用此方法来分配内存。所有类都有_init_方法。 问题 Q6:有哪些工具可以帮助查找错误或执行静态分析? 可用的回答 : PyChecker是一个静态分析工具,可以检测Python源代码中的错误,并警告错误的风格和复杂性。 Pylint是另一种验证模块是否符合编码标准的工具。 auto-pep8工具也可以进行静态代码检查 问题 Q7: Tornado 的核心是什么? 可用的回答 : Tornado 的核心是 ioloop 和 iostream 这两个模块, 前者提供了一个高效的 I/O 事件循环,后者则封装了 一个无阻塞的 socket 。 通过向 ioloop 中添加网络 I/O 事件,利用无阻塞的 socket, 再搭配相应的回调函数,便可达到梦寐以求的高效异步执行。 问题 Q8:什么是粘包? socket 中造成粘包的原因是什么? 哪些情况会发生粘包现象? 可用的回答 : 粘包:在接收数据时,一次性多接收了其它请求发送来的数据(即多包接收)。如: 对方第一次发送hello,第二次发送world,在接收时,应该收两次, 一次是hello,一次是world,但事实上是一次收到helloworld,一次收到空,这种现象叫粘包。 原因: 粘包问题主要还是因为接收方不知道消息之间的界限,不知道一次性提取多少字节的数据所造成的。 什么情况会发生: 1、发送端需要等缓冲区满才发送出去,造成粘包 发送数据时间间隔很短,数据很小,会合到一起,产生粘包 2、接收方不及时接收缓冲区的包,造成多个包接收 客户端发送了一段数据,服务端只收了一小部分, 服务端下次再收的时候还是从缓冲区拿上次遗留的数据,产生粘包 解决方案: 一个思路是发送之前,先打个招呼,告诉对方自己要发送的字节长度, 这样对方可以根据长度判断什么时候终止接受 注意: 只有TCP有粘包现象,UDP永远不会粘包! 问题 Q9:什么是arp协议? 可用的回答 : ARP(Address Resolution Protocol)即地址解析协议, 用于实现从 IP 地址到 MAC 地址的映射,即询问目标IP对应的MAC地址。 问题 Q10:什么是Python pass? 可用的回答 :pass意味着,无操作的Python语句,或者换句话说,它是复合语句中的占位符,其中应该留有空白,并且不必在那里写入任何内容。 算法题 面试官常问到的一些算法题目整理如下(大概率会机考): 算题题 A1:排序矩阵中第k小个元素 题目描述如下: Given a n x n matrix where each of the rows and columns are sorted in ascending order, find the kth smallest element in the matrix. Note that it is the kth smallest element in the sorted order, not the kth distinct element. Example: matrix = 1, 5, 9, 10, 11, 13, 12, 13, 15 , k = 8, return 13. Note: You may assume k is always valid, 1 k n2. 找到第k小个数。 测试用例: 思路是用了堆: 、Python 有内置的堆模块,需要进行研究自写。 2018/08/02待跟进。 堆: 堆是一个完全二叉树,完全二叉树是除了最底层,其他层都是铺满的。 0 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 堆又分为最大堆与最小堆,最小堆是根节点是整个堆中最小的,最大堆则是最大的。 堆的操作分为:插入,取顶。 大部分情况下插入时的数据都是无序的,所以要保证最大堆与最小堆需要的操作肯定要有上浮与下沉。 上浮: 最小堆中: 如果父节点比自己大则自己上浮。 如果子节点比自己小则自己下沉。 也就是做数据交换,一直上浮或下沉到符合条

优化数据库数据的存储结构和存取方法有利于提高数据的查询效率。下列不利于提高系统查询效率的优化方案是

A.为经常出现在查询条件中的列建立索引

B.为频繁进行排序的列建立索引

C.将数据文件和日志文件分别放置在不同磁盘上

D.将表的数据和索引放置在同一磁盘上


正确答案:D


文件管理方式本质上是把数据组织成( )的形式存储在磁盘上。

A. 文件

B. 表

C. 记录

D. 数据库


正确答案:A


试题(58)

对于提升磁盘I/O性能问题,以下表述正确的是(58) 。

(58)

A.数据库对象在物理设备上的合理分布能改善系统读写性能

B.磁盘镜像可以提高磁盘读写的速度

C.建议把数据库、回滚段、日志放在同一块设备上,以提高数据读写的性能

D.将磁盘升级到更大容量可提高磁盘I/O速度


正确答案:A


试题(58)分析
本题考查提升磁盘I/O的方法。
正确的概念是:
数据库对象在物理设备上的合理分布能改善系统读写性能。
不是所有的磁盘镜像都可以提高磁盘读写的速度。建议把数据库、回滚段、日志不要放在同一块设备上,以提高数据读写的性能。
将磁盘升级到更大容量并不能提高磁盘I/O速度。
参考答案
(58)A


Excel中,把用来存储数据的文件称为()

A、数据表

B、工作簿

C、工作表

D、数据库


参考答案:C


● 某公司的数据库应用系统中,其数据库服务器配置两块物理硬盘,可以采用下述存储策略:

1)将表和索引放在同一硬盘的不同逻辑分区以提高性能

2)将表和索引放在不同硬盘以提高性能

3)将日志文件和数据库文件放在同一硬盘的不同逻辑分区以提高性能

4)将日志文件和数据库文件放在不同硬盘以提高性能

5)将备份文件和日志文件与数据库文件放在同一硬盘以保证介质故障时能够恢复 一个比较正确合理的存储策略是 (57) 。


正确答案:C

更多 “广州市品高软件股份有限公司11月招聘面试题109道20201111” 相关考题
考题 数据库管理员希望对数据库进行性能优化,以下操作中行之有效的方法为()。A.将数据库涉及的所有文件单独放在一个分区上供用户访问 B.将数据库的数据库文件和日志文件分别放在不同的分区上 C.在数据库服务器上尽量不要安装其他无关服务 D.一个表中的数据行过多时,将其划分为两个或多个表答案:B,C解析:对数据库进行性能优化,常见的方法有:将数据库的数据库文件和日志文件分别放在不同的分区上,在数据库服务器上尽量不要安装其他无关服务。

考题 以下关于ORACLE数据块的叙述正确的是()A、数据块是数据库读写的最小单位,一个数据块对应一个操作系统块B、一个数据块存放表中的一条记录,当记录增加时,数据块也相应增加C、连续的数据块构成区,当表的数据段需要扩展时,是按区进行扩展的D、数据块是数据库存储的最小单位,一个数据块有时分属于不同的表空间E、数据块是可以跨磁盘的,这样可以优化数据库系统I/O的性能正确答案:C

考题 某公司的数据库应用系统中,其数据库服务器配置两块物理硬盘,可以采用下述存储策略:①将表和索引放在同一硬盘的不同逻辑分区以提高性能;②将表和索引放在不同硬盘以提高性能;③将日志文件和数据库文件放在同一硬盘的不同逻辑分区以提高性能;④将日志文件和数据库文件放在不同硬盘以提高性能;⑤将备份文件和日志文件与数据库文件放在同一硬盘以保证介质故障时能够恢复一个比较正确合理的存储策略是(57)。A.①④B.①③⑤C.②④D.②③正确答案:C解析:本题考查对数据应用系统运行维护基本策略的掌握。表和索引分放于不同的物理硬盘,目的在于使硬盘并行工作,提高I/O读写效率。放在不同分区还是属于一个物理硬盘,达不到并行。同样,日志文件和数据库文件分放不同硬盘也是为了并行。若备份文件和日志文件与数据库放同一硬盘,则整个硬盘损坏时数据库将无法恢复,就将数据库文件与备份和日志分不同硬盘存储。

考题 请详细阅读有关Web应用架构设计方面的说明,在答题纸上回答问题1至问题3。【说明】某软件公司开发运维了一个社交网站系统,该系统基于开源软件平台LAMP(Linux+Apache+MySQL+PHP)构建,运行一段时间以来,随着用户数量及访问量的增加,系统在Web服务器负载、磁盘I/O等方面出现了明显瓶颈,已不能满足大量客户端并发访问的要求,因此公司成立了专门的项目组,拟对系统架构进行调整以提高系统并发处理能力。目前系统采用了传统的三层结构,系统架构如图5-1所示。图5-1 某社交网站系统架构【问题1】(10分)针对目前出现的Web服务器负载过大问题,项目组决定在客户端与中间层Web服务器之间引入负载均衡器,通过中间层Web服务器集群来提高Web请求的并发处理能力。在讨论拟采用的负载均衡机制时,王工提出采用基于DNS的负载均衡机制,而李工则认为应采用基于反向代理的负载均衡机制,项目组经过讨论,最终确定采用李工提出的方案。请用200字以内的文字,分别简要说明两个机制的基本原理;并从系统执行效率、安全性及简易性等方面将两种机制进行对比,将对比结果填入表5-1中。【问题2】(7分)针对并发数据库访问所带来的磁盘I/O瓶颈问题,项目组决定在数据层引入数据库扩展机制。经过调研得知系统数据库中存储的主要数据为以用户标识为索引的社交网络数据,且系统运行时发生的大部分数据库操作为查询操作。经过讨论,项目组决定引入数据库分区和MySQL主从复制两种扩展机制。数据库分区可采用水平分区和垂直分区两种方式,请用350字以内的文字说明在本系统中应采用哪种方式及其原因,并分析引入主从复制机制给系统带来的好处。【问题3】(8分)为进一步提高数据库访问效率,项目组决定在中间层与数据层之间引入缓存机制。赵工开始提出可直接使用MySQL的查询缓存(query cache)机制,但项目组经过分析好友动态显示等典型业务的操作需求,同时考虑已引入的数据库扩展机制,认为查询缓存尚不能很好地提升系统的查询操作效率,项目组最终决定在中间层与数据层之间引入Memcached分布式缓存机制。(a)请补充下述关于引入Memcached后系统访问数据库的基本过程:系统需要读取后台数据时,先检查数据是否存在于(1)中,若存在则直接从其中读取,若不存在则从(2)中读取并保存在(3)中;当(4)中数据发生更新时,需要将更新后的内容同步到(5)实例中。(备选答案:数据库、Memcacbed 缓存)(b)请结合已知信息从缓存架构、缓存有效性及缓存数据类型等方面分析使用Memcached代替数据库查询缓存的原因。正确答案:【问题1】(10分)基于DNS的负载均衡是在DNS服务器中为同一个主机名配置多个IP地址,在应答DNS查询时,DNS服务器对每个查询将以DNS文件中主机记录的IP地址按顺序返回不同的解析结果,将客户端的访问引导到不同的节点上去,使得不同的客户端访问不同的节点,从而达到负载均衡的目的。反向代理负载均衡。反向代理负载均衡是将来自Internet上的连接请求以反向代理的方式动态地转发给内部网络上的多个节点进行处理,从而达到负载均衡的目的。(1)否(2)是(3)否(4)是(5)否(6)是(7)是(8)否【问题2】(7分)本系统应采用水平分区,因为社交网络数据库的数据表记录数量非常庞大,而且记录的访问,大多集中于本地区域,所以水平分区能极大提高处理效率。主从复制机制使得同样的数据,存在多个副本,这样让用户查询数据时,可以选择该数据最近的副本进行访问,提高效率,降低资源使用时的冲突。【问题3】(8分)(1)Memcached(2)数据库(3)Memcached(4)数据库(5)MemcachedMemcached相比数据库查询缓存:缓存架构:数据库缓存只是将查询结果进行缓存,适用面很窄,而Memcached是将数据库中的表进行缓存,对于在这些表之上的操作均可适用。缓存有效性:Memcached缓存时效较长,只要未更新,就属于有效状态,而数据查询缓存时效较短(具体时效与配置有关),所以在此方面Memcached有优势。缓存数据类型:Memcached缓存数据为表级,而数据库查询缓存为元组级。

考题 你们正在设计一个数据库应用程序,在设计中途的时候,数据库进行了重新规划,因此原来的数据库也不能再使用,并且启用了一个新的数据库和数据库表结构,但是,原来有一张重要的表中已经输入了大量的数据,你检查了新的数据库表和原来的数据库表的结构,发现表的结构并没有发生更改,为了把原来的数据在新的数据库中利用,可以采用的最好的方法是()A、重新在新的数据库表中录入全部的数据B、使用数据转换的服务功能,把原来的数据保存为文本文件,再把文本文件拷贝到新的数据库中C、使用"INSERTINTO[新的表名]SELECT[旧的表名]"的插入语句进行表之间的数据转移D、首先建立两张表之间的主外键关系,再在VB中使用ADO对象进行数据分析和数据插入正确答案:C

考题 对于提升磁盘I/O性能问题,以下表述正确的是( )。A.数据库对象在物理设备上的合理分布能改善系统读写性能 B.磁盘镜像可以提高磁盘读写的速度 C.建议把数据库、回滚段、日志放在同一块设备上,以提高数据读写的性能 D.将磁盘升级到更大容量可提高磁盘I/O速度答案:A解析:本题考查提升磁盘I/O的方法。正确的概念是:·数据库对象在物理设备上的合理分布能改善系统读写性能。·不是所有的磁盘镜像都可以提高磁盘读写的速度。·建议把数据库、回滚段、日志不要放在同一块设备上,以提高数据读写的性能。·将磁盘升级到更大容量并不能提高磁盘I/O速度。

考题 阅读以下关于数据管理的叙述,在答题纸上回答问题 1 至问题 3。【说明】某软件企业开发了一套新闻社交类软件,提供常见的新闻发布、用户关注、用户推荐、新闻点评、新闻推荐、热点新闻等功能,项目采用 MySQL 数据库来存储业务数据。系统上线后,随着用户数量的增加,数据库服务器的压力不断加大。为此,该企业设立了专门的工作组来解决此问题。张工提出对 MySQL 数据库进行扩展,采用读写分离,主从复制的策略,好处是程序改动比较小,可以较快完成,后续也可以扩展到 MySQL 集群,其方案如图4-1 所示。李工认为该系统的诸多功能,并不需要采用关系数据库,甚至关系数据库限制了功能的实现,应该采用 NoSQL 数据库来替代 MySQL,重新构造系统的数据层。而刘工认为张工的方案过于保守,对该系统的某些功能,如关注列表、推荐列表、热搜榜单等实现困难,且性能提升不大;而李工的方案又太激进,工作量太大,短期无法完成,应尽量综合二者的优点,采用 Key-Value 数据库+MySQL数据库的混合方案经过组内多次讨论,该企业最终决定采用刘工提出的方案。问题内容:【问题 1】(8 分)张工方案中采用了读写分离,主从复制策略。其中,读写分离设置物理上不同的主/从服务器,让主服务器负责数据的(a)操作,从服务器负责数据的(b)操作,从而有效减少数据并发操作的(c),但却帯来了(d)。因此,需要采用主从复制策略保持数据的(e)。MySQL 数据库中,主从复制是通过 binary log 来实现主从服务器的数据同步,MySQL 数据库支持的三种复制类型分别是(f) 、 (g) 、 (h)。请将答案填入(a)~(h)处的空白,完成上述描述。【问题 2】(8 分)李工方案中给出了关系数据库与 NoSQL 数据的比较,如表 4-1 所示,以此来说明该新闻社交类软件更适合采用 NoSQL 数据库。请完成表 4-1 中的(a) ~ (d)处空白。表 4-1 关系数据库与 NoSQL 数据库特征比较【问题 3】(9 分)刘工提出的方案采用了 Key-Value 数据库+MySQL 数据库的混合方案,是根据数据的读写特点将数据分别部署到不同的数据库中。但是由于部分数据可能同时存在于两个数据库中,因此存在数据同步问题。请用 200 字以内的文字简要说明解决该数据同步问题的三种方法。答案:解析:【问题1】(a)写(b)读(c)延迟(d)数据不一致(e)一致性(或同步)(f)(g)(h)次序无关基于SQL语句的复制(SBR: statement-based replication)基于行的复制(RBR: row-based replication)混合模式复制(MBR: mixed-based replication)【问题2】(a)弱一致性(b)非结构化(c)弱事务性(d)海量数据【问题3】1、通过定时任务做数据定期同步;2、通过触发器实现数据同步;3、通过数据库插件实现数据同步。

考题 下面关于为基本表选择合适的文件结构的原则错误的是______。A) 如果数据库中的一个基本表中的数据量很少、操作频繁,该基本表可以采用堆文件组织方式B) 顺序文件支持基于查找码的顺序访问,也支持快速的二分查找C) 如果用户查询是基于散列域值的等位匹配,散列文件比较合适D) 如果某些重要而频繁的用户查询经常需要进行多表连接操作,可以考虑将表组织为非聚集文件A.B.C.D.正确答案:D解析:下面是一些为基本表选择合适的文件结构的原则: (1) 如果数据库中的一个基本表中的数据量很少,并且插入、删除、更新等操作非常频繁,该基本表可以采用堆文件组织方式。因为堆文件无须建立索引,维护代价非常低。虽然堆文件的数据访问效率较低,但在数据量很少时,定位文件记录的时间非常短。 (2) 顺序文件支持基于查找码的顺序访问,也支持快速的二分查找。如果用户的查询条件定义在查找码上,则顺序文件是比较合适的文件结构。 (3) 如果用户查询是基于散列域值的等位匹配,特别是如果访问顺序是随机的,则散列文件比较合适。散列文件组织不适合下述情况:①基于散列域值的非精确查询(如模式查询、范围查询);②基于非散列域进行查询时。 (4) B-树和B+-树文件是实际数据库系统中使用非常广泛的索引文件结构,适合于定义在大数据量基本表上、鉴于查找码的等值查询、范围查询、模式查询和部分查询。 (5) 如果某些重要而频繁的用户查询经常需要进行多表连接操作,可以考虑将这些基本表组织为聚集文件,以改善查询效率。 因此答案为D。

考题 请详细阅读有关Web应用架构设计方面的说明,回答下列问题。 【说明】某软件公司开发运维了一个社交网站系统,该系统基于开源软件平台LAMP(Linux+Apache+MySQL+PHP)构建,运行一段时间以来,随着用户数量及访问量的增加,系统在Web服务器负载、磁盘I/O等方面出现了明显瓶颈,已不能满足大量客户端并发访问的要求,因此公司成立了专门的项目组,拟对系统架构进行调整以提高系统并发处理能力。目前系统采用了传统的三层结构,系统架构如下图所示。[问题1] 针对目前出现的web服务器负载过大问题,项目组决定在客户端与中间层Web服务器之间引入负载均衡器,通过中间层Web服务器集群来提高Web请求的并发处理能力。在讨论拟采用的负载均衡机制时,王工提出采用基于DNS的负载均衡机制,而李工则认为应采用基于反向代理的负载均衡机制,项目组经过讨论,最终确定采用李工提出的方案。请用200字以内的文字,分别简要说明两个机制的基本原理,并从系统执行效率、安全性及简易性等方面将两种机制进行对比,将对比结果填入下表中。【问题2】针对并发数据库访问所带来的磁盘I/O瓶颈问题,项目组决定在数据层引入数据库扩展机制。经过调研得知系统数据库中存储的主要数据为以用户标识为索引的社交网络数据,且系统运行时发生的大部分数据库操作为查询操作。经过讨论,项目组决定引入数据库分区和MySQL主从复制两种扩展机制。数据库分区可采用水平分区和垂直分区两种方式,请用350字以内的文字说明在本系统中应采用哪种方式及其原因,并分析引入主从复制机制给系统带来的好处。 【问题3】 为进一步提高数据库访问效率,项目组决定在中间层与数据层之间引入缓存机制。赵工开始提出可直接使用MySQL的查询缓存(query cache)机制,但项目组经过分析好友动态显示等典型业务的操作需求,同时考虑已引入的数据库扩展机制,认为查询缓存尚不能很好地提升系统的查询操作效率,项目组最终决定在中间层与数据层之间引入Memcached分布式缓存机制。(a)请补充下述关于引入Memcached后系统访问数据库的基本过程:系统需要读取后台数据时,先检查数据是否存在于______中,若存在则直接从其中读取,若不存在则从______中读取并保存在______中;当______中数据发生更新时,需要将更新后的内容同步到______实例中。(备选答案:数据库、Memcached缓存)(b)请结合已知信息从缓存架构、缓存有效性及缓存数据类型等方面分析使用Memcached代替数据库查询缓存的原因。答案:解析:【问题1】两种机制的基本原理: 基于DNS的负载均衡机制通过DNS服务器实现,通常通过循环复用具有同一域名的多个主机地址的服务器实现负载均衡。 反向代理负载均衡则是将来自Internet的连接请求以反向代理的方式动态转发给内部网络上的多台服务器进行处理,从而达到负载均衡的目的。 区别比较:从系统执行效率方面讲,基于DNS的负载均衡机制实现简单,但其通常不能区分服务器的差异,也不能反映服务器的当前运行状态。基于反向代理的则可以根据内部服务器的性能差异及实时负载情况进行动态负载均衡,当系统多个Web服务器性能存在明显差异或内部Web服务器出现故障时,负载均衡器可以更快做出响应,从而保证客户端的访问效率。采用基于反向代理的负载均衡机制,可在代理服务器中引入调速缓存机制,对Web服务器返回的静态页面或图片等静态资源进行缓存,由代理服务器承担对原始服务器的静态资源访问请求,从而进一步降低原始Web服务器的负载。 从安全性方面讲,采用基于反向代理的负载均衡机制,代理服务器屏蔽了客户端对真实Web服务器的直接访问,恶意用户无法对真实Web服务器进行攻击,且可以通过代理服务器为原本不安全的客户端与Web服务器之间的连接建立安全通道。因此采用基于反向代理的负载均衡机制可为系统提供更好的安全性保障。 (1) 否(2)是(3)否(4)是(5)否(6)是(7)是(8)否(注:主要意思答出来即可) 【问题2】 (1)本系统中应主要使用水平分区机制。根据已知信息,系统数据库中存储的主要数据为以用户标识为索引的社交网络数据,采用水平分区机制可根据用户标识将用户数据进行水平分割,用户操作时先将请求分发到不同数据库分区,再进行具体数据库操作,以提高数据库访问效率。 (2)引入主从复制机制所带来的好处: ①避免数据库单点故障:主服务器实时、异步复制数据到从服务器,当主数据库宕机时,可在从数据库中选择一个升级为主服务器,从而防止数据库单点故障。 ②提高查询效率:根据系统数据库访问特点,可以使用主数据库进行数据的插入、删除及更新等写操作,而从数据库则专门用来进行数据查询操作,从而将查询操作分担到不同的从服务器以提高数据库访问效率。【问题3】(a) (1)Memcached缓存 (2)数据库 (3)Memcached缓存 (4)数据库 (5)Memcached缓存(b) 使用Memcached代替数据库查询缓存的原因: (1)缓存架构:数据库查询缓存通常每个数据库只有一个实例,因此存储内容受数据库服务器可用内存限制,可缓存数据有限。而Memcaehed可采用高速分布式缓存服务器结构,不受数据库服务器约束,可扩展性更好。 (2)缓存有效性:数据库查询缓存只要在发生写操作时就会失效,即使更新的是数据库中的其他行。而Memcached可通过键值将数据进行散列缓存,有效降低缓存的更新频率,从而提高缓存的有效性。 (3)缓存数据类型:数据库查询缓存只能缓存数据库行,对社交网站好友动态显示等典型业务所需要的组合数据缓存缺乏有效支持,而Memcached理论上可缓存任何内容。因此可以将分散在数据库中的关系或者列表组合后进行缓存,以提高缓存数据的针对性和效率。

考题 数据库表索引的最主要作用是()。A、加快数据检索速度B、加快写磁盘数据速度C、加快读磁盘数据速度D、加快数据计算速度正确答案:A