From a3f88918c91e6a765dd735d88ec0f03bfe5face4 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Piotr=20Da=C5=82ek?= Date: Fri, 23 Oct 2015 15:44:47 +0200 Subject: [PATCH] os/DBObjectMap: use single-key LevelDB::get method MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Make FileStore use single-key ::get() method for some performance increase in k/v-heavy workloads. Signed-off-by: Piotr Dałek --- src/os/DBObjectMap.cc | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/os/DBObjectMap.cc b/src/os/DBObjectMap.cc index 3a878ccb569..08593044b05 100644 --- a/src/os/DBObjectMap.cc +++ b/src/os/DBObjectMap.cc @@ -1089,17 +1089,16 @@ DBObjectMap::Header DBObjectMap::_lookup_map_header( } } - map out; - set to_get; - to_get.insert(map_header_key(oid)); - int r = db->get(HOBJECT_TO_SEQ, to_get, &out); - if (r < 0 || out.empty()) { + bufferlist out; + int r = db->get(HOBJECT_TO_SEQ, map_header_key(oid), &out); + if (r < 0 || out.length()==0) { delete header; return Header(); } Header ret(header, RemoveOnDelete(this)); - bufferlist::iterator iter = out.begin()->second.begin(); + bufferlist::iterator iter = out.begin(); + ret->decode(iter); { Mutex::Locker l(cache_lock); -- 2.47.3