大量插入数据库的性能问题(postgre)

JesorKist 2007-07-13 02:25:27
数据库使用postgre
有许多日志文件需要提取数据到数据库,文件大多2~3G,数据量特别大,现在要把这些数据提取出来,存入到数据库的一张表(假设表名为logtable)中,我想使用多线程分担任务可以提高效率吧。但是具体怎么设计才最好呢?

如果所有的线程都往这张logtable表插入,我感觉不是最好的办法。
有人提出将logtable划分成几张相同结构的表,logtable1,logtable2...,每条线程对一张表插入,全部数据写入完之后,将所有的表的数据集合到logtable中。这办法好么?
我数据库理论知识不太好,并且不同的数据库对表锁的设定也不完全相同,想问问像这种情况怎么做才能拥有较好的效率。

谢谢
...全文
859 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wtl526 2011-03-21
  • 打赏
  • 举报
回复
JesorKist 2007-07-16
  • 打赏
  • 举报
回复
什么是insert格式/copy格式?这两种格式的日志文件里面的内容是什么样子?
我的日志里面大概是这样的,第一行指示的是字段,从第二行开始就是数据了。比如这样
username||password
xxx yy
aaa zz

postgres可以把表备份成三种格式,compress,tar,sql。
compress最小,但是打开一看,乱码,看不懂的。文件以.backup结尾
tar比较大,打开一看,上面有几行是乱码,下部分都是数据,格式看上去不太整齐。文件以.backup结尾
sql也很大,但是里面的内容很整齐,分为两部分,上部分是相关的属性和数据表的信息。下部分全是数据。字段用一个Tab分隔。

我现在要这样搞:
我把我现有的日志文件,读出来,处理一下,然后按照postgres备份文件的格式,把从日志文件读出来的数据写入到另一个文件里面。就是实现一个文件格式转换的工作。最后手动用postgres的重载命令把新生成的符合postgres格式的文件载入就OK了。
我想这比之前完全使用Java代码来实现解析插入要快很多。不过有更快的么?数据量确实是很大的。一个压缩的日志文件3.5G,有60多个,总共200G日志,无论什么样的速度都满足不了我。我要更快的!!!!
trainee 2007-07-14
  • 打赏
  • 举报
回复
如果你的日志的SQL语句是INSERT 格式的
那么在PG会非常慢,比MYSQL慢很多,可以解决的方法是
每隔一段,大概几千行或更多 前加 BEGIN TRANSACTION,后面加COMMIT,使这一段在一个事务中

如果你的日志的SQL语句是COPY格式
那么在PG下很快,比MYSQL的LOAD DATA还快



JesorKist 2007-07-13
  • 打赏
  • 举报
回复
谢谢lang8134的回复
我不太了解对方的服务器(美国)平时的工作状况,所以不能确定闲时是在什么时候。如果按时差算,我们的白天的是对方的黑夜,按理说应该是闲时,但是数据插入得太慢了。无法忍受!

我看到网上有将大量数据写入MySql的事情,好像说MySql有load data这样一个命令读取文件的数据写入数据库,说是这个命令比我们的Insert要快上20倍,可以用于这样的日志数据提取。

那么,能不能不使用Java,而使用Postgres自己的脚本或者命令也像MySql那样写数据,对于这个猜想,我正在搜索资料。我们的日志文件都是那种.gz结尾的压缩文件。

我发现了这样一个东西,还不太了解,不知道有没有用。

$ createdb dbname
$ gunzip -c filename.dump.gz | psql dbname

$ cat filename.dump.gz | gunzip | psql dbname

$createdb dbname
$ cat filename.dump.* | pgsql dbname

这些好像是unix上的东西,我想即使我是windows系统,也应该有相应的命令可用,这些命令看起来对我很用。
我要继续了解一下这个东西。
第一次用postgres,头儿把这事交给我个刚毕业的学生,难呀!!
如果你可以给我什么资料,感激不尽!
lang8134 2007-07-13
  • 打赏
  • 举报
回复
事务内提交的记录数不要太多.
挑闲的时间做.

954

社区成员

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

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