【PostgreSQL PGCE-091题目解析31】pg中的默认隔离级别为?

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

pg中的默认隔离级别为?

A、读未提交

B、读已提交

C、重复读

D、串行化

参考答案:B

解析

一、查看默认隔离级别参数

postgres=# show default_transaction_isolation;
 default_transaction_isolation
-------------------------------
 read committed
(1 row)

二、默认隔离级别 read committed

那读己提交是什么样的场景?接下来实验

1、开启事务1

postgres=# begin;
BEGIN
postgres=*# select txid_current();
 txid_current
--------------
          817
(1 row)

postgres=*# select * from t1;
  id
----
  1
  2
(2 rows)

2、开启事务2

postgres=# begin;
BEGIN
postgres=*# select txid_current();
 txid_current
--------------
          818
(1 row)

postgres=*# select * from t1;
 id
----
  1
  2
(2 rows)

3、事务1中修改数据并查询t1

postgres=*# update t1 set id=22 where id=2;
UPDATE 1
postgres=*# select * from t1;
 id
----
  1
 22
(2 rows)

当前事务1中可以看到数据己改变

4、事务2中再次查询t

postgres=*# select * from t1;
 id
----
  1
  2
(2 rows)

此时事务1中修改未提交,所以事物2中读不到未提交的数据

5、事务1中提交

postgres=*# commit;
COMMIT

6、事务2再次查看数据,发现己改变

postgres=*# select * from t1;
 id
----
  1
 22
(2 rows)

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

以下是PostgreSQL官网的考试

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

  • 16
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 C++ 代码,可以通过 PostgreSQL 的 libpq 来设置隔离级别。具体的步骤如下: 1. 首先,需要连接到 PostgreSQL 数据库。可以使用如下代码来建立连接: ``` PGconn *conn = PQconnectdb("dbname=mydb user=postgres password=mypassword"); ``` 其,"mydb" 是要连接的数据库名称,"postgres" 是数据库用户,"mypassword" 是数据库用户的密码。更多的连接参数可以参考 PostgreSQL 的文档。 2. 然后,可以使用 PQexec() 函数来执行设置隔离级别的 SQL 语句。例如,要设置隔离级别为 SERIALIZABLE,可以使用如下代码: ``` PGresult *res = PQexec(conn, "SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL SERIALIZABLE"); ``` 在上面的代码,"SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL SERIALIZABLE" 是设置隔离级别的 SQL 语句。执行完该语句后,会返回一个 PGresult 结构体,可以使用 PQresultStatus() 函数来检查执行结果是否成功。 3. 最后,需要使用 PQclear() 函数来释放资源。例如: ``` PQclear(res); ``` 完整的代码示例如下: ``` PGconn *conn = PQconnectdb("dbname=mydb user=postgres password=mypassword"); PGresult *res = PQexec(conn, "SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL SERIALIZABLE"); if (PQresultStatus(res) == PGRES_COMMAND_OK) { printf("Transaction isolation level set successfully\n"); } else { printf("Failed to set transaction isolation level\n"); } PQclear(res); PQfinish(conn); ``` 上面的代码将隔离级别设置为 SERIALIZABLE,并检查执行结果是否成功。需要注意的是,隔离级别的设置只对当前的事务有效,如果要在后续的事务继续使用该隔离级别,需要重新设置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值