【问题标题】:Optimising write speeds in HDF5 using Pytables使用 Pytables 优化 HDF5 中的写入速度
【发布时间】:2012-04-03 16:50:44
【问题描述】:

问题是关于电脑(10*32位机)的写入速度和postgresql查询性能的问题。我会详细讲解场景。

我有大约 80 Gb 的数据(以及适当的数据库索引)。我正在尝试从 Postgresql 数据库中读取它并使用 Pytables 将其写入 HDF5。我在一个 hdf5 文件中有 1 个表和 5 个变量数组。Hdf5 的实现不是多线程的,也没有启用对称多处理。我租了大约 10 台计算机为了加快我的数据处理速度,花了一天时间尝试编写它们。

就 postgresql 表而言,总记录大小为 1.4 亿,我有 5 个主外键引用表。我没有使用连接,因为它不可扩展

因此,对于单次查找,我会进行 6 次不使用连接的查找并将它们写入 hdf5 格式。 对于每个查找,我在每个表及其对应的数组中插入 6 次。

查询非常简单

select * from x.train where tr_id=1 (primary key & indexed)
select q_t from x.qt where q_id=2 (non-primary key but indexed) 

(类似五个查询)

每台计算机写入两个 hdf5 文件,因此总数约为 20 个文件。

一些计算和统计:

Total number of records : 14,37,00,000
Total number of records per file : 143700000/20 =71,85,000 
The total number of records in each file : 71,85,000 * 5 = 3,59,25,000

当前 Postgresql 数据库配置:

我目前的机器:8GB RAM 和 i7 第二代处理器。

我对 postgresql 配置文件进行了以下更改: 共享缓冲区:2 GB 有效缓存大小:4 GB

关于当前表现的说明:

我已经运行了大约十个小时,表现如下: 每个文件写入的记录总数约为6,21,000 * 5 = 31,05,000

瓶颈是我每天只能租用 10 小时(过夜),如果以这种速度处理,大约需要 11 天,这对我的实验来说太高了。

请建议我如何改进。 问题: 1. 我应该在这些桌面上使用对称多处理(它有 2 个内核和大约 2 GB 的 RAM)。在这种情况下,建议或首选什么? 2. 如果我更改我的 postgresql 配置文件并增加 RAM,它会增强我的进程。 3. 我应该使用多线程吗?在这种情况下,任何链接或指针都会有很大帮助

谢谢 Sree aurovindh V

【问题讨论】:

  • 您正在查询某些内容并遍历结果以编写某些内容?在那种情况下,数据库可能不是瓶颈..
  • @jayan 嗨,我实际上每次都在查询并将结果写入 hdf5 格式。你能帮我优化一下吗?

标签: postgresql python-2.7 hdf5 pytables


【解决方案1】:

【讨论】:

  • 想总结一下链接提到的内容吗?
  • 链接已失效。您能总结一下您现在使用的解决方案吗?谢谢
猜你喜欢
  • 2017-09-17
  • 1970-01-01
  • 2013-12-03
  • 1970-01-01
  • 2015-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多