155 InstanceStatisticsNonatomic() =
default;
157 template <
typename Statistics>
158 InstanceStatisticsNonatomic(
const Statistics& stats) {
165 const InstanceStatistics& stats,
166 const decltype(InstanceStatistics::topology)& topology_stats
168 connection.open_total = stats.connection.open_total.Load();
169 connection.drop_total = stats.connection.drop_total.Load();
170 connection.active = stats.connection.active;
171 connection.used = stats.connection.used;
172 connection.maximum = stats.connection.maximum;
173 connection.waiting = stats.connection.waiting;
174 connection.error_total = stats.connection.error_total.Load();
175 connection.error_timeout = stats.connection.error_timeout.Load();
176 connection.rate_limit_throttled = stats.connection.rate_limit_throttled.Load();
178 connection.max_queue_size = stats.connection.max_queue_size;
180 transaction.total = stats.transaction.total.Load();
181 transaction.commit_total = stats.transaction.commit_total.Load();
182 transaction.rollback_total = stats.transaction.rollback_total.Load();
183 transaction.out_of_trx_total = stats.transaction.out_of_trx_total.Load();
184 transaction.parse_total = stats.transaction.parse_total.Load();
185 transaction.execute_total = stats.transaction.execute_total.Load();
186 transaction.reply_total = stats.transaction.reply_total.Load();
187 transaction.portal_bind_total = stats.transaction.portal_bind_total.Load();
188 transaction.error_execute_total = stats.transaction.error_execute_total.Load();
189 transaction.execute_timeout = stats.transaction.execute_timeout.Load();
190 transaction.duplicate_prepared_statements = stats.transaction.duplicate_prepared_statements.Load();
193 transaction.wait_start_percentile = stats.transaction.wait_start_percentile
.GetStatsForPeriod();
195 transaction.return_to_pool_percentile = stats.transaction.return_to_pool_percentile
.GetStatsForPeriod();
200 pool_exhaust_errors = stats.pool_exhaust_errors.Load();
201 queue_size_errors = stats.queue_size_errors.Load();
209 for (
const auto& [statement_name, statement_stats] : stats) {
210 const auto [it, inserted] = per_statement_stats.try_emplace(statement_name, statement_stats);
212 it->second.Add(statement_stats);
219 std::unordered_map<std::string, StatementStatistics> per_statement_stats;