Tokyocabinet: от цикла к файлу BTree
Я пересекаю BTree курсором ( пример из документации)
Смотрите код ниже:
kkey_t* p2; // the type kkey_t is some struct
int counter=0;
BDBCUR *cur = tcbdbcurnew(bdb);
tcbdbcurfirst(cur);
while((p2 = (kkey_t*)tcbdbcurkey(cur, &len )) != NULL){
printf("%u.%u\t%u\n",p2->type, p2->key, counter);
free(p2);
res = tcbdbcurnext(cur);
if (!res) break;
counter++;
}
Я получаю 562 418 записей tcbdbrnum()
, но у меня кругом где counter
больше чем 150 000 000 и больше... у меня не было конца цикла.
В чем проблема может быть?
Я обнаружил, что размер шлейфа составляет 150652 цилиндра, а смещение цикла - почти 1,3 * 150652. Итак, я увеличиваю файл до 1 042 638 ключей, и у меня есть loopsize = 280299 Отношение recsize / loopsize = 3,73...
Что делать, чтобы иметь разворот? Почему у меня есть петли?
Все ключи имеют размер 64 бита (8 байт). Некоторые ключи могут быть удалены.