请简要说明针对大量只读查询操作进行优化的主要方法。
阅读以下关于数据库性能优化方面的叙述,回答问题1至问题4。
某企业核心业务系统运行性能不佳,尤其是针对数据库的操作,响应时间过长。
为此,该企业专门召开了解决该问题的专家研讨会。在会上刘工指出,当前硬件设备的价格比较低廉,只需要对数据库服务器的硬件设备进行升级,同时对数据库管理系统和操作系统中的相应参数进行调整就可以了;王工建议对应用系统中使用的SQL语句进行调优,针对每条SQL语句都建立对应的索引;张工认为该业务系统中存在大量的数据查询操作,更新操作不多,尤其是存在大量的只读查询操作,应该针对这一点进行优化。
该企业采取了专家的部分建议,但优化的结果仍然不尽如人意,通过专门的监控,发现数据库管理系统中建立的索引存在问题。
对上述专家意见和建议进行评价;给出自己的建议,并说明其中包含的内容。
试题二(共15分)
阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】
某软件公司为某银行设计开发了一套网上银行系统,该系统提供基本的支付、查询、转账和信息修改等功能。银行对网上银行系统提出了初步的性能指标:
(1) 交易响应时间不超过2s
(2) 并发用户数>=1000
(3) CPU利用率不超过80%
(4) 系统需要7*24小时不间断的稳定运行
(5) 每秒事务数为7
(6) 交易成功率为100%
现需要对该软件进行性能测试。
【问题1】(4分)
常见的性能测试包括负载测试、压力测试、并发性能测试、疲劳强度测试和大数据量测试等。针对题目中所述的6个性能指标,并发性能测试和疲劳强度测试所涉及的指标各有哪些?
【问题2】(6分)
性能测试中,针对一个单独的性能指标,往往需要采用多种不同的测试方法。该软件公司需要测试性能指标(1)和(5),设计了如下的测试方案:
测试常规情况下的并发用户数,逐步增加并发用户数,分别测试:
1. 在响应时间为2s时,系统所能承受的最大并发访问用户的数量;
2. 系统在多大的并发访问用户数量下,响应时间不可接受(例如超过2s)。
请指出这两项测试分别属于哪种类型的测试,并分别解释这两种测试类型的基本概念。
【问题3】(5分)
在测试性能指标(5)时,该软件公司在客户端模拟大量并发用户来执行业务操作,统计平均的每秒事务数。该软件公司认为客户端接收响应信息与该性能指标的测试无关,因此在模拟客户端上发起正常业务申请,接收系统响应后直接丢弃响应信息,没有进行功能校验。请说明该软件公司的做法正确与否,并简要说明原因以及执行功能校验的副作用。
【问题1】(3分) 如果两个用户同时查询相同日期和房间类别的空房数量,得到的空房数量为1,并且这两个用户又同时要求预订,可能会产生什么结果,请用100字以内文字简要叙述。 【问题2】(8分) 引入如下伪指令:将预订过程作为一个事务,将查询和修改空房表的操作分别记为R(A)和W(A,x) ,插入预订表的操作记为W(B,a) ,其中x代表空余房间数,a代表预订房间数。则事务的伪指令序列为:x = R(A),W(A,x-a),W(B,a)。 在并发操作的情况下,若客户1、客户2同时预订相同类别的房间时,可能出现的执行序列为:x1=R(A), x2 = R(A), W(A, x1-a1), W(B1,a1), W(A, x2-a2), W(B2,a2)。 (1)此时会出现什么问题,请用100字以内文字简要叙述。 (2)为了解决上述问题,引入共享锁指令SLock(X)和独占锁指令XLock(X)对数据 X进行加锁,解锁指令Unlock(X)对数据X进行解锁,请补充上述执行序列,使其满足 2PL协议,使其不产生死锁且持有锁的时间最短。 【问题3】(4分) 下面是实现预订业务的程序,请补全空玦处的代码。其中主变量:Cid,:Bdate, :Edate, :Rtype, :Num 分别代表身份证号,起始日期,结束日期,房间类别和订房数量。 SET TRANSACTION ISOLATION LEVEL REPEATABLE READ; UPDATE 空房表 SET数量=数量 - :Num WHERE__(a)__; if error then { ROLLBACK; return -1;} INSERT INTO 预订表 VALUES (:Cid, :Bdate,:Edate,:Rtype,:Num); if error then { ROLLBACK; return -2 ; } __(b)__; .
目前该部门存在人员流失、变更频繁,文档丢失或长期失于维护,维护成本愈来愈高等问题,具体表现为:
问题(1):随着时间和人员的变动,程序被多人修改,往往导致程序难以理解,注释混乱,流程复杂;
问题(2):随着不断修改程序和增加新的功能,模块之间的耦合关系日益复杂,维护成本不断增加。
这些问题导致新来的维护人员需要直接面对大量流程、结构复杂的源程序,维护困难,往往一次改动需要设计大量的软件模块。
为解决应用系统维护部门面对的问题,企业信息部门组织了专门的专家讨论会。各位专家一致认为,逆向工程与重构工程是目前预防性维护采用的主要技术,应该采用逆向工程的技术方法,重构相关应用系统文档,同时采用软件重构来降低软件代码的复杂性,最终降低维护成本。
【问题1】(8分) 软件的逆向工程是分析已有程序,寻求比源代码更高级的抽象表现形式。与之相关的概念包括软件重构、设计恢复、重构工程等。请说明设计恢复中常见的恢复信息的4种级别。 【问题2】(11分) 重构是对软件内部结构的一种调整,目的是不改变软件功能的前提下,提高其可理解性,降低其修改成本。请说明软件重构的三个类别,并简要说明常见的重构方法。针对题干中的问题(1)和问题(2),宜采用何种重构方法? 【问题3】(6分) 软件重构做出的修改可能导致程序运行变慢,但也更容易进行软件的性能优化和调整,请分析原因。
(15分)某公司拟对新产品的供应链网络进行规划。初步信息如下图示:现有P1、P2为两个备选工厂,其产能分别为20万件、6万件。两个备选中转仓库W1、W2可向市场C1、C2和C3供货。两个工厂的单件生产成本相同。两备选仓库具有相同的建设成本和单位作业成本,周转能力均为20万件。三个市场的需求量分别为5万件、10万件和5万件。图中数字是各设施点间的单位运费。要求建立该企业供应链网络规划的优化模型。即: (1)该优化模型的决策变量是什么? (2)如何考虑该优化问题的目标函数?并要求写出目标函数。 (3)针对该问题的产能约束包括哪些方面的约束?简要说明原因。
为了保护您的账号安全,请在“简答题”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!