批量插入在 docker 容器中运行的 Postgres 数据库挂起
Posted
技术标签:
【中文标题】批量插入在 docker 容器中运行的 Postgres 数据库挂起【英文标题】:Bulk insert into Postgres database running in docker container hangs 【发布时间】:2021-09-02 08:07:08 【问题描述】:我正在尝试将几千条记录以简单的表结构插入到 postgres 表中。 在我的 c# 单元测试中,我从最新的 docker alpine 映像创建了一个新数据库,然后使用 NPGSQL 创建一个表尝试插入几千条记录。
在大约 11k 条记录之后,容器似乎挂起,最终测试超时。停止插入记录后,容器日志不显示任何内容。
起初我以为是 NPGSQL,但是在普通(非 docker)数据库上的相同测试工作正常,所以它必须与 docker 映像有关? 我已经为 docker memory/cpu 以及 shared_buffers 和 max_connections 尝试了几种不同的设置,例如 postgres db。无论如何,测试都会挂在相同数量的插入上。
我意识到使用 COPY 命令更好地完成批量插入,但是对于这个测试,多个插入是相关的。
NpgSql 5.0.7 x86_64-pc-linux-musl 上的 PostgreSQL 13.3,由 gcc (Alpine 10.3.1_git20210424) 10.3.1 20210424 编译,64 位
【问题讨论】:
【参考方案1】:在注意到更多操作超时后。 我卸载了 docker,重新启动了我的机器并重新安装了 docker。这似乎已经解决了现在的问题。
【讨论】:
以上是关于批量插入在 docker 容器中运行的 Postgres 数据库挂起的主要内容,如果未能解决你的问题,请参考以下文章