繁体   English   中英

PostgreSQL - 让两个事务同时运行

[英]PostgreSQL - make two transactions run at the same time

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

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

喜欢:

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM