カーソルで 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 レコードを取得しました が、150 000 000 以上のtcbdbrnum()
ループがcounter
あります... サイクル終了はありませんでした。
問題は何ですか?
ループサイズは 150652 サイクルであり、ループ オフセットはほぼ 1.3 * 150652 であることがわかりました。したがって、ファイルを 1 042 638 キーに増やし、ループサイズ = 280299 とします。recsize / loopsize の比率 = 3,73...
何をすべきか、それはアンループを持っていますか? ループが発生するのはなぜですか?
すべてのキーはサイズが 64 ビット (8 バイト) のランダムです。一部のキーを削除できました。