MySQL数据库基础与实例教程练习题参考答案(5)

2018-12-05 20:50

第九章答案

1.请简单描述事务的必要性。 答:请参看9.1.1章节内容。

2.关闭MySQL自动提交的方法有哪些?您推荐数据库开发人员使用哪一种方法? 答:请参看9.1.2章节内容。推荐数据库开发人员尽可能地使用MySQL命令“start transaction;”隐式地关闭自动提交,使用MySQL命令“commit;”显示地提交更新语句。

3.关闭MySQL自动提交后,提交更新语句的方法有哪些?您推荐数据库开发人员使用哪一种方法?

答:请参看9.1.4章节内容。推荐数据库开发人员尽可能地使用MySQL命令“start transaction;”隐式地关闭自动提交,使用MySQL命令“commit;”显示地提交更新语句。

4.请简单描述典型的事务处理使用方法。 答:请参看9.1.5章节内容。

5.请简单描述典型的事务保存点使用方法。您是如何理解保存点是“临时状态”这句话的?

答:请参看9.1.6章节内容。 6.请简单描述锁机制的必要性。 答:请参看9.2.1章节内容。

7.为MyISAM表施加表级锁的语法格式是什么? 答:请参看9.2.3章节内容。

8.为MyISAM表施加表级锁时,read local与read选项有什么区别? 答:请参看9.2.3章节内容。

9.您是如何理解锁的粒度、隐式锁与显式锁、锁的类型、锁的钥匙以及锁的生命周期等概念的?

答:请参看9.2.2章节内容。

10.您如何理解锁的粒度、锁的生命周期与数据库的并发性能之间的关系?

答:锁的粒度越小,锁的生命周期越短,数据库的并发性能就越高,数据库越适合做并发更新操作。反之亦然。

11.您如何理解锁的粒度、锁的生命周期与服务器资源之间的关系?

答:锁粒度越小,完成某个功能时所需要的加锁、解锁的次数就会越多,反而会消耗较多的服务器资源,甚至会出现资源的恶性竞争,甚至发生死锁问题。锁是数据库管理系统重要的数据库资源,需要耗费一定的服务器内存,锁的生命周期越长,该锁占用服务器内存的时间间隔就越长;锁的生命周期越短,该锁占用服务器内存的时间间隔就越短。因此为了节省服务器资源,数据库开发人员必须尽可能的缩短锁的生命周期,尽可能早地释放锁资源。

12.“选课系统”应该使用哪种粒度的锁机制?为什么?

答:对于“选课系统”而言,系统需要为上百名学生,甚至几百名学生同时提供选课、调课、退课服务。为了提高并发性能,“选课系统”将选用行级锁,这也是“选课系统”的各个数据库表使用InnoDB存储引擎的原因。

13.为InnoDB表施加行级锁的语法格式是什么? 答:请参看9.2.4章节内容。

14.请列举现实生活中的“资源竞争”问题,如何使用锁机制解决此类“资源竞争”问题?

答:现实生活中,选课系统就存在“资源竞争”问题,解决方案请参看9.2.5章节内容。 15.完成调课功能的replace_course_proc()存储过程以及完成选课功能choose_proc()存储过程使用了行级锁解决了“资源竞争”问题,能不能将存储过程中下面的select语句写在“start transaction;”语句之前,以便缩短行级锁的生命周期?

说明:题目中的“select state into status from course where course_no=c_no”应该修改为 “select available into s3 from course where course_no=c_no for update” 答:select available into s3 from course where course_no=c_no for update

必须放在“start transaction;”语句之后,目的是:延长行级排他锁的生命周期,所以需要将该select语句写在了start transaction语句后,封装到事务中。

16.InnoDB什么时候使用间隙锁,什么时候使用记录锁?间隙锁与记录锁之间的区别是什么?

答: 当事务的隔离级别设置为repeatable read,此时为InnoDB表施加行级锁,默认情况下使用间隙锁。当事务的隔离级别设置为read uncommitted或者read committed,此时为InnoDB表施加行级锁,默认情况下使用记录锁(record lock)。

间隙锁(next-key锁):当检索条件为某个区间(例如account_no between 1 and 100)范围时,对该区间范围施加共享锁或排他锁后,满足该区间范围的记录(例如account_no=1或者account_no=2的记录)存在共享锁或排他锁;满足该区间范围,但表中不存在的记录(例如account_no=50或者account_no=100的记录)也会存在共享锁或排他锁,即行级锁会锁定相邻的键(next-key locking)。

记录锁:与间隙锁不同,记录锁仅仅为满足该查询范围的记录施加共享锁或排他锁。

17.锁等待与死锁之间是什么关系? 答:请参看9.2.9章节内容。 18.请解释事务的ACID特性。 答:请参看9.3.1章节内容。

19.MySQL支持哪些事务隔离级别?默认的事务隔离级别是什么? 答:请参看9.3.2章节内容。

20.每一种事务隔离级别可能引发什么问题? 答:脏读、不可重复读、幻读、死锁等问题。

21.脏读现象、不可重复读现象以及幻读现象之间有什么区别? 答:请参看9.3.2章节内容。

22.您如何理解事务、锁机制、事务的隔离级别之间的关系? 答:请参看9.4章节内容。

select state into status from course where course_no=c_no;

第十章答案

1.选用PHP脚本语言开发网上选课系统的原因是什么? 答:请参看10.1.1章节内容。

2.请简单描述PHP脚本程序的工作流程。 答:请参看10.1.3章节内容。

3.什么是软件开发生命周期?对于一个真实的软件项目而言,您觉得编码阶段是软件开发生命周期中最难实现的环节吗?

答:请参看10.2章节内容。对于一个真实的软件项目而言,编码阶段仅仅是软件开发生命周期中的其中一个环节,并不是最难实现的环节,俗话说,万事开头难,一般而言,最难实现的环节一般是系统规划和系统分析阶段。

4.请简单描述网上选课系统的目标、可行性分析、项目进度、人员分工。 答:请参看10.3章节内容。

5.请简单描述网上选课系统的功能需求分析与非功能需求分析。 答:请参看10.4章节内容。

6.请简单描述网上选课系统的系统设计。 答:请参看10.5章节内容。

7.按照本章要求、步骤实现网上选课系统。 答:请参看本章代码部分内容。

8.根据本章的知识,参看视图与触发器章节的内容,为网上选课系统添加两个新的功能模块:重置所有学生的密码,重置所有教师的密码。

答:代码略。

9.根据本章的知识,为网上选课系统添加新的功能模块:任课教师编辑未经审核的课程信息。

答:代码略。

10.什么是MVC模式,使用MVC模式开发程序有哪些优点? 答:请参看10.7章节内容。

11.编写功能测试用例,测试网上选课系统其他功能模块。 答:请参看10.8章节内容。


MySQL数据库基础与实例教程练习题参考答案(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:数据结构中常见的8种排序算法的C++代码实现

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: