并发控制下的数据一致性实验

1  实验目的

  1. 理解数据库管理系统并发控制基本原理。
  2. 熟练掌握数据库管理系统并发控制相关的命令与工具。
  3. 通过设计实验验证隔离级别的数据一致性表现。

2  实验平台与工具

  1. Windows、Linux操作系统
  2. 数据库管理系统PostgreSQL

3  实验内容

  1. 通过pgAdmin或者PostgreSQL命令创建两个用户A和B,分别用于两个命令提示符窗口(psql)的登录,用于模拟执行两个事务的客户端;
  2. 在PostgreSQL的默认隔离级别下验证“不可重复读”的数据一致性表现,并行执行两个事务,具体方法自行设计,可以参考教材;
  3. 修改PostgreSQL的隔离级别为“可重复读”,重现上述实验过程,对比实验结果,展现“可重复读”隔离级别下的数据一致性表现。

提示:

  1. 参考“PostgreSQL13.1-CN-v1.0.pdf”文件的3.4节和第13章
  2. 参考“【隔离级别命令】PostgreSQL的事务隔离级别 - abce - 博客园.pdf” 文件
  3. 需要关闭数据库管理系统的自动提交功能“\set AUTOCOMMIT off”

一、实验环境

1. 操作系统:Windows 10

2. 数据库管理软件(含版本号):PostgreSQL 13.12-1-windows-x64

二、实验内容及其完成情况

1. 通过pgAdmin或者PostgreSQL命令创建两个用户A和B,分别用于两个命令提示符窗口(psql)的登录,用于模拟执行两个事务的客户端。
1.1 通过PostgreSQL命令创建两个用户A和B,如图1所示。

图1

1.2用两个命令提示符窗口(psql)的登录来模拟两个事务的客户端,如图2    所示。

图2

2. 在PostgreSQL的默认隔离级别下验证“不可重复读”的数据一致性表现,并行   执行两个事务。

在事务一中,用户a对course表中的cno=’1’的ccredit进行更改为5;在事务一提交之前,用户b 对course表的cno=’1’进行事务二查询,ccredit=4,还是初始值;事务一提交后,事务二再次执行查询,发现ccredit=5。所以验证了PostgreSQL的默认隔离级别下“不可重复读”的数据一致性表现,如图3所示。

图3

3. 修改PostgreSQL的隔离级别为“可重复读”,重现上述实验过程,对比实验结   果,展现“可重复读”隔离级别下的数据一致性表现。

将每个事务的隔离级别都设置为 "可重复读"。在事务一中,用户a对course 表中的cno=’1’的ccredit进行更改为4;在事务一提交之前,用户b 对course表的 cno=’1’进行事务二的查询,ccredit=5,还是初始值;事务一提交后,事务二再次执 行查询,发现ccredit还是等于5,没有发生改变。所以验证了PostgreSQL的“可 重复读”隔离级别下的数据一致性表现,如图4所示。

图4

三、实验总结

(可以总结实验中出现的问题以及解决的思路,也可以列出没有解决的问题)

问题1:
1.问题描述

创建的时候是用户B,而登录的时候却要用b,如图5所示。

图5

2.问题分析(可能的原因、难点、挑战)

在 PostgreSQL 中,数据库对象(如用户、数据库、表等)的名称是区分大小写的,但在默认情况下,它们在系统中被存储为小写。

3.解决方案

(如该问题没有被解决可以不写具体的解决方案,而给出大致的思路和方向)

因为未使用双引号将用户名括起来,PostgreSQL 会将用户名存储为小写,所以用小写b就可以登录了。

问题2:
1.问题描述

显示用户a对course表没有权限操作。

2. 问题分析(可能的原因、难点、挑战)

图6

没有给用户a和b赋予修改course表的权限,如图6所示。

3.解决方案

(如该问题没有被解决可以不写具体的解决方案,而给出大致的思路和方向)

图7

这样a可以对course表进行更新,b可以对course表进行查询,如图7所示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值