我有一个应该插入新行的长时间运行的函数。如何查看此功能的进度?
我认为脏读会起作用所以我读了http://www.postgresql.org/docs/8.4/interactive/sql-set-transaction.html并提出了以下代码并在新会话中运行它:
SET SESSION CHARACTERISTICS AS SERIALIZABLE;
SELECT * FROM MyTable;
Postgres给我一个语法错误。我究竟做错了什么?如果我做对了,那么当长函数仍在运行时,我会看到插入的记录吗?
由于
答案 0 :(得分:10)
PostgreSQL没有实现从函数外部看到这一点的方法,即READ UNCOMMITTED
隔离级别。您的基本两个选项是:
RAISE NOTICE
来向您显示您的距离答案 1 :(得分:6)
PostgreSQL Transaction Isolation
在PostgreSQL中,您可以请求四种标准事务隔离级别中的任何一种。但在内部,只有两个不同的隔离级别,对应于Read Committed和Serializable级别。当您选择级别Read Uncommitted时,您确实获得了Read Committed,当您选择Repeatable Read时,您确实获得了Serializable,因此实际的隔离级别可能比您选择的更严格。 SQL标准允许这样做:四个隔离级别仅定义哪些现象不得发生,它们不定义必须发生的现象。