diff options
author | samontea <merciers.merciers@gmail.com> | 2019-07-11 11:28:07 -0400 |
---|---|---|
committer | samontea <merciers.merciers@gmail.com> | 2019-07-12 11:53:57 -0400 |
commit | a8a8fabb17e9700aab633a67b24fe6147290bb92 (patch) | |
tree | 6c3f617f3afad7e2363af59607de3e56146dcc8c /src/mongo/db/collection_index_usage_tracker.cpp | |
parent | a4b8e4e0549ebfffebb545459d34ee4faa4f1521 (diff) | |
download | mongo-a8a8fabb17e9700aab633a67b24fe6147290bb92.tar.gz |
SERVER-40755 Expose statistics which indicate how many collection scans have executed
Diffstat (limited to 'src/mongo/db/collection_index_usage_tracker.cpp')
-rw-r--r-- | src/mongo/db/collection_index_usage_tracker.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/mongo/db/collection_index_usage_tracker.cpp b/src/mongo/db/collection_index_usage_tracker.cpp index dc0941ff4c8..3f78b3c406a 100644 --- a/src/mongo/db/collection_index_usage_tracker.cpp +++ b/src/mongo/db/collection_index_usage_tracker.cpp @@ -31,12 +31,23 @@ #include "mongo/platform/basic.h" +#include "mongo/base/counter.h" #include "mongo/db/collection_index_usage_tracker.h" +#include "mongo/db/commands/server_status_metric.h" #include "mongo/util/assert_util.h" #include "mongo/util/clock_source.h" #include "mongo/util/log.h" namespace mongo { +namespace { +Counter64 collectionScansCounter; +Counter64 collectionScansNonTailableCounter; + +ServerStatusMetricField<Counter64> displayCollectionScans("queryExecutor.collectionScans.total", + &collectionScansCounter); +ServerStatusMetricField<Counter64> displayCollectionScansNonTailable( + "queryExecutor.collectionScans.nonTailable", &collectionScansNonTailableCounter); +} CollectionIndexUsageTracker::CollectionIndexUsageTracker(ClockSource* clockSource) : _clockSource(clockSource) { @@ -50,6 +61,17 @@ void CollectionIndexUsageTracker::recordIndexAccess(StringData indexName) { _indexUsageMap[indexName].accesses.fetchAndAdd(1); } +void CollectionIndexUsageTracker::recordCollectionScans(unsigned long long collectionScans) { + _collectionScans.fetchAndAdd(collectionScans); + collectionScansCounter.increment(collectionScans); +} + +void CollectionIndexUsageTracker::recordCollectionScansNonTailable( + unsigned long long collectionScansNonTailable) { + _collectionScansNonTailable.fetchAndAdd(collectionScansNonTailable); + collectionScansNonTailableCounter.increment(collectionScansNonTailable); +} + void CollectionIndexUsageTracker::registerIndex(StringData indexName, const BSONObj& indexKey) { invariant(!indexName.empty()); dassert(_indexUsageMap.find(indexName) == _indexUsageMap.end()); @@ -68,4 +90,8 @@ CollectionIndexUsageMap CollectionIndexUsageTracker::getUsageStats() const { return _indexUsageMap; } +CollectionIndexUsageTracker::CollectionScanStats +CollectionIndexUsageTracker::getCollectionScanStats() const { + return {_collectionScans.load(), _collectionScansNonTailable.load()}; +} } // namespace mongo |