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 命令
已经是批量导入了,还有啥方法提高性能,希望高手指点。
...全文
1524 7 打赏 收藏 转发到动态 举报
写回复
用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这一块,机械的对多会话而言性能下降很快。磁头抖动太耗时。

另外,如此多的记录,即使导入了,查询也是麻烦。做分区了吗? 感觉是很麻烦的事情。
GreenPlum6官方文档中文翻译,如下为节选: 有关配置,管理和监控Greenplum数据库安装以及管理,监控和使用数 据库的信息。该指南还包含有关Greenplum数据库架构和概念(例如 并行处理)的信息。 Greenplum数据库概念 这一节给出了Greenplum数据库组件和特性的概述,例如高可用 性、并行数据装载特性以及管理工具。 管理一个Greenplum系统 这一节描述了一个Greenplum数据库系统管理员所执行的基本系统 管理任务。 管理Greenplum数据库访问 保护Greenplum数据库,包括通过网络配置、数据库用户身份验 证、加密来保护对数据库的访问。 定义数据库对象 这一节包括Greenplum数据库中的数据定义语言(DDL)以及如何 创建和管理数据库对象。 分布与倾斜 Greenplum数据库依赖于跨节点的均匀数据分布。 插入, 更新, 和删除数据 这一节提供了Greenplum数据库中有关操纵数据和并发访问的信 息。 查询数据 本主题提供在Greenplum数据库中使用SQL的信息。 使用外部数据 外部表和外表都可以访问存储在Greenplum数据库之外的数据源中 的数据,就好像数据存储在常规数据库表中一样。您可以从外部表 和外表读取和写入数据。 装载和卸载数据 这一节中的主题描述了Greenplum数据库中将数据装载进来和写出 去的方法,以及如何格式化数据文件。 性能管理 这一节的内容是Greenplum数据库的性能管理,其中包含了如何监 控,以及如何通过配置工作量来进行资源调用的优先级管理。

953

社区成员

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

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