MySQL 26.7.0
Source Code Documentation
statistics_monitor.h
Go to the documentation of this file.
1// Copyright (c) 2026, Oracle and/or its affiliates.
2//
3// This program is free software; you can redistribute it and/or modify
4// it under the terms of the GNU General Public License, version 2.0,
5// as published by the Free Software Foundation.
6//
7// This program is designed to work with certain software (including
8// but not limited to OpenSSL) that is licensed under separate terms,
9// as designated in a particular file or component or in included license
10// documentation. The authors of MySQL hereby grant you an additional
11// permission to link the program and your derivative works with the
12// separately licensed software that they have either included with
13// the program or referenced in the documentation.
14//
15// This program is distributed in the hope that it will be useful,
16// but WITHOUT ANY WARRANTY; without even the implied warranty of
17// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18// GNU General Public License, version 2.0, for more details.
19//
20// You should have received a copy of the GNU General Public License
21// along with this program; if not, write to the Free Software
22// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
23
24#ifndef MYSQL_SCHEDULER_STATISTICS_MONITOR_H
25#define MYSQL_SCHEDULER_STATISTICS_MONITOR_H
26
27#include <array>
28#include <atomic>
29#include <chrono>
30#include <memory>
31#include <new>
32#include <optional>
33#include <unordered_map>
39
40namespace mysql::scheduler {
41
42/// @brief Singleton Statistics Monitor for all of the registered "instances".
43/// We typically track statistics separately for user-defined channels
45 public:
48
49 static Statistics_instance_monitor &get(std::size_t instance_id);
50 static void clear(std::size_t instance_id);
51
52 protected:
53 /// @brief This initialization function is called by "get" if needed
54 static void init();
55 Statistics_monitor() = default;
57 std::unique_ptr<Statistics_instance_monitor>;
59 std::array<Statistics_instance_monitor, Constants::max_instances>;
60 static Instances_map &instances();
61 static std::atomic<bool> m_init;
62 static std::atomic<bool> m_ready;
63};
64
65} // namespace mysql::scheduler
66
67#endif // MYSQL_SCHEDULER_STATISTICS_MONITOR_H
MySQL wrapper for a mutex, template which may be specialized with a specific implementation of a mute...
Definition: mutex_wrapper.h:38
CSA statistics monitor, gathers statistics coming from different CSA threads Each statistic is a pair...
Definition: statistics_instance_monitor.h:54
Singleton Statistics Monitor for all of the registered "instances".
Definition: statistics_monitor.h:44
static Statistics_instance_monitor & get(std::size_t instance_id)
Definition: statistics_monitor.cpp:35
static std::atomic< bool > m_ready
Definition: statistics_monitor.h:62
std::unique_ptr< Statistics_instance_monitor > Statistics_instance_monitor_ptr
Definition: statistics_monitor.h:57
static void clear(std::size_t instance_id)
Definition: statistics_monitor.cpp:47
static void init()
This initialization function is called by "get" if needed.
Definition: statistics_monitor.cpp:55
static Instances_map & instances()
Definition: statistics_monitor.cpp:57
std::array< Statistics_instance_monitor, Constants::max_instances > Instances_map
Definition: statistics_monitor.h:59
static std::atomic< bool > m_init
Definition: statistics_monitor.h:61
concurrency::Mutex_key Mutex_key
Definition: statistics_monitor.h:47
Mutex_wrapper Mutex
Definition: mutex_srv.h:40
PSI_mutex_key Mutex_key
Definition: mutex_srv.h:41
Definition: base_dependency_tracker.h:41