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