diff options
author | Louis Williams <louis.williams@mongodb.com> | 2019-09-26 23:26:51 +0000 |
---|---|---|
committer | evergreen <evergreen@mongodb.com> | 2019-09-26 23:26:51 +0000 |
commit | ba9670e4c6d3aa62db20501317457af99049570c (patch) | |
tree | c88fc0ba4f1c369006a111a6e0fd5f61d6381e25 /src/mongo/db/storage/wiredtiger/wiredtiger_size_storer.cpp | |
parent | 5a0e08e83231cfa07aa1d00098d0712f3c2f8ab7 (diff) | |
download | mongo-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.cpp | 6 |
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) { |