文档库 最新最全的文档下载
当前位置:文档库 › 数据库实验报告:事务与并发控制

数据库实验报告:事务与并发控制

数据库实验报告:事务与并发控制
数据库实验报告:事务与并发控制

1.实验七:事务与并发控制

1.1.实验目的

1.掌握事务机制,学会创建事务。

2.理解事务并发操作所可能导致的数据不一致性问题,用实验展现四种数据不一致性

问题:丢失修改、读脏数据、不可重复读以及幻读现象。

3.理解锁机制,学会采用锁与事务隔离级别解决数据不一致的问题。

4.了解数据库的事务日志。

1.2.实验内容

假设学校允许学生将银行卡和校园卡进行绑定,在student数据库中有如下的基本表,其中校园卡编号cardid即为学生的学号:

icbc_card(studcardid,icbcid,balance) //校园卡ID,工行卡ID,银行卡余额

campus_card(studcardid,balance) //校园卡ID,校园卡余额

数据创建的代码:

use student

create table campus_card

(studcardid Char(8) ,

balance Decimal(10,2))

create table icbc_card

(

studcardid Char(8),

icbcid Char(10),

balance Decimal(10,2)

)

insert into campus_card values('20150031', 30)

insert into campus_card values('20150032', 50)

insert into campus_card values('20150033', 70)

insert into icbc_card values('20150031','2015003101', 1000)

insert into icbc_card values('20150032','2015003201', 1000)

insert into icbc_card values('20150033','2015003301', 1000)

针对以上数据库按照要求完成下列实验:

1.编写一个事务处理(begin tran)实现如下的操作:某学号为20150032的学生要从银

行卡中转账200元到校园卡中,若中间出现故障则进行rollback。(15分)set transaction isolation level

repeatable read

西北工业大学数据库实验报告

1.利用图形用户界面创建,备份,删除和还原数据库和数据表(50分,每小题5分) ●数据库和表的要求(第五版教材第二章习题 6 要求的数据库) 数据库名:SPJ,其中包含四张表:S表, P表, J表, SPJ表 ●完成以下具体操作: (1)创建SPJ数据库,初始大小为 10MB,最大为50MB,数据库自动增长,增长方 式是按5%比例增长;日志文件初始为2MB,最大可增长到5MB,按1MB增长。 数据库的逻辑文件名和物理文件名均采用默认值。 (2)在SPJ数据库中创建如图2.1-图2.4的四张表(只输入一部分数据示意即可)。 S表: P表: J表: SPJ表:

(3)备份数据库SPJ(第一种方法):备份成一个扩展名为bak的文件。(提示: 最好先删除系统默认的备份文件名,然后添加自己指定的备份文件名) (4)备份数据库SPJ(第二种方法):将SPJ数据库定义时使用的文件(扩展名为 mdf,ldf的数据文件、日志文件等)复制到其他文件夹进行备份。 原位置: 新的位置: (5)删除已经创建的工程项目表(J表)。 (6)删除SPJ数据库。(可以在系统默认的数据存储文件夹下查看此时SPJ数据 库对应的mdf,ldf文件是否存在) 删除过后文件不存在 (7)利用备份过的bak备份文件还原刚才删除的SPJ数据库。(还原数据库)

(8)利用备份过的mdf,ldf的备份文件还原刚才删除的SPJ数据库。(附加) (9)将SPJ数据库的文件大小修改为100MB。 (10)修改S表,增加一个联系电话的字段sPhoneNo,数据类型为字符串类 型。 2.利用SQL语言创建和删除数据库和数据表(50分,每小题5分) ●数据库和表的要求 数据库名:Student,其中包含三个表:S:学生基本信息表;C:课程基本信息表;SC:学生选课信息表。 ●完成以下具体操作: (1)用SQL语句创建如图2.5-图2.7要求的数据库Student,初始大小为20MB, 最大为100MB,数据库自动增长,增长方式是按10M兆字节增长;日志文件初

数据库实验报告2

理工大学信息工程与自动化学院学生实验报告 (2011 —2012 学年第 1 学期) 课程名称:数据库系统教程开课实验室:信自楼445 2011 年11月 27日 一、上机目的及容 1.上机容: SQL的数据查询,查询、插入、删除、修改 2.上机目的: 掌握数据查询语句,并能熟练应用 二、实验原理及基本技术路线图(方框原理图或程序流程图) 在SQL server 2008软件中的查询中,输入SQL代码 三、所用仪器、材料(设备名称、型号、规格等或使用软件) 1台PC及SQL server 2008软件 四、实验方法、步骤(或:程序代码或操作过程) 1)select查询 单表查询:查询全体学生的学号及: SELECT SNO,SNAME FROM S;

查询全体学生的全部信息: SELECT*FROM S; 2)查询经过计算值 (SELECT子句的<目标列表达式>为表达式,表达式可以是:算术表达式、字符串常量、函数、列别名等) 查全体学生的学号、及其出生年份: SELECT SNO,SNAME,2012-AGE FROM S;

查询全体学生的、出生年份和所属系: SELECT SNO,SNAME,2012-AGE,SDEPT FROM S; 查询选修了课程的学生学号: SELECT SNO FROM SC,C WHERE https://www.wendangku.net/doc/c11283626.html,O=https://www.wendangku.net/doc/c11283626.html,O; 为了避免这种不合题意的情况,我们用distinct用了去除重复的元组。所以上例中的执行语句为: SELECT DISTINCT SNO FROM SC;

