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 байт). Некоторые ключи могут быть удалены.

0 ответов

Другие вопросы по тегам