2012-03-19 88 views
2

问题在于计算机的写入速度(10 * 32位机器)和postgresql查询性能。我将详细解释场景。使用Pytables优化HDF5中的写入速度

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

至于为PostgreSQL表而言整体记录的大小为140万,我有5个主体 - 外键指tables.I我不使用加入,因为它是不可扩展

所以对于单个查找我做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 2代处理器。

我修改了以下到PostgreSQL配置文件: 的shared_buffers:2 GB effective_cache_size:4 GB

目前成效注:

我已运行约10小时和性能如下: 每个文件写入的记录总数约为6,21,000 * 5 = 31,05,000

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

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

感谢 SREE aurovindh V

+0

你正在查询的东西,迭代结果写一些东西?在这种情况下,数据库可能不是瓶颈.. – Jayan 2012-03-19 08:05:29

+0

@jayan嗨,我实际上每次查询并将结果写入hdf5格式。你能帮我优化它吗? – 2012-03-19 10:38:08

回答