SELECT DISTINCT SNO FROM SC,C WHERE https://www.wendangku.net/doc/c11283626.html,O=https://www.wendangku.net/doc/c11283626.html,O; 查询选修课程的各种成绩: SELECT CNO,GRADE FROM SC; SELECT DISTINCT CNO,DISTINCT GRADE FROM SC; SELECT CNO,DISTINCT GRADE FROM SC; SELECT DISTINCT CNO,GRADE FROM SC;

数据库原理习题与答案 第9章数据库系统恢复和并发控制技术

第九章.数据库系统恢复和并发控制技术 习题: 一.填空题 1.数据库保护包含数据的。 2.是DBMS的基本单位,它是用户定义的一组逻辑一致的程序序列。 3.DBMS的并发控制的主要方法是机制。 4.有两种基本的锁,它们是和。 5.对并发操作若不加以控制,可能带来的不一致性有、和。 6.数据库系统在运行过程中,可能会发生故障,故障主要有、、介质故障和四类。 7.数据库系统是利用存储在外存上其他地方的来重建被破坏的数据库,它主要有两种:和。 二.选择题 1.下面哪个不是数据库系统必须提供的数据控制功能。 A.安全性 B.可移植性 C.完整性 D.并发控制 2.事务的原子性是指。 A.事务中包括的所有操作要么都做,要么都不做 B.事务一旦提交,对数据库的改变是永久的 C.一个事务内部的操作及使用的数据对并发的其他事务是隔离的 D.事务必须是使数据库从一个一致性状态变到另一个一致性状态 3.多用户的数据库系统的目标之一是使它的每个用户好像面对着一个单用户的数据库一样使用它,为此数据库系统必须进行。 A.安全性控制 B.完整性控制 C.并发控制 D.可靠性控制 4.设有两个事务T1、T2,其并发操作如下图所示,下面评价正确的是________。 T1 T2 ①读A=10 ②读A=10 ③A=A-5写回 ④A=A-8写回

A该操作不存在问题B该操作丢失修改 C该操作不能重复读D该操作读“脏”数据 5.若事务T对数据R已加X锁,则其他对数据R 。 A.可以加S锁,不能加X锁 B.不能加S锁,可以加X锁 C.可以加S锁,也可以加X锁 D.不能加任何锁 6.对并发控制不加以控制,可能会带来。 A.不安全 B.死锁 C.死机 D.不一致 7.用来记录对数据库中数据进行的每一次更新操作。 A.后援副本 B.日志文件 C.数据库 D.缓冲区 三.简答题 1.试述事务的概念和事务的四个特性。 2.数据库中为什么要有恢复子系统,它的功能是什么? 3.数据库运行中可能发生的故障有哪几类?哪些故障影响事务的正常执行?哪些故障破坏数据库数据? 4.数据库恢复的基本技术有哪些? 5.登记日志文件时,为什么必须先写日志文件,后写数据库? 6.在数据库中为什么要并发控制? 7.什么是封锁? 8.基本的封锁有哪几种?试述它们的含义。 9.不同封锁协议与系统一致性级别的关系是什么? 10.请给出预防死锁的若干方法。 11.什么样的并发调度是正确的调度? 12.试述两段锁协议的概念。

数据库原理实验报告二.pdf

LIAOCHENG UNIVERSITY 计算机学院实验报告 【2015 ~2016 学年第 2 学期】 【一、基本信息】 【实验课程】数据库原理与应用 【设课形式】独立□非独立【课程学分】 【实验项目】实验二、SQL数据操作及查询 【项目类型】基础综合□设计□研究创新□其它[ ]【项目学时】4【学生姓名】傅雪晨【学号】59 【系别专业】电子商务 【实验班组】 【同组学生】 【实验室名】综合实验楼 【实验日期】【报告日期】 【二、实验教师对报告的最终评价及处理意见】 实验成绩:(涂改无效) 指导教师签名:年月日注:要将实验项目、实验课程的成绩评定及课程考核办法明确告知学生,并报实验管理中心备案

【三、实验预习】 实验条件(实验设备、软件、材料等): 实验2 SQL数据操作及查询 实验目的: 1. 向实验1建立的表中添加数据(元组), 掌握INSERT语句的用法; 2. 修改基本表中的数据, 掌握UPDATE语句的用法; 3. 删除基本表中的数据,掌握DELETE语句的用法; 4. 体会数据完整性约束的作用, 加深对数据完整性及其约束的理解。 5. 熟练掌握SELECT语句,能够运用该语句完成各种查询。 实验内容: 1.使用INSERT语句将教材P82表中的数据添加到数据库STUDENTDB中. 2. Insert into student59 select'1','李勇','男','20','CS','',''union select'2','刘晨','女','19','CS','',''union select'3','王敏','女','18','MA','',''union select'5','张立','男','19','IS','','' select*from student59 select*from course59 select*from sc59 alter table course59NOCHECK Constraint fk_cpno Insert into course59 select'1','数据库','5','4'union select'2','数学','','2'union select'3','信息系统','1','4'union select'4','操作系统','6','3'union select'5','数据结构','7','4'union select'6','数据处理','','2'union select'7','PASCAL语言','6','4' alter table course59CHECK Constraint FK_course59_course59 Insert into sc59 select'1','1',92 union select'1','2',85 union select'1','3',88 union select'2','2',90 union select'2','3',80 alter table sc59CHECK Constraint fk_S_c alter table sc59NOCHECKConstraint fk_S_c

