[英]How many inserts can e done per minute using only one Linux Java Process/One Thread?
我必须在Postgresql表中插入6到1000万行。 没有办法摆脱这些插入。
我可以使用在多台机器上运行的多个进程进行扩展。
我想知道鉴于英特尔i7和16GB内存Linux机器,只使用一个Java进程在1分钟内插入的最大行数是多少? 假设TCP / IP调整等
通过这个答案和我的实验,我可以确定每台机器的进程数和机器数。
我很难击中超过2000 - 每分钟2500行。
我正在使用Hibernate 5.2.5与无状态会话和一个线程。
当我运行10个这样的过程时,我能够进行20,000 - 25000次插入/分钟,这是吞吐量的线性增加。
我想知道我的单个过程中是否有任何错误,数字是否太低以及如何增加每个进程的吞吐量,比如说,至少10000 /分钟。
thsnk,库马尔
答案几乎可以肯定是在单个事务中运行所有INSERT
(每个线程)。
除非您这样做,否则每个INSERT
在其自己的事务中运行,并强制在每次插入结束时为事务日志刷新磁盘,这将使处理进行爬网。
如果这是一次性过程,并且你可能会面临丢失数据的风险(例如,你在开始之前做了一个很好的备份),你可以在PostgreSQL中设置fsync=off
(但不要忘记重置当你完成它时它的原始值!)。
我使用了最低端的Intel CPU HP笔记本电脑。 一个过程,一个线程:我能够接近每分钟50,000次插入(60秒)而无需调整等。
原始数字是在其他一些设置中获得的。 我怀疑 ,因此我想从Stack Overflow获得答案。 我得到了答案,因此无需进一步的答案。
谢谢你的答案。 还必须遵守这些规则。 此外,在开发系统时,必须能够执行分布式和并行程序。
谢谢,库马尔
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.