我正在尝试通过在创建表时指定chunkshape
来提高我的pytables / HDF5代码的性能。我无法弄清楚chunkshape
参数的实际尺寸或格式。我可以从代码中看到,它最终最终成为一个元素的元组。
这个单个元素应该是行数,字节数还是什么?
我的具体问题是我现有的代码可以创建一个包含20列的HDF5表。我想更改表的块,以便每列连续存储在磁盘上。因此,优化一次读出整列。
我尝试将chunkshape设置为20(列数),但这大大降低了读取整列的性能。是否应将块形状设置为单行的宽度(以字节为单位)?
如果出现以下问题,我想知道这应该是什么:
答案 0 :(得分:3)
chunkshape
中的PyTables
指定应该在磁盘上连续存储的每行和每列的元素数(这就是它为元组的原因)。
因此,例如,如果您的数据集是10,000 x 20(10,000行,20列)并且您始终一次访问一个列,那么每个块应包含尽可能多的列,给定最佳块大小(有关详细信息,请参阅here)。
如果你知道你将拥有多少行并且它们不是那么大,你可以指定一个(10.000,1)
(或更少行)的块。因此,如果您访问所有20列,则需要进行20次访问。