实验15 事务与并发控制

实验十五事务与并发控制 【实验目的与要求】 1.掌握数据库事务的概念 2.熟悉数据库的四个特性 3.熟练掌握数据库事务的实现方法 【实验内容与步骤】 15.1.SQL Server数据库事务基础知识 1.事务的概念( Transaction ) 所谓事务是用户定义的一个数据库操作序列,这些操作要么都做,要么都不做,是一个不可分割的工作单位。 关系数据库中,事务可以是一条SQL语句、一组SQL语句。 在SQL语言中,定义事务的语句有三条: Begin Transaction 开始 Commit 结束 Rollback 回滚 2.事务开始:BEGIN TRANSACTION 标记一个显式本地事务的起始点。BEGIN TRANSACTION将@@TRANCOUNT 加1。 语法结构: BEGIN TRAN [ SACTION ] [ transaction_name | @tran_name_variable [ WITH MARK [ 'description' ] ] ] 参数说明: transaction_name:是给事务分配的名称。transaction_name 必须遵循标识符规则,但是不允许标识符多于32 个字符。仅在嵌套的https://www.wendangku.net/doc/c11283626.html,MIT 或BEGIN...ROLLBACK 语句的最外语句对上使用事务名。 @tran_name_variable:是用户定义的、含有有效事务名称的变量的名称。必须用char、varchar、nchar 或nvarchar 数据类型声明该变量。 WITH MARK ['description']:指定在日志中标记事务。Description 是描述该标记的字符串。 如果使用了WITH MARK,则必须指定事务名。WITH MARK 允许将事务日志还原到命名标记。 4.事务提交:COMMIT TRANSACTION 标志一个成功的隐性事务或用户定义事务的结束。如果@@TRANCOUNT 为1,COMMIT TRANSACTION 使得自从事务开始以来所执行的所有数据修改成为数据库的永

数据库实验报告二

《数据库原理》实验报告 实验三: 数据库完整性与安全性控 制 实验四: 视图与索引 学号姓名 班级日期 2013302534 杨添文10011303 2015.10.1 7 实验三:数据完整性与安全性控制 一、实验内容 1.利用图形用户界面对实验一中所创建的Student库的S表中,增加以下的约束和索引。 (18分,每小题3分) (1)非空约束:为出生日期添加非空约束。 (2)主键约束:将学号(sno)设置为主键,主键名为pk_sno。 (3)唯一约束:为姓名(sname)添加唯一约束(唯一键),约束名为uk_sname。 (4)缺省约束:为性别(ssex)添加默认值,其值为“男”。 (5)CHECK约束:为SC表的成绩(grade)添加CHECK约束,约束名为ck_grade,其检查 条件为:成绩应该在0-100之间。

(6)外键约束:为SC表添加外键约束,将sno,cno设置为外键,其引用表为分别是S 表和C表,外键名称分别为fk_sno,fk_cno。 2.在图形用户界面中删除上小题中已经创建的各种约束,用SQL语言分别重新创建第1小题中的(2)-(6)小题。(15分,每小题3分,提示:alter table add constraint)(2)alter table s add constraint pk_sno primary key(sno) (3)alter table s add constraint uk_sname unique(sname) (4)alter table s add constraint a default('男')for ssex (5) alter table sc add constraint ck_grade check(grade between 0 and 100) (6) alter table sc add constraint fk_sno foreign key(sno)references s(sno) alter table sc add constraint fk_cno foreign key(cno)references c(cno)

并发控制课后答案-简述并发控制

第八章并发控制 习题解答和解析 1. 1.在数据库中为什么要并发控制? 答:数据库是共享资源,通常有许多个事务同时在运行。当多个事务并发地存取数据库时就会产生同时读取和/或修改同一数据的情况。若对并发操作不加控制就可能会存取和存储不正确的数据,破坏数据库的一致性。所以数据库管理系统必须提供并发控制机制。 2. 2.并发操作可能会产生哪几类数据不一致?用什么方法能避免各种不一致的情况? 答:并发操作带来的数据不一致性包括三类:丢失修改、不可重复读和读"脏"数据。 (1)丢失修改(Lost Update)两个事务T1和T2读入同一数据并修改,T2提交的结果破坏了(覆盖了)T1提交的结果,导致T1的修改被丢失。 (2)不可重复读(Non -Repeatable Read)不可重复读是指事务T1读取数据后,事务T2 执行更新操作,使T1无法再现前一次读取结果。不可重复读包括三种情况:详见《概论》8.1(P266)。 (3)读"脏"数据(Dirty Read)读"脏"数据是指事务T1修改某一数据,并将其写回磁盘,事务T2读取同一数据后,T1由于某种原因被撤销,这时T1已修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致,则T2读到的数据就为"脏"数据,即不正确的数据。 避免不一致性的方法和技术就是并发控制。最常用的技术是封锁技术。也可以用其他技术,例如在分布式数据库系统中可以采用时间戳方法来进行并发控制。 3. 3.什么是封锁? 答:封锁就是事务T在对某个数据对象例如表、记录等操作之前,先向系统发出请求,对其加锁。加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其他的事务不能更新此数据对象。封锁是实现并发控制的一个非常重要的技术。 4. 4.基本的封锁类型有几种?试述它们的含义。 答:基本的封锁类型有两种:排它锁(Exclusive Locks, 简称 X 锁 )和共享锁(Share Locks,简称 S 锁)。 排它锁又称为写锁。若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。这就保证了其他事务在T释放A上的锁之前不能再读取和修改A。 共享锁又称为读锁。若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。这就保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。 5.如何用封锁机制保证数据的一致性 ? 答:DBMS在对数据进行读、写操作之前首先对该数据执行封锁操作,例如下图中事务T1在对A进行修改之前先对A执行XLock(A),即对A加X锁。这样,当T2请求对A加X锁时就被拒绝,T2只能等待T1释放A上的锁后才能获得对A的X锁,这时它读到的A是T1更新后 的值,再按此新的A值进行运算。这样就不会丢失 T1的更新。

