postgresql大数据写入性能如何提高问题

newpb80 2020-07-25 06:35:50
各位数据库优化高手们:
目前开发中遇到如下一个性能问题,无法提高性能,请高手指点多谢.
现在有对应四个表的csv文件,对应每个表的有7个csv文件,一共28个文件,
28个csv文件大小是16G。其中一个表的导入数据大概是2亿行记录。
采用posgresql 的 copy 命令将数据导入到posgresql 数据库中。
现在用java 写了一个程序,用线程池管理线程,同时起了28个线程,执行copy 命令。
运行上述程序的环境是 centos 内存16G cpu 12kenel 24线程,
硬盘的写速度是200M/秒
现在完成 上述导入任务的平均时间是1400秒,将近23分钟以上。
用iostat 命令发现io 使用率基本上都是100%,感觉性能瓶颈在io 上。
CPU的使用率也就20%.

客户实际的数据量应该是上述数据量的70 倍,那要将近27个小时
客户肯定不会接受的。

以前没有处理过这么大量的数据导入数据库,因为采用posgresql 的 copy 命令
已经是批量导入了,还有啥方法提高性能,希望高手指点。
...全文
1604 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xdcad 2022-02-09
  • 打赏
  • 举报
回复

有什么进展吗? 我也发现写入最高只能到12M/s左右,读取可以到200M/s以上。

tao563812344 2020-12-07
  • 打赏
  • 举报
回复
楼主后来有好的解决办法了吗?
trainee 2020-09-01
  • 打赏
  • 举报
回复
PG服务端一个连接一个进程,在这个连接上都是串行执行命令的,不能一条命令执行一半再执行另一条命令。所以在客户端上多线程共同使用一个连接,也要加锁做好排队,所以用多线程没有多大意义.
newpb80 2020-08-29
  • 打赏
  • 举报
回复
各位高手
为了保证数据一致性,出现插入错误,能全部回滚,
因此想多线程使用一个连接,调用PostgreSQL 的copy 方法读取多个表csv文件
不知道使用相同连接,采用多线程,PostgreSQL 会实现并发处理吗
请问PostgreSQL 是否会采用并发处理
多谢各位高手指点
newpb80 2020-08-29
  • 打赏
  • 举报
回复
请教版主
用同一个数据库连接,采用多线程使用PostgreSQL 的copy方法读大数据csv文件写入多个表,能实现并发
写入数据库吗
请高手指点
多谢
newpb80 2020-07-29
  • 打赏
  • 举报
回复
非常感谢楼主。
除了上固态SSD盘阵。有没有其它方面能优化的。
调整postgresql的参数有帮助吗。有没有好的调整参数方法能否分享一下。

其它数据库大拿们,
能否分享一下这么大数据量的数据导入postgresql的实战经验。
想从代码层面或参数调整方面入手,看看能不能进一步优化。
多谢大家了。
丁劲犇 2020-07-25
  • 打赏
  • 举报
回复
上固态SSD盘阵。IO这一块,机械的对多会话而言性能下降很快。磁头抖动太耗时。

另外,如此多的记录,即使导入了,查询也是麻烦。做分区了吗? 感觉是很麻烦的事情。

972

社区成员

发帖
与我相关
我的任务
社区描述
PostgreSQL相关内容讨论
sql数据库数据库架构 技术论坛(原bbs)
社区管理员
  • PostgreSQL社区
  • yang_z_1
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