我试图在文档中找到这个问题的答案,但找不到.

比赛现场:

Person A runs a SELECT on a large table. The query will run for a 30 seconds, for example.
Person B runs a TRUNCATE on the said table ten seconds later.

我的问题是:因为Person APerson B's TRUNCATE运行之前运行了SELECT查询,表lockedPerson A?意味着Person A会获得数据,然后Person BTRUNCATE执行吗?

推荐答案

当您截断一个表或执行任何删除微分区的DML操作时,任何正在运行的查询所需的微分区将至少在这些查询的持续时间内保留.既然发生了这种情况,就不需要锁定SELECT.除了将保留期设置为0的暂态表和临时表之外,通过截断或DML操作删除的微分区将在Time Travel保留期(1至90天)外加7天的故障保护期间保留.

Sql相关问答推荐

如何查询一个名称是根据PL/pgSQL函数结果构建的表?

部分匹配表中元素的MariaDB查询查找结果

如何根据给定条件PostgreSQL迭代减少组中的行数

PostgreSQL中的合并命令是原子的,还是需要一些类似于SQL Server版本的内容?

SQL子查询返回多个值错误

PostgreSQL抽奖查询

判断序列索引处的序列是否完整

将伪数据插入Postgres表

如何使子查询在UPDATE语句期间获得最新更新

根据日期 Select ID 的上一条记录

YEAR 函数仍然不可SARGable 吗?

如何在 postgres 中旋转某些数据字段

如何在TSQL中编写此窗口查询

正则表达式:停在第一个匹配的其中一个字符位置上

在 SQL 中使用循环遍历按时间顺序排列的数据

如何在 SQL Server 中将 -13422.8450 舍入到 -13422.84

如何获得上个月和下个月之间的销售额差异

MIN MAX 值与条件绑定

Select 给定类别列表(或更多类别)中的所有事物

如何找到特定时间间隔内的最大和最小日期?