数据库实验报告2

数据库原理实验报告 姓名:学号:班级: 实验日期:03/30/2017 实验名称:数据库创建与管理 实验二数据库创建与管理 一、实验目的 1.熟练掌握界面方式创建和管理数据库。 2.熟练掌握查询编辑器T-SQL语句创建和管理数据库。 3.熟练掌握备份和还原数据库。 二、实验器材 1、接入Internet的计算机主机; 三、实验内容 1、界面方式创建和管理数据库 (1)创建数据库 (2)修改数据库

(3)删除数据库(使用右键) 2、利用企业管理器备份和还原数据库(1)备份数据库 (2)还原数据库(操作->右键)

(1)创建SPJ数据库:“新建查询”,输入以下语句并运行 CREATE DATABASE SPJ ON (NAME=’SPJ_Data’,FELENAME='C:\Program Files\Microsoft SQL Server\MSSQL\data\SPJ_Data.MDF' , SIZE = 3, MAXSIZE = 10, FILEGROWTH = 10%) LOG ON (NAME = 'SPJ_Log', FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL\data\SPJ_Log.LDF' ,

SIZE = 1, FILEGROWTH = 10%) (2)修改SPJ数据库:在查询分析器中输入以下语句并运行 ALTER DATABASE SPJ MODIFY FILE (NAME='SPJ_Data', SIZE=4, MAXSIZE=UNLIMITED) ALTER DATABASE SPJ ADD FILE (NAME='SPJ_Data_2', FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL\Data\SPJ_Date_2.ndf',SIZE=1, MAXSIZE=10, FILEGROWTH=10%) (3)删除SPJ数据库:DROP DA TABASE SPJ

第八章 数据库并发控制练习和答案教学内容

第八章数据库并发控制 一、选择题 1.为了防止一个用户的工作不适当地影响另一个用户,应该采取()。 A. 完整性控制 B. 访问控制 C. 安全性控制 D. 并发控制 2. 解决并发操作带来的数据不一致问题普遍采用()技术。 A. 封锁 B. 存取控制 C. 恢复 D. 协商 3.下列不属于并发操作带来的问题是()。 A. 丢失修改 B. 不可重复读 C. 死锁 D. 脏读 4.DBMS普遍采用()方法来保证调度的正确性。 A. 索引 B. 授权 C. 封锁 D. 日志 5.事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放, 这是()。 A. 一级封锁协议 B. 二级封锁协议 C. 三级封锁协议 D. 零级封锁协议 6.如果事务T获得了数据项Q上的排他锁,则T对Q()。 A. 只能读不能写 B. 只能写不能读 C. 既可读又可写 D. 不能读也不能写 7.设事务T1和T2,对数据库中地数据A进行操作,可能有如下几种情况, 请问哪一种不会发生冲突操作()。 A. T1正在写A,T2要读A B. T1正在写A,T2也要写A C. T1正在读A,T2要写A D. T1正在读A,T2也要读A 8.如果有两个事务,同时对数据库中同一数据进行操作,不会引起冲突的操作是()。 A. 一个是DELETE,一个是SELECT B. 一个是SELECT,一个是DELETE C. 两个都是UPDATE D. 两个都是SELECT 9.在数据库系统中,死锁属于()。 A. 系统故障 B. 事务故障 C. 介质故障 D. 程序故障 二、简答题 1. 在数据库中为什么要并发控制? 答:数据库是共享资源,通常有许多个事务同时在运行。 当多个事务并发地存取数据库时就会产生同时读取和/或修改同一数据的情况。若对并发操作不加控制就可能会存取和存储不正确的数据,破坏数据库的一致性。所以数据库管理系统必须提供并发控制机制。 2. 并发操作可能会产生哪几类数据不一致?用什么方法能避免各种不一致的情况? 答:并发操作带来的数据不一致性包括三类:丢失修改、不可重复读和读“脏”数据。

数据库实验报告实验二

湘潭大学 数据库实验报告 实验名称SQL操作 班级软件工程一班 指导老师郭云飞(老师)学生姓名汤能武 系(院)信息工程学院实验时间2011年12月

SQL操作 一、实验目的 1.了解和掌握MS SQL Server 工具的使用; 2.熟悉掌握SQL' 3.训练学生设计与编写过程,函数与触发器的能力; 二、实验环境 1. 硬件:数据库服务器,客户机,局域网; 2.软件:MS SQL Server 2008 ,建模软件; 三、实验内容 根据给定的问题建立数据库模型,在MS SQL Management Studio 中建立该数据库,并利用SQL语句建立表格与视图,录入数据,进行查询,插入,删除,修改等操作,编写过程,函数,触发器等; 给定问题如下: 1.一个学校有若干教学楼和若干班; 2.一个教室有若干教室和若干管理人员; 3.一间教室只有一个管理人员,但一个管理人员可以管理若干个教室; 4.每周7天,每周上午,下午,晚上都可以安排上课,每周的课表都不变; 5.一间教室或班在一段时间内只能安排一堂课,但可以是合班上课;

四、实验准备 1.理论知识预习及要求 ①使用SQL语句建立数据库; ②使用SQL语句进行查询,修改等操作; ③使用SQL语句建立过程,函数,触发器等; ④使用SQL创建数据表; 2.实验指导书预习及要求 上机前先预习数据库原理指导书的实验,理解和掌握SQL语言的常用操作。 五、实验原理或操作要点简介 注意服务器要先启动,才能与服务器建立连接。 使用SQL命令,完成预定功能。 六、实验步骤 1. 分析给定问题,设计E-R 模型;

2.根据E-R图设计出该问题的关系数据模型,分析数据模型并规范之;关系模型

数据库实验报告:事务与并发控制

1.实验七:事务与并发控制 1.1.实验目的 1.掌握事务机制,学会创建事务。 2.理解事务并发操作所可能导致的数据不一致性问题,用实验展现四种数据不一致性 问题:丢失修改、读脏数据、不可重复读以及幻读现象。 3.理解锁机制,学会采用锁与事务隔离级别解决数据不一致的问题。 4.了解数据库的事务日志。 1.2.实验内容 假设学校允许学生将银行卡和校园卡进行绑定,在student数据库中有如下的基本表,其中校园卡编号cardid即为学生的学号: icbc_card(studcardid,icbcid,balance) //校园卡ID,工行卡ID,银行卡余额campus_card(studcardid,balance) //校园卡ID,校园卡余额 数据创建的代码: use student createtable campus_card ( studcardid Char(8), balance Decimal(10,2)) createtable icbc_card ( studcardid Char(8), icbcid Char(10), balance Decimal(10,2) )

insertinto campus_card values('20150031', 30) insertinto campus_card values('20150032', 50) insertinto campus_card values('20150033', 70) insertinto icbc_card values('20150031','2015003101', 1000) insertinto icbc_card values('20150032','2015003201', 1000) insertinto icbc_card values('20150033','2015003301', 1000) 针对以上数据库按照要求完成下列实验: 1.编写一个事务处理(begin tran)实现如下的操作:某学号为20150032的学生要从银 行卡中转账200元到校园卡中,若中间出现故障则进行rollback。(15分)settransactionisolationlevel repeatableread

数据库系统原理教程课后习题及答案(第十章)

第11章并发控制 1 .在数据库中为什么要并发控制? 答:数据库是共享资源,通常有许多个事务同时在运行。当多个事务并发地存取数据库时就会产生同时读取和/或修改同一数据的情况。若对并发操作不加控制就可能会存取和存储不正确的数据,破坏数据库的一致性。所以数据库管理系统必须提供并发控制机制。 2 .并发操作可能会产生哪几类数据不一致?用什么方法能避免各种不一致的情况? 答:并发操作带来的数据不一致性包括三类:丢失修改、不可重复读和读“脏’夕数据。( l )丢失修改(lost update ) 两个事务Tl 和T2读入同一数据并修改,T2提交的结果破坏了(覆盖了)Tl 提交的结果,导致Tl 的修改被丢失。( 2 )不可重复读(Non 一Repeatable Read ) 不可重复读是指事务Tl 读取数据后,事务几执行更新操作,使Tl 无法再现前一次读取结果。( 3 )读“脏”数据(Dirty Read ) 读“脏’夕数据是指事务Tl 修改某一数据,并将其写回磁盘,事务几读取同一数据后,Tl 由于某种原因被撤销,这时Tl 已修改过的数据恢复原值,几读到的数据就与数据库中的数据不一致,则几读到的数据就为“脏”数据,即不正确的数据。避免不一致性的方法和技术就是并发控制。最常用的技术是封锁技术。也可以用其他技术,例如在分布式数据库系统中可以采用时间戳方法来进行并发控制。 3 .什么是封锁?基本的封锁类型有几种?试述它们的含义。 答:封锁就是事务T 在对某个数据对象例如表、记录等操作之前,先向系统发出请求,对其加锁。加锁后事务T 就对该数据对象有了一定的控制,在事务T 释放它的锁之前,其他的事务不能更新此数据对象。封锁是实现并发控制的一个非常重要的技术。 基本的封锁类型有两种:排它锁(Exclusive Locks ,简称x 锁)和共享锁( Share Locks,简称S 锁)。排它锁又称为写锁。若事务T 对数据对象A 加上X 锁,则只允许T 读取和修改A ,其他任何事务都不能再对A 加任何类型的锁,直到T 释放A 上的锁。这就保证了其他事务在T 释放A 上的锁之前不能再读取和修改A 。共享锁又称为读锁。若事务T 对数据对象A 加上S 锁,则事务T 可以读A但不能修改A ,其他事务只能再对A 加S 锁,而不能加X 锁,直到T 释放A 上的S 锁。这就保证了其他事务可以读A ,但在T 释放A 上的S 锁之前不能对A 做任何修改。 4 .如何用封锁机制保证数据的一致性? 答:DBMS 在对数据进行读、写操作之前首先对该数据执行封锁操作,例如下图中事务Tl 在对A 进行修改之前先对A 执行xock ( A ) ,即对A 加x 锁。这样,当几请求对A 加x 锁时就被拒绝,几只能等待Tl 释放A 上的锁后才能获得对A 的x 锁,这时它读到的A 是Tl 更新后的值,再按此新的A 值进行运算。这样就不会丢失Tl 的更新。

SQL数据库实验报告 实验二

实验2 SQL Server数据库的管理 1.实验目的 (1)了解SQL Server 数据库的逻辑结构和物理结构的特点。 (2)掌握使用SQL Server管理平台对数据库进行管理的方法。 (3)掌握使用Transact-SQL语句对数据库进行管理的方法。 2.实验内容及步骤 (1)在SQL Server管理平台中创建数据库。 ①运行SQL Server管理平台,在管理平台的对象资源管理器中展开服务器。 ②右击“数据库”项,在快捷菜单中选择“新建数据库”菜单项。在新建数据库对话框的数据库名称文本框中输入学生管理数据库名studentsdb,单击“确定”按钮。 (2)选择studentsdb数据库,在其快捷菜单中选择“属性”菜单项,查看“常规”、“文件”、“文件组”、“选项”、“权限”和“扩展属性”等页面。 (3)打开studentsdb数据库的“属性”对话框,在“文件”选项卡中的数据库文件列表中修改studentsdb数据文件的“分配的空间”大小为2MB。指定“最大文件大小”为5MB。修改studentsdb数据库的日志文件的大小在每次填满时自动递增5%。 (4)单击“新建查询”打开查询设计器窗口,在查询设计器窗口中使用Transact-SQL 语句CREATE DA TABASE创建studb数据库。然后通过系统存储过程sp_helpdb查看系统中的数据库信息。 (5)在查询设计器中使用Transact-SQL语句ALTER DATABASE修改studb数据库的设置,指定数据文件大小为5MB,最大文件大小为20MB,自动递增大小为1MB。 (6)在查询设计器中为studb数据库增加一个日志文件,命名为studb_Log2,大小为5MB,最大文件大小为10MB。 (7)使用SQL Server管理平台将studb数据库的名称更改为student_db。 (8)使用Transact-SQL语句DROP DATABASE删除student_db数据库。 3.实验思考 (1)数据库中的日志文件是否属于某个文件组? (2)数据库中的主数据文件一定属于主文件组吗? (3)数据文件和日志文件可以在同一个文件组吗?为什么? (4)删除了数据库,其数据文件和日志文件是否已经删除?是否任何人都可以删除数据库? (5)能够删除系统数据库吗?

数据库原理实验报告(2)

南京晓庄学院 《数据库原理与应用》 课程实验报告 实验二数据库的创建、管理、备份及还原实验 所在院(系):数学与信息技术学院 班级:11软工转本2 学号: 1130708 11130710 姓名:马琦乔凌杰

1.实验目的 (1)掌握分别使用SQL Server Management Studio图形界面和Transact-SQL语句创建和修改 数据库的基本方法; (2)学习使用SQL Server查询分析窗口接收Transact-SQL语句和进行结果分析。 (3)了解SQL Server的数据库备份和恢复机制,掌握SQL Server中数据库备份与还原的方 法。 2.实验要求 (1)使用SQL Server Management Studio创建“教学管理”数据库。 (2)使用SQL Server Management Studio修改和删除“教学管理”数据库。 (3)使用Transact-SQL语句创建“教学管理”数据库。 (4)使用Transact-SQL语句修改和删除“教学管理”数据库。 (5)使用SQL Server Management Studio创建“备份设备”;使用SQL Server Management Studio对数据库“教学管理”进行备份和还原。 (6)SQL Server 2005数据库文件的分离与附加。 (7)按要求完成实验报告 3.实验步骤、结果和总结实验步骤/结果 (1) 总结使用SQL Server Management Studio创建、修改和册除“TM”(教学管理)数据库的过程。 新建数据库如下图所示: 进入sql server management studio 主界面,选择数据库右击新建数据库。 如何修改数据库 进入sql server management studio 主界面,选择数据库右击属性即可看到数据库信息,可更改数据库基本信息。

数据库并发控制

数据库是一个共享资源,可以提供多个用户使用。这些用户程序可以一个一个地串行执行,每个时刻只有一个用户程序运行,执行对数据库的存取,其他用户程序必须等到这个用户程序结束以后方能对数据库存取。但是如果一个用户程序涉及大量数据的输入/输出交换,则数据库系统的大部分时间处于闲置状态。因此,为了充分利用数据库资源,发挥数据库共享资源的特点,应该允许多个用户并行地存取数据库。但这样就会产生多个用户程序并发存取同一数据的情况,若对并发操作不加控制就可能会存取和存储不正确的数据,破坏数据库的一致性,所以数据库管理系统必须提供并发控制机制。并发控制机制的好坏是衡量一个数据库管理系统性能的重要标志之一。 DM用封锁机制来解决并发问题。它可以保证任何时候都可以有多个正在运行的用户程序,但是所有用户程序都在彼此完全隔离的环境中运行。 一、并发控制的预备知识 (一) 并发控制概述 并发控制是以事务(transaction)为单位进行的。 1. 并发控制的单位――事务 事务是数据库的逻辑工作单位,它是用户定义的一组操作序列。一个事务可以是一组SQL 语句、一条SQL语句或整个程序。 事务的开始和结束都可以由用户显示的控制,如果用户没有显式地定义事务,则由数据库系统按缺省规定自动划分事务。 事务应该具有4种属性:原子性、一致性、隔离性和持久性。 (1)原子性 事务的原子性保证事务包含的一组更新操作是原子不可分的,也就是说这些操作是一个整体,对数据库而言全做或者全不做,不能部分的完成。这一性质即使在系统崩溃之后仍能得到保证,在系统崩溃之后将进行数据库恢复,用来恢复和撤销系统崩溃处于活动状态的事务对数据库的影响,从而保证事务的原子性。系统对磁盘上的任何实际数据的修改之前都会将修改操作信息本身的信息记录到磁盘上。当发生崩溃时,系统能根据这些操作记录当时该事

数据库实验报告2.

实验报告 ( 2015 / 2016 学年第 2 学期)题目:数据库系统原理 专业:物联网工程 学生: 班级学号: 指导教师: 指导单位:物联网学院 日期: 2016-5-12

实验名称:约束、视图、索引与存储过程 一、 实验容和要求 1、用create database 命令创建电影数据库(以自己的学号命名)。 2、在电影数据库中用create table 命令创建如下5个关系模式。 3、用alter table 命令修改movies 关系模式,增加引用完整性约束cproducerc ,要求movies 表中的producerC 必须是在MovieExec 表中已有的导演。若违反了此约束,则拒绝更新操作。 4、用alter table 命令修改StarsIn 关系模式,增加引用完整性约束cmovies ,要求StarsIn 表中的电影名称和年份必须是在movies 表中已有的电影名称和年份。若违反了此约束,则拒绝更新操作。 5、用alter table 命令修改movies 关系模式,增加完整性约束cyear ,要求电影年份不能是1915年以前的。 6、用alter table 命令修改movies 关系模式,增加完整性约束clength ,要求电影长度不能小于60也不能多于250。 7、设计数据对3~6的容进行验证。 8、用create view 命令创建如下视图。 a)视图RichExec 给出了所有资产在10000000以上的导演的、地址、证书号和资产; b)视图StudioPress 给出了既是电影公司经理又是导演的那些人的名字、地址和证书号; c)视图ExecutiveStar 给出了既是演员又是导演的那些人的名字、地址、性别、生日、证书号和资产总值。 9、用create index 命令在StarsIn 的StarName 属性上创建索引aindex 。 10、编写存储过程(函数) ① 求产品数据库Laptop 存容量的平均值和总和。 然后调用该存储过程(函数)。 二、 实验环境 PostGreSQL9.3 三、 实验设计 CREATE TABLE Movies ( title char(20), year int, length int, genre char(10), studioName char (30), producerC int, PRIMARY KEY (title, year ));CREATE TABLE MovieStar ( name char(12), address char(30), gender char(2), birthdate date, PRIMARY KEY (name ));CREATE TABLE StarsIn ( movieTitle char(20), movieYear int, starName char(12), PRIMARY KEY (movieTitle , movieYear , starName ));CREATE TABLE MovieExec ( name char(12), address char(30), cert int, netWorth int, PRIMARY KEY (cert ));CREATE TABLE Studio ( name char(30), address char(30), presC int, PRIMARY KEY (name )); 说明: Movies 关系中,title 为电影名称、year 为发行年份、length 为电影长度(分钟)、genre 为电影流派、studioName 为电影公司名称、producerC 为导演证书号;MovieStar 关系中,name 为影星的姓名、address 为影星住址、gender 为性别、birthdate 为出生日期;StarsIn 关系中,movieTitle 为电影名称、movieYear 为发行年份、starName 为参演影星姓名;MovieExec 关系中,name 导演姓名、address 为住址、cert 为导演证书号、netWorth 为导演净资产值;Studio 关系中,name 为电影公司名称、address 为电影公司地址、presC 为电影公司老总证书号。

