![]()  | 
  
    MySQL 9.5.0
    
   Source Code Documentation 
   | 
 
Performance schema instruments metadata (declarations). More...
#include "my_config.h"#include <assert.h>#include <sys/types.h>#include <atomic>#include "lf.h"#include "my_compiler.h"#include "my_inttypes.h"#include "mysql/components/services/bits/psi_metric_bits.h"#include "mysql/components/services/bits/server_telemetry_logs_client_bits.h"#include "mysql_com.h"#include "mysqld_error.h"#include "prealloced_array.h"#include "storage/perfschema/pfs_column_types.h"#include "storage/perfschema/pfs_global.h"#include "storage/perfschema/pfs_lock.h"#include "storage/perfschema/pfs_name.h"#include "storage/perfschema/pfs_stat.h"#include "storage/perfschema/terminology_use_previous_enum.h"Go to the source code of this file.
Classes | |
| struct | PFS_instr_config | 
| User-defined instrument configuration.  More... | |
| struct | PFS_meter_config | 
| User-defined meter configuration.  More... | |
| struct | PFS_logger_config | 
| User-defined logger configuration.  More... | |
| class | PFS_instr_name | 
| Encapsulates the name of an instrumented entity.  More... | |
| struct | PFS_instr_class | 
| Information for all instrumentation.  More... | |
| struct | PFS_mutex_class | 
| Instrumentation metadata for a mutex.  More... | |
| struct | PFS_rwlock_class | 
| Instrumentation metadata for a read write lock.  More... | |
| struct | PFS_cond_class | 
| Instrumentation metadata for a condition.  More... | |
| struct | PFS_thread_class | 
| Instrumentation metadata of a thread.  More... | |
| struct | PFS_metric_class | 
| Instrumentation metadata for a metric.  More... | |
| struct | PFS_meter_class | 
| Instrumentation metadata for a meter.  More... | |
| struct | PFS_logger_class | 
| Instrumentation metadata for a telemetry logger.  More... | |
| struct | PFS_table_share_key | 
| Key identifying a table share.  More... | |
| struct | PFS_table_key | 
| Table index or 'key'.  More... | |
| struct | PFS_table_share_index | 
| Index statistics of a table.  More... | |
| struct | PFS_table_share_lock | 
| Lock statistics of a table.  More... | |
| struct | PFS_table_share | 
| Instrumentation metadata for a table share.  More... | |
| struct | PFS_error_class | 
| Instrumentation metadata for an error.  More... | |
| struct | PFS_file_class | 
| Instrumentation metadata for a file.  More... | |
| struct | PFS_stage_class | 
| Instrumentation metadata for a stage.  More... | |
| struct | PFS_statement_class | 
| Instrumentation metadata for a statement.  More... | |
| struct | PFS_transaction_class | 
| Instrumentation metadata for a transaction.  More... | |
| struct | PFS_socket_class | 
| Instrumentation metadata for a socket.  More... | |
| struct | PFS_memory_class | 
| Instrumentation metadata for a memory.  More... | |
Macros | |
| #define | PFS_MAX_INFO_NAME_LENGTH 128 | 
| Maximum length of an instrument name.  More... | |
| #define | PFS_MAX_OS_NAME_LENGTH 16 | 
| Maximum length of the thread os name.  More... | |
| #define | PFS_MAX_FULL_PREFIX_NAME_LENGTH 32 | 
| Maximum length of the 'full' prefix of an instrument name.  More... | |
| #define | PFS_MUTEX_PARTITIONS 2 | 
| #define | GLOBAL_TABLE_IO_EVENT_INDEX 0 | 
| #define | GLOBAL_TABLE_LOCK_EVENT_INDEX 1 | 
| #define | GLOBAL_IDLE_EVENT_INDEX 2 | 
| #define | GLOBAL_METADATA_EVENT_INDEX 3 | 
| #define | COUNT_GLOBAL_EVENT_INDEX 4 | 
| Number of global wait events.  More... | |
| #define | GLOBAL_TRANSACTION_INDEX 0 | 
| Transaction events are not wait events .  More... | |
| #define | GLOBAL_ERROR_INDEX 0 | 
Typedefs | |
| typedef unsigned int | PFS_sync_key | 
| Key, naming a synch instrument (mutex, rwlock, cond).  More... | |
| typedef unsigned int | PFS_thread_key | 
| Key, naming a thread instrument.  More... | |
| typedef unsigned int | PFS_file_key | 
| Key, naming a file instrument.  More... | |
| typedef unsigned int | PFS_stage_key | 
| Key, naming a stage instrument.  More... | |
| typedef unsigned int | PFS_statement_key | 
| Key, naming a statement instrument.  More... | |
| typedef unsigned int | PFS_transaction_key | 
| Key, naming a transaction instrument.  More... | |
| typedef unsigned int | PFS_socket_key | 
| Key, naming a socket instrument.  More... | |
| typedef unsigned int | PFS_memory_key | 
| Key, naming a memory instrument.  More... | |
| typedef unsigned int | PFS_meter_key | 
| Key, naming a meter instrument.  More... | |
| typedef unsigned int | PFS_metric_key | 
| Key, naming a metric instrument.  More... | |
| typedef unsigned int | PFS_logger_key | 
| Key, naming a logger instrument.  More... | |
| typedef Prealloced_array< PFS_instr_config *, 10 > | Pfs_instr_config_array | 
| typedef Prealloced_array< PFS_meter_config *, 10 > | Pfs_meter_config_array | 
| typedef Prealloced_array< PFS_logger_config *, 10 > | Pfs_logger_config_array | 
Enumerations | |
| enum | PFS_class_type {  PFS_CLASS_NONE = 0 , PFS_CLASS_MUTEX = 1 , PFS_CLASS_RWLOCK = 2 , PFS_CLASS_COND = 3 , PFS_CLASS_FILE = 4 , PFS_CLASS_TABLE = 5 , PFS_CLASS_STAGE = 6 , PFS_CLASS_STATEMENT = 7 , PFS_CLASS_TRANSACTION = 8 , PFS_CLASS_SOCKET = 9 , PFS_CLASS_TABLE_IO = 10 , PFS_CLASS_TABLE_LOCK = 11 , PFS_CLASS_IDLE = 12 , PFS_CLASS_MEMORY = 13 , PFS_CLASS_METADATA = 14 , PFS_CLASS_ERROR = 15 , PFS_CLASS_THREAD = 16 , PFS_CLASS_METRIC = 17 , PFS_CLASS_METER = 18 , PFS_CLASS_LOGGER = 19 , PFS_CLASS_LAST = PFS_CLASS_LOGGER , PFS_CLASS_MAX = PFS_CLASS_LAST + 1 }  | 
Functions | |
| uint | sanitize_index_count (uint count) | 
| void | init_event_name_sizing (const PFS_global_param *param) | 
| void | register_global_classes () | 
| int | init_sync_class (uint mutex_class_sizing, uint rwlock_class_sizing, uint cond_class_sizing) | 
| Initialize the instrument synch class buffers.  More... | |
| void | cleanup_sync_class () | 
| Cleanup the instrument synch class buffers.  More... | |
| int | init_thread_class (uint thread_class_sizing) | 
| Initialize the thread class buffer.  More... | |
| void | cleanup_thread_class () | 
| Cleanup the thread class buffers.  More... | |
| int | init_table_share (uint table_share_sizing) | 
| Initialize the table share buffer.  More... | |
| void | cleanup_table_share () | 
| Cleanup the table share buffers.  More... | |
| int | init_table_share_lock_stat (uint table_stat_sizing) | 
| Initialize the table lock stat buffer.  More... | |
| void | cleanup_table_share_lock_stat () | 
| Cleanup the table stat buffers.  More... | |
| PFS_table_share_lock * | create_table_share_lock_stat () | 
| Create a table share lock instrumentation.  More... | |
| void | release_table_share_lock_stat (PFS_table_share_lock *pfs) | 
| Release a table share lock instrumentation.  More... | |
| int | init_table_share_index_stat (uint index_stat_sizing) | 
| Initialize table index stat buffer.  More... | |
| void | cleanup_table_share_index_stat () | 
| Cleanup the table stat buffers.  More... | |
| PFS_table_share_index * | create_table_share_index_stat (const TABLE_SHARE *server_share, uint server_index) | 
| Create a table share index instrumentation.  More... | |
| void | release_table_share_index_stat (PFS_table_share_index *pfs) | 
| Release a table share index instrumentation.  More... | |
| int | init_table_share_hash (const PFS_global_param *param) | 
| Initialize the table share hash table.  More... | |
| void | cleanup_table_share_hash () | 
| Cleanup the table share hash table.  More... | |
| int | init_file_class (uint file_class_sizing) | 
| Initialize the file class buffer.  More... | |
| void | cleanup_file_class () | 
| Cleanup the file class buffers.  More... | |
| int | init_stage_class (uint stage_class_sizing) | 
| Initialize the stage class buffer.  More... | |
| void | cleanup_stage_class () | 
| Cleanup the stage class buffers.  More... | |
| int | init_statement_class (uint statement_class_sizing) | 
| Initialize the statement class buffer.  More... | |
| void | cleanup_statement_class () | 
| Cleanup the statement class buffers.  More... | |
| int | init_socket_class (uint socket_class_sizing) | 
| Initialize the socket class buffer.  More... | |
| void | cleanup_socket_class () | 
| Cleanup the socket class buffers.  More... | |
| int | init_memory_class (uint memory_class_sizing) | 
| Initialize the memory class buffer.  More... | |
| void | cleanup_memory_class () | 
| Cleanup the memory class buffers.  More... | |
| int | init_metric_class (uint metric_class_sizing) | 
| Initialize the metric class buffer.  More... | |
| void | cleanup_metric_class () | 
| Cleanup the metric class buffers.  More... | |
| int | init_meter_class (uint meter_class_sizing) | 
| Initialize the meter class buffer.  More... | |
| void | cleanup_meter_class () | 
| Cleanup the meter class buffers.  More... | |
| int | init_logger_class (uint logger_class_sizing) | 
| Initialize the logger class buffer.  More... | |
| void | cleanup_logger_class () | 
| Cleanup the logger class buffers.  More... | |
| PFS_sync_key | register_mutex_class (const char *name, uint name_length, PSI_mutex_info *info) | 
| Register a mutex instrumentation metadata.  More... | |
| PFS_sync_key | register_rwlock_class (const char *name, uint name_length, PSI_rwlock_info *info) | 
| Register a rwlock instrumentation metadata.  More... | |
| PFS_sync_key | register_cond_class (const char *name, uint name_length, PSI_cond_info *info) | 
| Register a condition instrumentation metadata.  More... | |
| PFS_thread_key | register_thread_class (const char *name, uint name_length, PSI_thread_info *info) | 
| Register a thread instrumentation metadata.  More... | |
| PFS_file_key | register_file_class (const char *name, uint name_length, PSI_file_info *info) | 
| Register a file instrumentation metadata.  More... | |
| PFS_stage_key | register_stage_class (const char *name, uint prefix_length, uint name_length, PSI_stage_info *info) | 
| Register a stage instrumentation metadata.  More... | |
| PFS_statement_key | register_statement_class (const char *name, uint name_length, PSI_statement_info *info) | 
| Register a statement instrumentation metadata.  More... | |
| PFS_socket_key | register_socket_class (const char *name, uint name_length, PSI_socket_info *info) | 
| Register a socket instrumentation metadata.  More... | |
| PFS_memory_key | register_memory_class (const char *name, uint name_length, PSI_memory_info *info) | 
| Register a memory instrumentation metadata.  More... | |
| PFS_meter_key | register_meter_class (const char *name, uint name_length, PSI_meter_info_v1 *info) | 
| Register a meter instrumentation metadata.  More... | |
| void | unregister_meter_class (PSI_meter_info_v1 *info) | 
| uint32 | meter_class_count () | 
| PFS_metric_key | register_metric_class (const char *name, uint name_length, PSI_metric_info_v1 *info, const char *meter) | 
| Register a metric instrumentation metadata.  More... | |
| void | unregister_metric_class (PSI_metric_info_v1 *info) | 
| uint32 | metric_class_count () | 
| PFS_logger_key | register_logger_class (const char *name, uint name_length, PSI_logger_info_v1 *info) | 
| Register a logger instrumentation metadata.  More... | |
| void | unregister_logger_class (PSI_logger_info_v1 *info) | 
| uint32 | logger_class_count () | 
| PFS_mutex_class * | find_mutex_class (PFS_sync_key key) | 
| Find a mutex instrumentation class by key.  More... | |
| PFS_mutex_class * | sanitize_mutex_class (PFS_mutex_class *unsafe) | 
| PFS_rwlock_class * | find_rwlock_class (PFS_sync_key key) | 
| Find a rwlock instrumentation class by key.  More... | |
| PFS_rwlock_class * | sanitize_rwlock_class (PFS_rwlock_class *unsafe) | 
| PFS_cond_class * | find_cond_class (PFS_sync_key key) | 
| Find a condition instrumentation class by key.  More... | |
| PFS_cond_class * | sanitize_cond_class (PFS_cond_class *unsafe) | 
| PFS_thread_class * | find_thread_class (PFS_sync_key key) | 
| Find a thread instrumentation class by key.  More... | |
| PFS_thread_class * | sanitize_thread_class (PFS_thread_class *unsafe) | 
| PFS_file_class * | find_file_class (PFS_file_key key) | 
| Find a file instrumentation class by key.  More... | |
| PFS_file_class * | sanitize_file_class (PFS_file_class *unsafe) | 
| PFS_stage_class * | find_stage_class (PFS_stage_key key) | 
| Find a stage instrumentation class by key.  More... | |
| PFS_stage_class * | sanitize_stage_class (PFS_stage_class *unsafe) | 
| PFS_statement_class * | find_statement_class (PFS_stage_key key) | 
| Find a statement instrumentation class by key.  More... | |
| PFS_statement_class * | sanitize_statement_class (PFS_statement_class *unsafe) | 
| PFS_instr_class * | find_table_class (uint index) | 
| PFS_instr_class * | sanitize_table_class (PFS_instr_class *unsafe) | 
| PFS_socket_class * | find_socket_class (PFS_socket_key key) | 
| Find a socket instrumentation class by key.  More... | |
| PFS_socket_class * | sanitize_socket_class (PFS_socket_class *unsafe) | 
| PFS_memory_class * | find_memory_class (PFS_memory_key key) | 
| Find a memory instrumentation class by key.  More... | |
| PFS_memory_class * | sanitize_memory_class (PFS_memory_class *unsafe) | 
| PFS_instr_class * | find_idle_class (uint index) | 
| PFS_instr_class * | sanitize_idle_class (PFS_instr_class *unsafe) | 
| PFS_instr_class * | find_metadata_class (uint index) | 
| PFS_instr_class * | sanitize_metadata_class (PFS_instr_class *unsafe) | 
| PFS_error_class * | find_error_class (uint index) | 
| PFS_error_class * | sanitize_error_class (PFS_instr_class *unsafe) | 
| PFS_transaction_class * | find_transaction_class (uint index) | 
| PFS_transaction_class * | sanitize_transaction_class (PFS_transaction_class *unsafe) | 
| PFS_meter_class * | find_meter_class (PSI_meter_key key) | 
| Find a meter instrumentation class by key.  More... | |
| PFS_meter_class * | sanitize_meter_class (PFS_meter_class *unsafe) | 
| PFS_metric_class * | find_metric_class (PSI_metric_key key) | 
| Find a metric instrumentation class by key.  More... | |
| PFS_metric_class * | sanitize_metric_class (PFS_metric_class *unsafe) | 
| PFS_logger_class * | find_logger_class (PSI_logger_key key) | 
| Find a logger instrumentation class by key.  More... | |
| PFS_table_share * | find_or_create_table_share (PFS_thread *thread, bool temporary, const TABLE_SHARE *share) | 
| Find or create a table share instrumentation.  More... | |
| void | release_table_share (PFS_table_share *pfs) | 
| void | drop_table_share (PFS_thread *thread, bool temporary, const char *schema_name, uint schema_name_length, const char *table_name, uint table_name_length) | 
| Drop the instrumented table share associated with a table.  More... | |
| PFS_table_share * | sanitize_table_share (PFS_table_share *unsafe) | 
| Sanitize an unsafe table_share pointer.  More... | |
| void | reset_events_waits_by_class () | 
| Reset the wait statistics per instrument class.  More... | |
| void | reset_file_class_io () | 
| Reset the I/O statistics per file class.  More... | |
| void | reset_socket_class_io () | 
| Reset the I/O statistics per socket class.  More... | |
| void | update_table_share_derived_flags (PFS_thread *thread) | 
| Update derived flags for all table shares.  More... | |
| void | update_program_share_derived_flags (PFS_thread *thread) | 
| Update derived flags for all stored procedure shares.  More... | |
| ulonglong | gtid_monitoring_getsystime () | 
| Get current time for GTID monitoring.  More... | |
Variables | |
| bool | pfs_enabled | 
| Global performance schema flag.  More... | |
| std::atomic< uint32 > | pfs_unload_plugin_ref_count | 
| Global ref count for plugin and component events.  More... | |
| Pfs_instr_config_array * | pfs_instr_config_array | 
| PFS_INSTRUMENT option settings array.  More... | |
| Pfs_meter_config_array * | pfs_meter_config_array | 
| PFS_METER option settings array.  More... | |
| Pfs_logger_config_array * | pfs_logger_config_array | 
| PFS_LOGGER option settings array.  More... | |
| uint | mutex_class_start | 
| uint | rwlock_class_start | 
| uint | cond_class_start | 
| uint | file_class_start | 
| uint | socket_class_start | 
| uint | wait_class_max | 
| PFS_single_stat | global_idle_stat | 
| Statistics for the IDLE instrument.  More... | |
| PFS_table_io_stat | global_table_io_stat | 
| Statistics for dropped table I/O.  More... | |
| PFS_table_lock_stat | global_table_lock_stat | 
| Statistics for dropped table lock.  More... | |
| PFS_single_stat | global_metadata_stat | 
| Statistics for the METADATA instrument.  More... | |
| PFS_transaction_stat | global_transaction_stat | 
| Statistics for the transaction instrument.  More... | |
| PFS_error_stat | global_error_stat | 
| Statistics for the error instrument.  More... | |
| PFS_instr_class | global_table_io_class | 
| Instrument controlling all table I/O.  More... | |
| PFS_instr_class | global_table_lock_class | 
| Instrument controlling all table lock.  More... | |
| PFS_instr_class | global_idle_class | 
| Instrument controlling all idle waits.  More... | |
| PFS_instr_class | global_metadata_class | 
| Instrument controlling all metadata locks.  More... | |
| PFS_error_class | global_error_class | 
| Instrument controlling all server errors.  More... | |
| PFS_transaction_class | global_transaction_class | 
| ulong | mutex_class_max | 
| Size of the mutex class array.  More... | |
| ulong | mutex_class_lost | 
| Number of mutex class lost.  More... | |
| ulong | rwlock_class_max | 
| Size of the rwlock class array.  More... | |
| ulong | rwlock_class_lost | 
| Number of rwlock class lost.  More... | |
| ulong | cond_class_max | 
| Size of the condition class array.  More... | |
| ulong | cond_class_lost | 
| Number of condition class lost.  More... | |
| ulong | thread_class_max | 
| Size of the thread class array.  More... | |
| ulong | thread_class_lost | 
| Number of thread class lost.  More... | |
| ulong | file_class_max | 
| Size of the file class array.  More... | |
| ulong | file_class_lost | 
| Number of file class lost.  More... | |
| ulong | stage_class_max | 
| Size of the stage class array.  More... | |
| ulong | stage_class_lost | 
| Number of stage class lost.  More... | |
| ulong | statement_class_max | 
| Size of the statement class array.  More... | |
| ulong | statement_class_lost | 
| Number of statement class lost.  More... | |
| ulong | transaction_class_max | 
| Number of transaction classes.  More... | |
| ulong | socket_class_max | 
| Size of the socket class array.  More... | |
| ulong | socket_class_lost | 
| Number of socket class lost.  More... | |
| ulong | memory_class_max | 
| Size of the memory class array.  More... | |
| ulong | memory_class_lost | 
| Number of memory class lost.  More... | |
| ulong | meter_class_max | 
| Size of the meter class array.  More... | |
| ulong | meter_class_lost | 
| Number of meter class lost.  More... | |
| ulong | metric_class_max | 
| Size of the metric class array.  More... | |
| ulong | metric_class_lost | 
| Number of metric class lost.  More... | |
| ulong | logger_class_max | 
| Size of the logger class array.  More... | |
| ulong | logger_class_lost | 
| Number of logger class lost.  More... | |
| ulong | error_class_max | 
| Number of error classes.  More... | |
| PFS_mutex_class * | mutex_class_array | 
| PFS_rwlock_class * | rwlock_class_array | 
| PFS_cond_class * | cond_class_array | 
| PFS_file_class * | file_class_array | 
| PFS_meter_class * | meter_class_array | 
| PFS_metric_class * | metric_class_array | 
| PFS_logger_class * | logger_class_array | 
| LF_HASH | table_share_hash | 
| Hash index for instrumented table shares.  More... | |
Performance schema instruments metadata (declarations).
| #define PFS_MAX_FULL_PREFIX_NAME_LENGTH 32 | 
Maximum length of the 'full' prefix of an instrument name.
For example, for the instrument name 'wait/sync/mutex/sql/LOCK_open', the full prefix is 'wait/sync/mutex/sql/', which in turn derives from a prefix 'wait/sync/mutex' for mutexes, and a category of 'sql' for mutexes of the sql layer in the server.
| #define PFS_MAX_INFO_NAME_LENGTH 128 | 
Maximum length of an instrument name.
For example, 'wait/sync/mutex/sql/LOCK_open' is an instrument name.
| #define PFS_MAX_OS_NAME_LENGTH 16 | 
Maximum length of the thread os name.
Must include a terminating NUL character. Length is 16 because of linux pthread_setname_np(3)