Implement bulkInsert for rocksdb
Former-commit-id: e9abae77d6ae18e21d7dac0cbdd563f572ac3d03
This commit is contained in:
parent
c0c3d7542f
commit
e2000a6d3d
@ -38,6 +38,17 @@ void RocksDBStorageProvider::insert(const char *key, size_t cchKey, void *data,
|
|||||||
++m_count;
|
++m_count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RocksDBStorageProvider::bulkInsert(sds *rgkeys, sds *rgvals, size_t celem)
|
||||||
|
{
|
||||||
|
auto spbatch = std::make_unique<rocksdb::WriteBatch>();
|
||||||
|
for (size_t ielem = 0; ielem < celem; ++ielem) {
|
||||||
|
spbatch->Put(m_spcolfamily.get(), rocksdb::Slice(rgkeys[ielem], sdslen(rgkeys[ielem])), rocksdb::Slice(rgvals[ielem], sdslen(rgvals[ielem])));
|
||||||
|
}
|
||||||
|
m_spdb->Write(WriteOptions(), spbatch.get());
|
||||||
|
std::unique_lock<fastlock> l(m_lock);
|
||||||
|
m_count += celem;
|
||||||
|
}
|
||||||
|
|
||||||
bool RocksDBStorageProvider::erase(const char *key, size_t cchKey)
|
bool RocksDBStorageProvider::erase(const char *key, size_t cchKey)
|
||||||
{
|
{
|
||||||
rocksdb::Status status;
|
rocksdb::Status status;
|
||||||
|
@ -34,6 +34,8 @@ public:
|
|||||||
virtual void beginWriteBatch() override;
|
virtual void beginWriteBatch() override;
|
||||||
virtual void endWriteBatch() override;
|
virtual void endWriteBatch() override;
|
||||||
|
|
||||||
|
virtual void bulkInsert(sds *rgkeys, sds *rgvals, size_t celem) override;
|
||||||
|
|
||||||
virtual void batch_lock() override;
|
virtual void batch_lock() override;
|
||||||
virtual void batch_unlock() override;
|
virtual void batch_unlock() override;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user