PostgreSQL 9.1.3数据库在应用程序尝试在表中插入时挂起

时间:2014-07-11 08:22:42

标签: postgresql

PostgreSQL 9.1.3数据库在应用程序尝试在EventLogEntry表中插入时挂起。

1.表格的划分是

   Column    |         Type          | Modifiers
-------------+-----------------------+-----------
 tableindex  | integer               |
 object      | character varying(80) |
 method      | character varying(80) |
 bgwuser     | character varying(80) |
 time        | character(23)         |
 realuser    | character varying(80) |
 host        | character varying(80) |
 application | character varying(80) |

索引:

"ind1_eventlogentry" UNIQUE, btree (tableindex), tablespace "mmindex"

表空间:“mmdata”

2.在我们运行以下查询时从客户站点获取的数据库中,查询被挂起。

INSERT INTO eventLogEntry (object, method, bgwUser, time, realUser, host, application, tableIndex) 
VALUES (E'Server', E'Start', E'bgw', E'20140512122404', NULL, NULL, NULL, 539  );

3.但是当我们在586之后使用索引时,插入在同一个数据库中正确发生。

INSERT INTO eventLogEntry (object, method, bgwUser, time, realUser, host, application, tableIndex  ) 
VALUES (E'Server', E'Start', E'bgw', E'20140512122404', NULL, NULL, NULL, 587 );

4.当我们进行调试时,我们发现PostgreSQL已存储了一些其他事务ID,并要求当前事务等待上一次事务提交或回滚之前的时间。但我们不确定PostgreSQL如何以及在哪里存储事务ID?

5似乎某种方式索引已损坏且postgreSQL已在某处存储了某些事务ID,因此它不允许当前事务发生在该特定索引范围内。

6.当索引被删除并且表格已经重新创建时,一切正常。

Plz通过提供以下查询的答案来帮助我解决这个问题

  1. 为什么postgreSQL不允许在特定索引范围内进行插入并在特定范围之后允许插入?
  2. postgreSQL在哪里存储事务ID以及为什么它没有刷新?

0 个答案:

没有答案