陈老师:1415968548 郑老师:2735197625 乐老师:354331153
客服热线:
19941464235 / 19906632509 / 19906733890 / 19905812933(微信同号)

客服微信

【PostgreSQL PGCE-092题目解析-6】当多个事务同时运行时,一个事务可以看到另一个事务未提交的内容吗?

作者:炎燚小寶
原创
发布时间:2024-01-11 09:23
浏览量:464

考试科目:PGCE-E-091

考试题量:44 道单项选择题、29 道多项选择题(每题 2 分)

通过分数:60%

考试时间:60min

本文为云贝教育刘峰(微信:yunbee_DBA)原创,请尊重知识产权,转发请注明出处,不接受任何抄袭、演绎和未经注明出处的转载。



当多个事务同时运行时,一个事务可以看到另一个事务未提交的内容吗?

A、不能

B、可以看到

C、事务不能并行运行

D、如果两个事务同时操作一张表,可以看到


参考答案:A




解析


测试各种隔离级别的情况

1、Repeatable Read(可重复读)

SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;


2、Serializable(可串行化)

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;


3、Read Uncommitted(未提交读)

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;


这里以默认隔离级别READ COMMITTED来实验

在 PostgreSQL 的默认隔离级别 READ COMMITTED 下,一个事务无法看到另一个未提交的事务的内容。每个事务都只能看到已经提交的更改。

以下是一个简单的示例,演示了在 READ COMMITTED 隔离级别下,一个事务对数据的修改对其他未提交事务是不可见的:

-- 创建一个表
CREATE TABLE example_table (
    id serial PRIMARY KEY,
    value text
);

-- 开始第一个事务
BEGIN;

-- 在第一个事务中插入一行数据
INSERT INTO example_table (value) VALUES ('Transaction 1');

-- 在第一个事务中查询数据,能够看到自己的修改
SELECT * FROM example_table;
-- Output: 1 | Transaction 1

-- 开始第二个事务
BEGIN;

-- 在第二个事务中查询数据,此时看不到第一个事务的未提交修改
SELECT * FROM example_table;
-- Output: (empty set)

-- 在第二个事务中插入一行数据
INSERT INTO example_table (value) VALUES ('Transaction 2');

-- 在第二个事务中查询数据,能够看到自己的修改
SELECT * FROM example_table;
-- Output: 2 | Transaction 2

-- 提交第一个事务
COMMIT;

-- 在第二个事务中再次查询数据,此时能够看到第一个事务的已提交修改
SELECT * FROM example_table;
-- Output: 1 | Transaction 1
--         2 | Transaction 2

-- 提交第二个事务
COMMIT;


在上述示例中,第一个事务在插入一行数据后,第二个事务无法看到未提交的修改。只有在第一个事务提交后,第二个事务才能看到已提交的修改。这是由于 READ COMMITTED 隔离级别的特性。



PostgreSQL PGCE考试为理论考试,需通过两门考试才能拿到“PostgreSQL PGCE证书”。



以下是PostgreSQL官网的考试费,可以添加云贝教育的课程顾问老师微信19941464235或者19906632509,咨询有优惠


PostgreSQL证书如下 合格考生公布:考后不超过 5 个工作日  “开源软件联盟 PostgreSQL 分会”公众号发布  证书寄送:考后统一寄送至培训机构)



云贝教育有专业的PostgreSQL PGCE认证培训课程,想快速通过考试的同学可以扫码联系老师咨询(点击文字转跳至PostgreSQL PGCE纲)