summaryrefslogtreecommitdiff
path: root/src/mongo/db/storage/wiredtiger/wiredtiger_size_storer.cpp
diff options
context:
space:
mode:
authorLouis Williams <louis.williams@mongodb.com>2019-09-26 23:26:51 +0000
committerevergreen <evergreen@mongodb.com>2019-09-26 23:26:51 +0000
commitba9670e4c6d3aa62db20501317457af99049570c (patch)
treec88fc0ba4f1c369006a111a6e0fd5f61d6381e25 /src/mongo/db/storage/wiredtiger/wiredtiger_size_storer.cpp
parent5a0e08e83231cfa07aa1d00098d0712f3c2f8ab7 (diff)
downloadmongo-ba9670e4c6d3aa62db20501317457af99049570c.tar.gz
SERVER-25025 Make startup faster with many WT collections
This makes two major improvements: (1) WiredTiger "metadata:create" cursors are very expensive; only use these when absolutely necessary, and use standard "metadata:" cursors everywhere else. This lowers startup calls to "metadata:create" from 3 to 1 per table. (2) No longer open a cursor for every WiredTiger collection at startup. Instead, lazily open cursors to initialize RecordIDs for inserts.
Diffstat (limited to 'src/mongo/db/storage/wiredtiger/wiredtiger_size_storer.cpp')
-rw-r--r--src/mongo/db/storage/wiredtiger/wiredtiger_size_storer.cpp6
1 files changed, 2 insertions, 4 deletions
diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_size_storer.cpp b/src/mongo/db/storage/wiredtiger/wiredtiger_size_storer.cpp
index 76ddde766e0..e0847eb0444 100644
--- a/src/mongo/db/storage/wiredtiger/wiredtiger_size_storer.cpp
+++ b/src/mongo/db/storage/wiredtiger/wiredtiger_size_storer.cpp
@@ -116,10 +116,8 @@ std::shared_ptr<WiredTigerSizeStorer::SizeInfo> WiredTigerSizeStorer::load(Strin
BSONObj data(reinterpret_cast<const char*>(value.data));
LOG(2) << "WiredTigerSizeStorer::load " << uri << " -> " << redact(data);
- auto result = std::make_shared<SizeInfo>();
- result->numRecords.store(data["numRecords"].safeNumberLong());
- result->dataSize.store(data["dataSize"].safeNumberLong());
- return result;
+ return std::make_shared<SizeInfo>(data["numRecords"].safeNumberLong(),
+ data["dataSize"].safeNumberLong());
}
void WiredTigerSizeStorer::flush(bool syncToDisk) {