MySQL 9.0.0
Source Code Documentation
pfs_server.h
Go to the documentation of this file.
1/* Copyright (c) 2008, 2024, 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 PFS_SERVER_H
25#define PFS_SERVER_H
26
27/**
28 @file storage/perfschema/pfs_server.h
29 Private interface for the server (declarations).
30*/
31
32#include <sys/types.h>
33
34#include "my_psi_config.h"
35#include "mysql/psi/psi_cond.h"
37#include "mysql/psi/psi_error.h"
38#include "mysql/psi/psi_file.h"
39#include "mysql/psi/psi_idle.h"
40#include "mysql/psi/psi_mdl.h"
43#include "mysql/psi/psi_mutex.h"
46#include "mysql/psi/psi_stage.h"
49#include "mysql/psi/psi_table.h"
53
54#ifdef HAVE_PSI_INTERFACE
55
56#define PFS_AUTOSCALE_VALUE (-1)
57#define PFS_AUTOSIZE_VALUE (-1)
58
59#ifndef PFS_MAX_MUTEX_CLASS
60#define PFS_MAX_MUTEX_CLASS 350
61#endif
62#ifndef PFS_MAX_RWLOCK_CLASS
63#define PFS_MAX_RWLOCK_CLASS 100
64#endif
65#ifndef PFS_MAX_COND_CLASS
66#define PFS_MAX_COND_CLASS 150
67#endif
68#ifndef PFS_MAX_THREAD_CLASS
69#define PFS_MAX_THREAD_CLASS 100
70#endif
71#ifndef PFS_MAX_FILE_CLASS
72#define PFS_MAX_FILE_CLASS 80
73#endif
74#ifndef PFS_MAX_FILE_HANDLE
75#define PFS_MAX_FILE_HANDLE 32768
76#endif
77#ifndef PFS_MAX_SOCKET_CLASS
78#define PFS_MAX_SOCKET_CLASS 10
79#endif
80#ifndef PFS_MAX_STAGE_CLASS
81#define PFS_MAX_STAGE_CLASS 175
82#endif
83#ifndef PFS_STATEMENTS_STACK_SIZE
84#define PFS_STATEMENTS_STACK_SIZE 10
85#endif
86#ifndef PFS_MAX_MEMORY_CLASS
87#define PFS_MAX_MEMORY_CLASS 470
88#endif
89#ifndef PFS_MAX_METER_CLASS
90#define PFS_MAX_METER_CLASS 30
91#endif
92#ifndef PFS_MAX_METRIC_CLASS
93#define PFS_MAX_METRIC_CLASS 600
94#endif
95
96#ifndef PFS_MAX_GLOBAL_SERVER_ERRORS
97#define PFS_MAX_GLOBAL_SERVER_ERRORS \
98 (1 + pfs_session_error_stat_count + pfs_global_error_stat_count)
99#endif
100
101#ifndef PFS_MAX_SESSION_SERVER_ERRORS
102#define PFS_MAX_SESSION_SERVER_ERRORS (1 + pfs_session_error_stat_count)
103#endif
104
105/** Sizing hints, from the server configuration. */
107 /** Value of @c Sys_table_def_size */
109 /** Value of @c Sys_table_cache_size */
111 /** Value of @c Sys_max_connections */
113 /** Value of @c Sys_open_files_limit */
115 /** Value of @c Sys_max_prepared_stmt_count */
117};
118
119/** Performance schema global sizing parameters. */
121 /** True if the performance schema is enabled. */
123 /** Default values for SETUP_CONSUMERS. */
140
141 /** True if SHOW PROCESSLIST is enabeld in the performance schema. */
143
144 /** Default instrument configuration option. */
146
147 /**
148 Maximum number of instrumented mutex classes.
149 @sa mutex_class_lost.
150 */
152 /**
153 Maximum number of instrumented rwlock classes.
154 @sa rwlock_class_lost.
155 */
157 /**
158 Maximum number of instrumented cond classes.
159 @sa cond_class_lost.
160 */
162 /**
163 Maximum number of instrumented thread classes.
164 @sa thread_class_lost.
165 */
167 /**
168 Maximum number of instrumented table share.
169 @sa table_share_lost.
170 */
172 /**
173 Maximum number of lock statistics collected for tables.
174 @sa table_lock_stat_lost.
175 */
177 /**
178 Maximum number of index statistics collected for tables.
179 @sa table_index_lost.
180 */
182 /**
183 Maximum number of instrumented file classes.
184 @sa file_class_lost.
185 */
187 /**
188 Maximum number of instrumented mutex instances.
189 @sa mutex_lost.
190 */
192 /**
193 Maximum number of instrumented rwlock instances.
194 @sa rwlock_lost.
195 */
197 /**
198 Maximum number of instrumented cond instances.
199 @sa cond_lost.
200 */
202 /**
203 Maximum number of instrumented thread instances.
204 @sa thread_lost.
205 */
207 /**
208 Maximum number of instrumented table handles.
209 @sa table_lost.
210 */
212 /**
213 Maximum number of instrumented file instances.
214 @sa file_lost.
215 */
217 /**
218 Maximum number of instrumented file handles.
219 @sa file_handle_lost.
220 */
222 /**
223 Maximum number of instrumented socket instances
224 @sa socket_lost
225 */
227 /**
228 Maximum number of instrumented socket classes.
229 @sa socket_class_lost.
230 */
232 /** Maximum number of rows per thread in table EVENTS_WAITS_HISTORY. */
234 /** Maximum number of rows in table EVENTS_WAITS_HISTORY_LONG. */
236 /** Maximum number of rows in table SETUP_ACTORS. */
238 /** Maximum number of rows in table SETUP_OBJECTS. */
240 /** Maximum number of rows in table HOSTS. */
242 /** Maximum number of rows in table USERS. */
244 /** Maximum number of rows in table ACCOUNTS. */
246 /**
247 Maximum number of instrumented stage classes.
248 @sa stage_class_lost.
249 */
251 /** Maximum number of rows per thread in table EVENTS_STAGES_HISTORY. */
253 /** Maximum number of rows in table EVENTS_STAGES_HISTORY_LONG. */
255 /**
256 Maximum number of instrumented statement classes.
257 @sa statement_class_lost.
258 */
260 /** Maximum number of rows per thread in table EVENTS_STATEMENTS_HISTORY. */
262 /** Maximum number of rows in table EVENTS_STATEMENTS_HISTORY_LONG. */
264 /** Maximum number of digests to be captured */
266 /** Maximum number of programs to be captured */
268 /** Maximum number of prepared statements to be captured */
270 /** Maximum number of rows per thread in table EVENTS_TRANSACTIONS_HISTORY. */
272 /** Maximum number of rows in table EVENTS_TRANSACTIONS_HISTORY_LONG. */
274
275 /** Maximum number of session attribute strings per thread */
277 /** Maximum size of statement stack */
279
280 /**
281 Maximum number of instrumented memory classes.
282 @sa memory_class_lost.
283 */
285
286 /**
287 Maximum number of instrumented meter classes.
288 @sa meter_class_lost.
289 */
291
292 /**
293 Maximum number of instrumented metric classes.
294 @sa metric_class_lost.
295 */
297
299
302
303 /** Maximum age in seconds for a query sample. */
305
306 /** Maximum number of error instrumented */
308
309 /** Sizing hints, for auto tuning. */
311};
312
313/**
314 Performance schema sizing values for the server.
315 This global variable is set when parsing server startup options.
316*/
318
319/**
320 Null initialization.
321 Disable all instrumentation, size all internal buffers to 0.
322 This pre initialization step is needed to ensure that events can be collected
323 and discarded, until such time @c initialize_performance_schema() is called.
324*/
326
327/**
328 Initialize the performance schema.
329 The performance schema implement several instrumentation services.
330 Each instrumentation service is versioned, and accessible through
331 a bootstrap structure, returned as output parameter.
332 @param param Size parameters to use.
333 @param [out] thread_bootstrap Thread instrumentation service bootstrap
334 @param [out] mutex_bootstrap Mutex instrumentation service bootstrap
335 @param [out] rwlock_bootstrap Rwlock instrumentation service bootstrap
336 @param [out] cond_bootstrap Condition instrumentation service bootstrap
337 @param [out] file_bootstrap File instrumentation service bootstrap
338 @param [out] socket_bootstrap Socket instrumentation service bootstrap
339 @param [out] table_bootstrap Table instrumentation service bootstrap
340 @param [out] mdl_bootstrap Metadata Lock instrumentation service bootstrap
341 @param [out] idle_bootstrap Idle instrumentation service bootstrap
342 @param [out] stage_bootstrap Stage instrumentation service bootstrap
343 @param [out] statement_bootstrap Statement instrumentation service bootstrap
344 @param [out] transaction_bootstrap Transaction instrumentation service
345 bootstrap
346 @param [out] memory_bootstrap Memory instrumentation service bootstrap
347 @param [out] error_bootstrap Error instrumentation service bootstrap
348 @param [out] data_lock_bootstrap Data Lock instrumentation service bootstrap
349 @param [out] system_bootstrap System instrumentation service bootstrap
350 @param [out] tls_channel_bootstrap TLS channel instrumentation service
351 bootstrap
352 @param [out] metric_bootstrap Telemetry metrics instrumentation service
353 bootstrap
354 @retval 0 success
355*/
357 PFS_global_param *param, PSI_thread_bootstrap **thread_bootstrap,
358 PSI_mutex_bootstrap **mutex_bootstrap,
359 PSI_rwlock_bootstrap **rwlock_bootstrap,
360 PSI_cond_bootstrap **cond_bootstrap, PSI_file_bootstrap **file_bootstrap,
361 PSI_socket_bootstrap **socket_bootstrap,
362 PSI_table_bootstrap **table_bootstrap, PSI_mdl_bootstrap **mdl_bootstrap,
363 PSI_idle_bootstrap **idle_bootstrap, PSI_stage_bootstrap **stage_bootstrap,
364 PSI_statement_bootstrap **statement_bootstrap,
365 PSI_transaction_bootstrap **transaction_bootstrap,
366 PSI_memory_bootstrap **memory_bootstrap,
367 PSI_error_bootstrap **error_bootstrap,
368 PSI_data_lock_bootstrap **data_lock_bootstrap,
369 PSI_system_bootstrap **system_bootstrap,
370 PSI_tls_channel_bootstrap **tls_channel_bootstrap,
371 PSI_metric_bootstrap **metric_bootstrap);
372
374
375/**
376 Initialize the performance schema ACL.
377 ACL is strictly enforced when the server is running in normal mode,
378 to enforce that only legal operations are allowed.
379 When running in bootstrap mode, ACL restrictions are relaxed,
380 to allow the bootstrap scripts to DROP / CREATE performance schema tables.
381 @sa ACL_internal_schema_registry
382 @param bootstrap True if the server is starting in bootstrap mode.
383*/
385
386/**
387 Reset the aggregated status counter stats.
388*/
390
391/**
392 Initialize the dynamic array holding individual instrument settings collected
393 from the server configuration options.
394*/
396
397/**
398 Process one PFS_INSTRUMENT configuration string.
399*/
400int add_pfs_instr_to_array(const char *name, const char *value);
401
402/**
403 Shutdown the performance schema.
404*/
406
407#endif /* HAVE_PSI_INTERFACE */
408
409#endif /* PFS_SERVER_H */
void initialize_performance_schema_acl(bool bootstrap)
Initialize the performance schema ACL.
Definition: pfs_engine_table.cc:1004
Defines various enable/disable and HAVE_ macros related to the performance schema instrumentation sys...
Definition: bootstrap.cc:71
void reset_pfs_status_stats()
Reset the aggregated status counter stats.
Definition: pfs_variable.cc:1540
void shutdown_performance_schema()
Shutdown the performance schema.
Definition: pfs_server.cc:387
int initialize_performance_schema(PFS_global_param *param, PSI_thread_bootstrap **thread_bootstrap, PSI_mutex_bootstrap **mutex_bootstrap, PSI_rwlock_bootstrap **rwlock_bootstrap, PSI_cond_bootstrap **cond_bootstrap, PSI_file_bootstrap **file_bootstrap, PSI_socket_bootstrap **socket_bootstrap, PSI_table_bootstrap **table_bootstrap, PSI_mdl_bootstrap **mdl_bootstrap, PSI_idle_bootstrap **idle_bootstrap, PSI_stage_bootstrap **stage_bootstrap, PSI_statement_bootstrap **statement_bootstrap, PSI_transaction_bootstrap **transaction_bootstrap, PSI_memory_bootstrap **memory_bootstrap, PSI_error_bootstrap **error_bootstrap, PSI_data_lock_bootstrap **data_lock_bootstrap, PSI_system_bootstrap **system_bootstrap, PSI_tls_channel_bootstrap **tls_channel_bootstrap, PSI_metric_bootstrap **metric_bootstrap)
Initialize the performance schema.
Definition: pfs_server.cc:96
void init_pfs_instrument_array()
Initialize the dynamic array holding individual instrument settings collected from the server configu...
Definition: pfs_server.cc:422
void pfs_automated_sizing(PFS_global_param *param)
Definition: pfs_autosize.cc:159
void pre_initialize_performance_schema()
Null initialization.
Definition: pfs_server.cc:73
int add_pfs_instr_to_array(const char *name, const char *value)
Process one PFS_INSTRUMENT configuration string.
Definition: pfs_server.cc:447
PFS_global_param pfs_param
Performance schema sizing values for the server.
Definition: pfs_server.cc:66
Performance schema instrumentation interface.
Performance schema instrumentation interface.
Performance schema instrumentation interface.
Performance schema instrumentation interface.
Performance schema instrumentation interface.
Performance schema instrumentation interface.
Performance schema instrumentation interface.
Performance schema instrumentation interface.
Performance schema instrumentation interface.
Performance schema instrumentation interface.
Performance schema instrumentation interface.
Performance schema instrumentation interface.
Performance schema instrumentation interface.
Performance schema instrumentation interface.
Performance schema instrumentation interface.
Performance schema instrumentation interface.
Performance schema instrumentation interface.
Performance schema instrumentation interface.
case opt name
Definition: sslopt-case.h:29
Performance schema global sizing parameters.
Definition: pfs_server.h:120
long m_events_stages_history_long_sizing
Maximum number of rows in table EVENTS_STAGES_HISTORY_LONG.
Definition: pfs_server.h:254
ulong m_memory_class_sizing
Maximum number of instrumented memory classes.
Definition: pfs_server.h:284
long m_socket_sizing
Maximum number of instrumented socket instances.
Definition: pfs_server.h:226
long m_session_connect_attrs_sizing
Maximum number of session attribute strings per thread.
Definition: pfs_server.h:276
ulong m_metric_class_sizing
Maximum number of instrumented metric classes.
Definition: pfs_server.h:296
long m_events_transactions_history_long_sizing
Maximum number of rows in table EVENTS_TRANSACTIONS_HISTORY_LONG.
Definition: pfs_server.h:273
bool m_consumer_events_stages_history_enabled
Definition: pfs_server.h:125
ulong m_max_digest_sample_age
Maximum age in seconds for a query sample.
Definition: pfs_server.h:304
long m_account_sizing
Maximum number of rows in table ACCOUNTS.
Definition: pfs_server.h:245
long m_user_sizing
Maximum number of rows in table USERS.
Definition: pfs_server.h:243
long m_events_waits_history_long_sizing
Maximum number of rows in table EVENTS_WAITS_HISTORY_LONG.
Definition: pfs_server.h:235
long m_index_stat_sizing
Maximum number of index statistics collected for tables.
Definition: pfs_server.h:181
long m_prepared_stmt_sizing
Maximum number of prepared statements to be captured.
Definition: pfs_server.h:269
bool m_consumer_events_transactions_history_enabled
Definition: pfs_server.h:132
bool m_consumer_thread_instrumentation_enabled
Definition: pfs_server.h:138
long m_events_stages_history_sizing
Maximum number of rows per thread in table EVENTS_STAGES_HISTORY.
Definition: pfs_server.h:252
bool m_consumer_events_statements_history_enabled
Definition: pfs_server.h:129
bool m_consumer_events_stages_current_enabled
Default values for SETUP_CONSUMERS.
Definition: pfs_server.h:124
bool m_consumer_events_waits_current_enabled
Definition: pfs_server.h:134
long m_table_share_sizing
Maximum number of instrumented table share.
Definition: pfs_server.h:171
long m_digest_sizing
Maximum number of digests to be captured.
Definition: pfs_server.h:265
bool m_consumer_events_statements_current_enabled
Definition: pfs_server.h:128
ulong m_mutex_class_sizing
Maximum number of instrumented mutex classes.
Definition: pfs_server.h:151
long m_program_sizing
Maximum number of programs to be captured.
Definition: pfs_server.h:267
bool m_consumer_events_transactions_history_long_enabled
Definition: pfs_server.h:133
ulong m_meter_class_sizing
Maximum number of instrumented meter classes.
Definition: pfs_server.h:290
bool m_consumer_events_stages_history_long_enabled
Definition: pfs_server.h:126
long m_file_sizing
Maximum number of instrumented file instances.
Definition: pfs_server.h:216
long m_events_statements_history_long_sizing
Maximum number of rows in table EVENTS_STATEMENTS_HISTORY_LONG.
Definition: pfs_server.h:263
ulong m_socket_class_sizing
Maximum number of instrumented socket classes.
Definition: pfs_server.h:231
long m_rwlock_sizing
Maximum number of instrumented rwlock instances.
Definition: pfs_server.h:196
bool m_consumer_events_statements_history_long_enabled
Definition: pfs_server.h:130
long m_file_handle_sizing
Maximum number of instrumented file handles.
Definition: pfs_server.h:221
bool m_enabled
True if the performance schema is enabled.
Definition: pfs_server.h:122
ulong m_file_class_sizing
Maximum number of instrumented file classes.
Definition: pfs_server.h:186
long m_metadata_lock_sizing
Definition: pfs_server.h:298
long m_setup_object_sizing
Maximum number of rows in table SETUP_OBJECTS.
Definition: pfs_server.h:239
ulong m_rwlock_class_sizing
Maximum number of instrumented rwlock classes.
Definition: pfs_server.h:156
long m_events_waits_history_sizing
Maximum number of rows per thread in table EVENTS_WAITS_HISTORY.
Definition: pfs_server.h:233
ulong m_max_sql_text_length
Definition: pfs_server.h:301
long m_events_transactions_history_sizing
Maximum number of rows per thread in table EVENTS_TRANSACTIONS_HISTORY.
Definition: pfs_server.h:271
bool m_consumer_events_waits_history_long_enabled
Definition: pfs_server.h:136
bool m_consumer_events_statements_cpu_enabled
Definition: pfs_server.h:127
long m_cond_sizing
Maximum number of instrumented cond instances.
Definition: pfs_server.h:201
long m_max_digest_length
Definition: pfs_server.h:300
PFS_sizing_hints m_hints
Sizing hints, for auto tuning.
Definition: pfs_server.h:310
ulong m_thread_class_sizing
Maximum number of instrumented thread classes.
Definition: pfs_server.h:166
ulong m_error_sizing
Maximum number of error instrumented.
Definition: pfs_server.h:307
ulong m_statement_class_sizing
Maximum number of instrumented statement classes.
Definition: pfs_server.h:259
long m_mutex_sizing
Maximum number of instrumented mutex instances.
Definition: pfs_server.h:191
bool m_consumer_events_waits_history_enabled
Definition: pfs_server.h:135
ulong m_statement_stack_sizing
Maximum size of statement stack.
Definition: pfs_server.h:278
bool m_processlist_enabled
True if SHOW PROCESSLIST is enabeld in the performance schema.
Definition: pfs_server.h:142
char * m_pfs_instrument
Default instrument configuration option.
Definition: pfs_server.h:145
long m_setup_actor_sizing
Maximum number of rows in table SETUP_ACTORS.
Definition: pfs_server.h:237
long m_events_statements_history_sizing
Maximum number of rows per thread in table EVENTS_STATEMENTS_HISTORY.
Definition: pfs_server.h:261
long m_table_lock_stat_sizing
Maximum number of lock statistics collected for tables.
Definition: pfs_server.h:176
long m_thread_sizing
Maximum number of instrumented thread instances.
Definition: pfs_server.h:206
long m_host_sizing
Maximum number of rows in table HOSTS.
Definition: pfs_server.h:241
ulong m_stage_class_sizing
Maximum number of instrumented stage classes.
Definition: pfs_server.h:250
long m_table_sizing
Maximum number of instrumented table handles.
Definition: pfs_server.h:211
bool m_consumer_global_instrumentation_enabled
Definition: pfs_server.h:137
bool m_consumer_events_transactions_current_enabled
Definition: pfs_server.h:131
ulong m_cond_class_sizing
Maximum number of instrumented cond classes.
Definition: pfs_server.h:161
bool m_consumer_statement_digest_enabled
Definition: pfs_server.h:139
Sizing hints, from the server configuration.
Definition: pfs_server.h:106
ulong m_table_definition_cache
Value of Sys_table_def_size.
Definition: pfs_server.h:108
ulong m_max_connections
Value of Sys_max_connections.
Definition: pfs_server.h:112
ulong m_table_open_cache
Value of Sys_table_cache_size.
Definition: pfs_server.h:110
long m_max_prepared_stmt_count
Value of Sys_max_prepared_stmt_count.
Definition: pfs_server.h:116
long m_open_files_limit
Value of Sys_open_files_limit.
Definition: pfs_server.h:114
Entry point for the performance schema interface.
Definition: psi_cond.h:46
Entry point for the performance schema interface.
Definition: psi_data_lock.h:82
Entry point for the performance schema interface.
Definition: psi_error.h:59
Entry point for the performance schema interface.
Definition: psi_file.h:66
Entry point for the performance schema interface.
Definition: psi_idle.h:60
Entry point for the performance schema interface.
Definition: psi_mdl.h:68
Entry point for the performance schema interface.
Definition: psi_memory.h:85
Entry point for the performance schema interface.
Definition: psi_metric.h:46
Entry point for the performance schema interface.
Definition: psi_mutex.h:46
Entry point for the performance schema interface.
Definition: psi_rwlock.h:53
Entry point for the performance schema interface.
Definition: psi_socket.h:52
Entry point for the performance schema interface.
Definition: psi_stage.h:46
Entry point for the performance schema interface.
Definition: psi_statement.h:46
Entry point for the performance schema interface.
Definition: psi_system.h:60
Entry point for the performance schema interface.
Definition: psi_table.h:60
Entry point for the performance schema interface.
Definition: psi_thread.h:102
Entry point for the performance schema interface.
Definition: psi_tls_channel.h:46
Entry point for the performance schema interface.
Definition: psi_transaction.h:60