Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在批插入过程中执行单个选择时,Postgresql/INSERT性能会下降_Postgresql_Insert_Database Performance - Fatal编程技术网

在批插入过程中执行单个选择时,Postgresql/INSERT性能会下降

在批插入过程中执行单个选择时,Postgresql/INSERT性能会下降,postgresql,insert,database-performance,Postgresql,Insert,Database Performance,背景: 使用PostgreSQL 9.6,对于自定义同步项目,我们有一个代理,在同步数据时在数据库_1和数据库_2之间进行大量插入 例如:DB2在5分钟内关闭,DB1中有40000行新行,因此当DB2再次启动时,所有40000行将立即从DB1同步到DB2 所有这些都很有效 问题/事实: 在同步过程中,插入速率约为1000行/秒 然而,当我们在数千个插入的中间进行同步时,从表中执行一个简单的选择计数*,我们注意到插入速率下降到每秒几十秒,而不是每秒1000 x。 问题: 在pgAdmin内部由同步

背景:

使用PostgreSQL 9.6,对于自定义同步项目,我们有一个代理,在同步数据时在数据库_1和数据库_2之间进行大量插入

例如:DB2在5分钟内关闭,DB1中有40000行新行,因此当DB2再次启动时,所有40000行将立即从DB1同步到DB2

所有这些都很有效

问题/事实:

在同步过程中,插入速率约为1000行/秒

然而,当我们在数千个插入的中间进行同步时,从表中执行一个简单的选择计数*,我们注意到插入速率下降到每秒几十秒,而不是每秒1000 x。 问题:

在pgAdmin内部由同步进程以外的另一个进程执行的SELECT操作是否会减慢INSERT批处理的速度

有没有可能解释这一点的锁定或内部原因? 或者我应该提供更多的信息?如何调试更多? 提示:

日志被完全激活,所有的插入在减速前总是需要大约0.700ms,减速期间也是如此,不会改变。 插入操作当前是逐行执行的 我很乐意提供更多信息
如果是第一次读取数据,SELECT将写入。但这并不能解释这种写入性能下降的原因,除非存储系统在并发I/O方面非常糟糕。通常读卡器不会妨碍写入器,反之亦然。服务器功能非常强大,存储是SSD,行数约为100字节-我能做些什么来提供更多调试数据吗?事实上,我甚至不知道如何进一步调试……有几个问题:插入是批量执行还是一次执行一行?插入过程是否打开了自动提交,或者,如果没有,是否在每次插入查询后进行提交,或者在一批插入查询之后?插入正在一个接一个地执行。在我们正在构建的同步原型中,批量或复制是不容易的。我将尽快检查有关自动提交的信息。分析这类事情往往涉及大量的数据收集和性能等。查看。免责声明,我为其中一家上市公司工作。如果是第一次读取数据,SELECT将写入。但这并不能解释这种写入性能下降的原因,除非存储系统在并发I/O方面非常糟糕。通常读卡器不会妨碍写入器,反之亦然。服务器功能非常强大,存储是SSD,行数约为100字节-我能做些什么来提供更多调试数据吗?事实上,我甚至不知道如何进一步调试……有几个问题:插入是批量执行还是一次执行一行?插入过程是否打开了自动提交,或者,如果没有,是否在每次插入查询后进行提交,或者在一批插入查询之后?插入正在一个接一个地执行。在我们正在构建的同步原型中,批量或复制是不容易的。我将尽快检查有关自动提交的信息。分析这类事情往往涉及大量的数据收集和性能等。查看。免责声明,我在一家上市公司工作。