Пытаюсь перегнать содержимое текстового файла с 10млн подобных записей:
7805f22e09a3581543ed0f96657c9e2c 1154586092
в bdb.
Использую простейший скрипт:
#!/usr/bin/perl
use DB_File;
$bdbp = tie %bdbh, 'DB_File', "./new_bd.dbm", O_RDWR|O_CREAT, 0644, $DB_HASH;
open FH, "< ./dump";
while(($line=<FH>)) {
chomp $line;
my ($key, $val) = split(/\t/,$line);
$bdbp->put($key,$val);
}
undef $bdbp; untie %bdbh;
и получаю 4-х терабайтный файл и перл в корке в придачу.В чём может быть проблема?
>Пытаюсь перегнать содержимое текстового файла с 10млн подобных записей:
>7805f22e09a3581543ed0f96657c9e2c 1154586092
[...]
>и получаю 4-х терабайтный файл и перл в корке в придачу.Не ошибся ли ты на 3 десятичных порядка?
>В чём может быть проблема?Если отбросить баг в конкретной инсталляции, то может быть в алгоритме хэширования - с твоими данными оставляет слишком много свободный мест. Попробуц $DB_BTREE.
>>Пытаюсь перегнать содержимое текстового файла с 10млн подобных записей:
>>7805f22e09a3581543ed0f96657c9e2c 1154586092
>[...]
>>и получаю 4-х терабайтный файл и перл в корке в придачу.
>
>Не ошибся ли ты на 3 десятичных порядка?
Нет, хоть винт на 240Г, но размер файла именно 4Тб показывают все утилиты.>>В чём может быть проблема?
>
>Если отбросить баг в конкретной инсталляции, то может быть в алгоритме хэширования
>- с твоими данными оставляет слишком много свободный мест. Попробуц $DB_BTREE.
>
Помогло установка bsize = 10240 (10Mb) вместо значения по умолчанию 256 byte.
Тестировалось на двух разных серверах: результат одинаков.