从1.1.1节的介绍可以看到,在数据库管理系统出现之前,人们对数据的操作是直接针对数据文件编写应用程序实现的,这种模式会产生很多问题。对于1.1.1小节中列举的学生基本信息管理和学生选课管理两个子系统,如果使用数据库技术来管理,其实现方式如图1-4所示。保证数据的安全是通过数据库管理系统的安全控制机制实现的,保证数据的可靠是通过数据库管理系统的备份和恢复机制实现的。......
2023-11-24
如果事务T1封锁了数据R1,T2封锁了数据R2,然后T1又请求封锁R2,由于T2已经封锁了R2,因此T1等待T2释放R2上的锁。然后T2又请求封锁R1,由于T1已经封锁了R1,因此T2也只能等待T1释放R1上的锁。这样就会出现T1等待T2先释放R2上的锁,而T2又等待T1先释放R1上的锁的局面,此时T1和T2都在等待对方先释放锁,因而形成死锁,如图7-11所示。
图7—11 死锁情景(www.chuimin.cn)
死锁问题在操作系统和一般并行处理中已经有了深入的阐述,这里不做过多解释。目前,在数据库中解决死锁问题的方法主要有两类:一类是采取一定的措施来预防死锁的发生,另一类是允许死锁的发生,但采用一定的手段定期诊断系统中有无死锁,若有则解除之。
预防死锁的方法有多种,常用的方法有一次封锁法和顺序封锁法。一次封锁法是每个事务一次将所有要使用的数据全部加锁。这种方法的问题是封锁范围过大,降低了系统的并发性。而且,由于数据库中的数据不断变化,使原来可以不加锁的数据,在执行过程中可能变成了被封锁对象,进一步扩大了封锁范围,从而更进一步降低了并发性。顺序封锁法是预先对数据对象规定一个封锁顺序,所有事务都按这个顺序封锁。这种方法的问题是若封锁对象较多,则随着插入、删除等操作的不断变化,使维护这些资源的封锁顺序很困难,另外事务的封锁请求可随事务的执行而动态变化,因此很难事先确定每个事务的封锁事务及其封锁顺序。
有关数据库技术与应用教程的文章
从1.1.1节的介绍可以看到,在数据库管理系统出现之前,人们对数据的操作是直接针对数据文件编写应用程序实现的,这种模式会产生很多问题。对于1.1.1小节中列举的学生基本信息管理和学生选课管理两个子系统,如果使用数据库技术来管理,其实现方式如图1-4所示。保证数据的安全是通过数据库管理系统的安全控制机制实现的,保证数据的可靠是通过数据库管理系统的备份和恢复机制实现的。......
2023-11-24
如果要使用缺省参数创建一个学籍管理数据库StuData,可以使用如下命令:Create Database StuData如果希望为数据库或事务日志指定一个或者多个特定文件,增加一个On Primary子句,列出一个或者多个文件,并可为分配这个文件的空间指定一个可选值,其命令形式如下:Create Database StuDataOn Primary,;如果为了提高性能和可恢复性,则可以使用Log On子句来指定数据库的SQL Server事务日志将存储在一个与数据库对象不同的设备上,示例如下:Create Database StuDataOn Primary,Log On;GO......
2023-11-24
关键字Modify File用以表示按后面的文件说明,在指定的数据库中修改相应数据库文件。下面的语句可在学籍管理数据库增加一个新数据库文件,同时要修改原数据库文件StuFile l的最大文件尺寸为2000 MB。Alter Database StuDataAdd FileModify File又如,如果要删除学籍管理数据库文件StuFile2,则可使用如下命令:Alter Database StuDataRemove File StuFile2......
2023-11-24
例如,一名学生可以用信息“”描述,这样的一行数据称为一条记录。单看这行数据我们很难知道其确切含义,但对其进行如下解释:张三是9912101班的男学生,1981年出生,计算机系应用软件专业,其内容就是有意义的。因此,数据是信息存在的一种形式,只有通过解释或处理才能成为有用的信息。数据的静态特征包括数据的基本结构、数据间的联系以及对数据取值范围的约束。数据的动态特征是指对数据可以进行符合一定规则的操作。......
2023-11-24
SQL的数据查询语句中包括SELECT,FROM,WHERE,GROUP BY和ORDER BY子句。SELECT语句具有数据查询、统计、分组和排序的功能,其语句表达能力非常强大。查询操作需要的数据源指基本表组,表间用“,”分割。当SELECT子句后的目标列中有统计函数,如果查询语句中有分组子句,则统计为分组统计,否则为对整个结果集统计。交查询操作,操作结果为取<查询1>和<查询2>共有的元组。......
2023-11-24
由于信息结构复杂,应用环境多样,在相当长的一段时期内数据库设计主要采用手工试凑法。人们经过探索提出了各种数据库设计方法,这些方法运用软件工程的思想和方法,提出了各种设计准则和规程,都属于规范设计法。工具在很大程度上依靠开发人员的经验来保证数据库模型能生成可行的设计方案和高性能的数据库。大多数的数据库设计方法都需要经历这三个步骤。根据所选择的设计方法按部就班地进行并最终获得一个实用的应用系统。......
2023-11-24
下面介绍的优化策略能提高查询的效率,但它们不一定是最优的策略,实际上“优化”一词并不是很确切,用“改进”或“改善”或许更恰当些。即使这样,使用预处理方法执行连接的时间一般仍大大减少。当查询视图时,定义视图的表达式就是公共子表达式的情况。......
2023-11-24
相关推荐