事务调度与并发控制

四级数据库第八章-事务调度与并发控制8.1 并发控制概述 在第七章中己经讲到,事务是并发控制的基本单位,保证事务ACID特性是事务处理的重要任务,而事务ACID特性可能遭到破坏的原因之一是多个事务对数据库的并发操作造成的。为了保证事务的隔离性更一般,为了保证数据库的一致性,DBMS需要对并发操作进行正确调度。这些就是数据库管理系统中并发控制机制的责任。 下面先来看一个例子,说明并发操作带来的数据的不一致性问题。 考虑飞机订票系统中的一个活动序列: ①甲售票点(甲事务)读出某航班的机票余额A,设A=16; ②乙售票点(乙事务)读出同一航班的机票余额A,也为16; ③甲售票点卖出一张机票,修改余额A A-l,所以A为15,把A写回数据库; ④乙售票点也卖出一张机票,修改余额A A-l,所以A为15,把A写回数据库。结果明明卖出两张机票,数据库中机票余额只减少1。 这种情况称为数据库的不一致性。这种不一致性是由并发操作引起的。在并发操作情况下,对甲、乙两个事务的操作序列的调度是随机的。若按上面的调度序列执行,甲事务的修改就被丢失。这是由于第④步中乙事务修改A并写回后覆盖了甲事务的修改。 仔细分析并发操作带来的数据不一致性包括三类:丢失修改、不可重复读和读“脏”数据,如图8.1所示。 1.丢失修改(Lost Update) 两个事务T1和T2。读入同一数据并修改,T2提交的结果破坏了T1提交的结果,导致T1的修改被丢失,如图8.1(a)所示。上面飞机订票例子就属此类。

