2

我需要同时(同时)运行两个会话(两个文件)。有没有办法使用 pg_sleep 或“delayExecutionUntil(x_time)”之类的其他函数来做到这一点?

4

2 回答 2

2

要在(几乎)完全相同的时间获得两个事务,您可以使用命令在 Linux shell 中同时安排两个或多个psql调用。at

喜欢:

at '08:00 01.12.2012' -f script.sql

(所需的时间戳格式可能取决于您的系统区域设置。)
其中script.sql包含以下内容:

psql mydb -p 5432 -c "INSERT INTO tbl (col) VALUES ('foo');

只是有更多的行来引发你所追求的碰撞..

于 2012-12-01T20:33:10.873 回答
1

您可以使用表锁(请参阅LOCK文档中的命令)来同步内容:

  • 连接“控制器”锁定实际事务将使用的第一个表。
  • 创建新的“Worker-A”连接并开始您的交易。它将阻塞在锁定的表上。
  • 创建新的“Worker-B”连接并开始您的交易。它将阻塞在锁定的表上。
  • “控制器”连接释放锁定。
  • “Worker-A”和“Worker-B”应该立即开始工作——当然,如果它们的并发设置允许这样做的话。
于 2012-12-01T21:53:57.217 回答