Вставьте 100 миллионов записей на RocksDB

Я пытаюсь вставить 100 миллионов записей на RocksDB, но я получаю SIGSEGV: Ошибка сегментации после 287481 вставки в этой строке:

0   ??  /lib/x86_64-linux-gnu/libc.so.6     0x7ffff6086341
1   rocksdb::Slice::Slice   slice.h 43  0x40efd5
2   main    main.cpp    75  0x40e857

вот код:

int main(int argc, char *argv[]) {
rocksdb::DB *db;
rocksdb::Options options;
options.create_if_missing=true;
rocksdb::Status status = rocksdb::DB::Open(options,"/tmp/testdb1",&db);
assert(status.ok());
for (long var = 0; var < 100000000L; ++var) {
db->Put(rocksdb::WriteOptions(),""+var,"v"+var);
qDebug()<<var;
}
}

Спасибо за вашу помощь.

-1

Решение

Вы не должны добавлять «k» (const char *) и var (long). Пожалуйста, сконструируйте строку следующим образом:

ключ std :: string («k» + std :: to_string (var));

И то же самое для ценности.

1

Другие решения


По вопросам рекламы [email protected]