图8.1 2.不可重复读(Non-Repeatable Read) 不可重复读是指事务T1读取数据后,重复T2执行更新操作,使T1无法再现前一次读 取结果。具体地讲,不可重复读包括三种情况: (1)事务T1读取某一数据后,事务T2对其做了修改,当事务T1再次读该数据时,得到与前一次不同的值。例如在图8.1(b)中,T1读取B=100进行运算,T2读取同一数据B对其进行修改后将B=200写回数据库。T1为了对读取值校对重读B,B己为200,与第1次读取值不一致。 (2)事务T1按一定条件从数据库中读取了某些数据记录后,事务T2删除了其中部分记录,当T1再次按相同条件读取数据时,发现某些记录神秘地消失了。 (3)事务T1按一定条件从数据库中读取某些数据记录后,事务T2插入了一些记录,当T1再次按相同条件读取数据时,发现多了一些记录。 后两种不可重复读有时也称为幻影(Phantom Row)现象。

数据库实验报告2

实验内容与要求 请有选择地实践以下各题。 (1)基于“教学管理”数据库jxgl,使用SQL的查询语句表达下列查询:①检索年龄大于23岁的男学生的学号和姓名; SELECT Sno,Sname FROM Student WHERE Ssex=’男’AND Sage>23; ②检索至少选修一门课程的女生姓名; SELECT Sname FROM Student WHERE Ssex=’女’AND Sno IN ( SELECT Sno FROM SC GROUP BY Sno HAVING count(*)>=1; ); ③检索王同学不学的课程的课程号; SELECT Cno; FROM Course WHERE Cno NOT IN ( SELECT Cno FROM Student,SC WHERE Sname like ’王%’AND Student.Sno=SC.Sno ); ④检索至少选修两门课程的学生学号; SELECT DISTINCT Sno FROM SC GROUP BY Sno HAVING count(*)>=2; ⑤检索全部学生都选修的课程的课程号与课程名; SELECT Cno,Cname FROM Course WHERE NOT EXISTS ( SELECT * FROM Student WHERE NOT EXISTS ( SELECT * FROM SC WHERE SC.Sno=Student.Sno AND https://www.wendangku.net/doc/c11283626.html,o=https://www.wendangku.net/doc/c11283626.html,o ) ); ⑥检索选修了所有3学分课程的学生学号;

FROM SC X WHERE NOT EXISTS ( SELECT * FROM Course WHERE Ccredit=3 AND NOT EXISTS ( SELECT * FROM SC Y WHERE X.Sno=Y.Sno AND https://www.wendangku.net/doc/c11283626.html,o=https://www.wendangku.net/doc/c11283626.html,o ) ); (2)基于“教学管理”数据库jxgl,使用SQL的查询语句表达下列查询: ①统计有学生选修的课程门数; SELECT count(DISTINCT Cno) FROM SC; ②求选修4号课程的学生的平均年龄; SELECT AVG(Sage) FROM Student,SC WHERE Cno=4 AND Student.Sno=SC.Sno; ③求学分为3的每门课程的学生平均成绩; SELECT AVG(Grade) FROM Course,SC WHERE Ccredit=3 AND https://www.wendangku.net/doc/c11283626.html,o=https://www.wendangku.net/doc/c11283626.html,o GROUP BY https://www.wendangku.net/doc/c11283626.html,o; ④统计每门课程的学生选修人数,要求超过3人的课程才统计,要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列; SELECT Cno,count(Sno) FROM SC GROUP BY Cno HAVING count(Sno)>3 ORDER BY count(Sno) DESC,Cno ASC; ⑤检索学号比“王菲”同学大而年龄比他小的学生姓名; SELECT Sname FROM Student X WHERE Sno> ( SELECT Sno FROM Student Y WHERE Sname=’王菲’AND Sage> ( SELECT Sage FROM Student Z WHERE Sname=’王菲’AND X.Sno=Z.Sno AND Y.Sno=Z.Sno ) ); ⑥检索姓名以“王”打头的所有学生的姓名和年龄;

相关文档
相关文档 最新文档