- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图了解 SSI 在 Postgres 中的实际行为。我的理解是,如果我有两个事务与同一个表交互,但事务不与表中的相同行交互,则不会发生异常。
但是,我正在运行以下测试,其中事务一执行以下操作:
cur = engine.cursor()
cur.execute('SELECT SUM(value) FROM mytab WHERE class = 1')
s = cur.fetchall()[0][0]
print('retrieved sum is...')
print(s)
print('sleeping....')
time.sleep(10)
cur.execute('INSERT INTO mytab (class, value) VALUES (%s, %s)', (1, s))
engine.commit()
当上面的第一个事务处于休眠状态时,我运行第二个事务:
cur = engine.cursor()
cur.execute('SELECT SUM(value) FROM mytab WHERE class = 2')
s = cur.fetchall()[0][0]
print('retrieved sum is...')
print(s)
cur.execute('INSERT INTO mytab (class, value) VALUES (%s, %s)', (2, s))
engine.commit()
在这种情况下,第二个事务只涉及类 = 2 的行,而第一个事务只涉及类 = 1 的行。但这导致第一个事务失败并出现以下异常:
could not serialize access due to read/write dependencies among transactions
DETAIL: Reason code: Canceled on identification as a pivot, during write.
HINT: The transaction might succeed if retried.
供引用 mytab
非常简单,看起来像这样:
class value
1 10
1 20
2 100
2 200
除了标准的 engine = psycopg2.connect
设置外,我还在运行上述代码之前使用此行设置事务隔离级别:
engine.set_isolation_level(psycopg2.extensions.ISOLATION_LEVEL_SERIALIZABLE)
最佳答案
你的理解基本上是正确的,但是SSI算法并不完美,所以总会有一些误报的风险(例如docs中提到的,行锁可能会组合成页锁,优化以精度为代价获取内存)。
此处的行为是 predicate locking implementation 的限制,即:
For a table scan, the entire relation will be locked.
基本上,在您的第一个查询 WHERE class = 1
运行后,需要检查来自其他事务的 future 插入以查看它们是否会满足此条件他们是可见的。实际上,除了最简单的情况外,对所有情况执行此检查都是不切实际或不可能的,因此为了谨慎起见,改为在整个表上采用谓词锁。
细粒度谓词锁实现是based on indexing ,因为根据例如关系的受影响子集来推理要容易得多B 树范围比任意 WHERE
约束。
换句话说,如果您在 class
列上有一个索引 - 并且您的表中有足够的记录供规划人员实际使用它 - 您应该会得到您期望的行为。
关于postgresql - Postgres SSI 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57776922/
这真是让我抓狂了。我正在尝试让服务器端包含工作。我托管网站的服务器启用了 SSI,拥有服务器的公司表示我的问题与我的代码有关,与他们的服务器无关。 这是我的名为 test.html 的文件
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题? Update the question所以它是on-topic对于堆栈溢出。 9年前关闭。 Improve this que
Web 服务器是在 Ubuntu 12.04 LTS 上运行的 Apache 2.2.22。 这是我的 http.conf 文件: DirectoryIndex index.shtml index.h
我的网站已设置为使用 SSI,并且运行良好。 但是,当我尝试通过 SSI 包含文件时,它不会工作,因为我使用相对路径。例如下面的作品 但事实并非如此(假设文件
我通过 SSI 插入页面的 html 菜单向左延伸超出了页面的硬编码宽度,我不明白为什么... 如果你看我的代码,#menu id 是问题所在,因为它正确 float (float:right;)但它
我正在基于变量动态添加 ssi 包含,我希望能够有一个默认包含以防文件不存在。即: if /file/testthisfile.ssi exists add /file/testthisfil
我的 shtml 文件中出现以下错误 [an error occurred while processing this directive] 包含另一个文件时不会发生此错误,当我执行 if 表达式时会
1.首先明确,只能够指定某个确定的目录,支持cgi,即运行该目录执行cgi程序;否则不太安全。 寻找: 复制代码 代码如下: #  
我最近发现了 SSI,但并不完全了解它是如何工作的。我已经编写了这段 JavaScript 代码,如下所示,它应该将链接的末尾转换为文本文件名(它做得很好)。然后转义所有需要转义的字符,代码如下。 v
我试图了解 SSI 在 Postgres 中的实际行为。我的理解是,如果我有两个事务与同一个表交互,但事务不与表中的相同行交互,则不会发生异常。 但是,我正在运行以下测试,其中事务一执行以下操作: c
我有一个导航栏,我在一个小网站的每个页面中使用 SSI。像这样: option 1 option 2 option 3 在每个页面中,我想突出显示所选选项(可能用粗体)并禁用“s
我有同一个 html 页面的 5 个版本。除了一个隐藏变量之外,页面中的所有内容都是相同的。我使用隐藏变量来跟踪重要的事情。 我想看看是否可以通过包含带有隐藏变量的 html 来重写它。这是我的wra
我正在使用 wamp。我想使用 ssi,所以我更改了 httpd.conf 中的以下几行,但它似乎不起作用: AddType text/html .shtml AddHandler server-pa
我正在尝试学习如何执行服务器端包含,因为我的一个项目需要它们。现在,我可以在本地使用 SSI 吗?我的站点是 100% HTML、Javascript 和 CSS,所以没有服务器运行我的东西。我只是在
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我在从我的 zend 框架应用程序中将查询参数传递到 SSI include 时遇到问题。 我试图在另一个 PHP 中包含一个 PHP 文件: 如果我的 hellotest.php(包含上述行)驻留
我在 Windows 上使用 WAMP 中的服务器端包含。我的 html 文件正在执行,其中包含 SSI 文件,但它在输出中显示空白区域。 如何去除产生的空白 标签。这会生成使我的页面设计崩溃的空白
我在 Ubuntu 12.04 服务器上运行 Apache(版本 2.2.22)网络服务器。 SSI 不工作。经典在 index.shtml 页面中不被解释。在 /etc/apache2/httpd.
在我的工作中,我可以看到旧网站使用 SSI 来包含大量代码并做一些有条件的工作。我只是好奇 SSI 还在发展吗?如果没有,存在哪些现代简单的服务器端脚本语言? 最佳答案 SSI仍然有它的利基。它快速、
当我使用 SSI 指令时,有没有办法用 HTML 实体转义变量? "> 谢谢你的建议! 最佳答案 参见 http://httpd.apache.org/docs/2.2/mod/mod_include
我是一名优秀的程序员,十分优秀!