summaryrefslogtreecommitdiff
path: root/src/mongo/db/collection_index_usage_tracker.cpp
diff options
context:
space:
mode:
authorsamontea <merciers.merciers@gmail.com>2019-07-11 11:28:07 -0400
committersamontea <merciers.merciers@gmail.com>2019-07-12 11:53:57 -0400
commita8a8fabb17e9700aab633a67b24fe6147290bb92 (patch)
tree6c3f617f3afad7e2363af59607de3e56146dcc8c /src/mongo/db/collection_index_usage_tracker.cpp
parenta4b8e4e0549ebfffebb545459d34ee4faa4f1521 (diff)
downloadmongo-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.cpp26
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