MySQL 8.4.2
Source Code Documentation
|
Performance schema instruments (implementation). More...
#include "storage/perfschema/pfs_instr.h"
#include <assert.h>
#include <string.h>
#include <atomic>
#include "my_compiler.h"
#include "my_psi_config.h"
#include "my_sys.h"
#include "sql/mysqld.h"
#include "storage/perfschema/pfs.h"
#include "storage/perfschema/pfs_account.h"
#include "storage/perfschema/pfs_buffer_container.h"
#include "storage/perfschema/pfs_builtin_memory.h"
#include "storage/perfschema/pfs_global.h"
#include "storage/perfschema/pfs_host.h"
#include "storage/perfschema/pfs_instr_class.h"
#include "storage/perfschema/pfs_stat.h"
#include "storage/perfschema/pfs_user.h"
Functions | |
int | init_instruments (const PFS_global_param *param) |
Initialize all the instruments instance buffers. More... | |
void | cleanup_instruments () |
Cleanup all the instruments buffers. More... | |
static const uchar * | filename_hash_get_key (const uchar *entry, size_t *length) |
Get hash table key for instrumented files. More... | |
static uint | filename_hash_func (const LF_HASH *, const uchar *key, size_t key_len) |
static int | filename_hash_cmp_func (const uchar *key1, size_t key_len1, const uchar *key2, size_t key_len2) |
int | init_file_hash (const PFS_global_param *param) |
Initialize the file name hash. More... | |
void | cleanup_file_hash () |
Cleanup the file name hash. More... | |
PFS_mutex * | create_mutex (PFS_mutex_class *klass, const void *identity) |
Create instrumentation for a mutex instance. More... | |
void | destroy_mutex (PFS_mutex *pfs) |
Destroy instrumentation for a mutex instance. More... | |
PFS_rwlock * | create_rwlock (PFS_rwlock_class *klass, const void *identity) |
Create instrumentation for a rwlock instance. More... | |
void | destroy_rwlock (PFS_rwlock *pfs) |
Destroy instrumentation for a rwlock instance. More... | |
PFS_cond * | create_cond (PFS_cond_class *klass, const void *identity) |
Create instrumentation for a condition instance. More... | |
void | destroy_cond (PFS_cond *pfs) |
Destroy instrumentation for a condition instance. More... | |
void | carry_global_memory_stat_alloc_delta (PFS_memory_stat_alloc_delta *delta, uint index) |
void | carry_global_memory_stat_free_delta (PFS_memory_stat_free_delta *delta, uint index) |
PFS_thread * | create_thread (PFS_thread_class *klass, PSI_thread_seqnum seqnum, const void *identity, ulonglong processlist_id) |
Create instrumentation for a thread instance. More... | |
PFS_thread * | find_thread_by_internal_id (ulonglong thread_id) |
Find a PFS thread given an internal thread id. More... | |
PFS_thread * | find_thread_by_processlist_id (ulonglong processlist_id) |
Find a PFS thread given a processlist id. More... | |
PFS_mutex * | sanitize_mutex (PFS_mutex *unsafe) |
PFS_rwlock * | sanitize_rwlock (PFS_rwlock *unsafe) |
PFS_cond * | sanitize_cond (PFS_cond *unsafe) |
PFS_thread * | sanitize_thread (PFS_thread *unsafe) |
Sanitize a PFS_thread pointer. More... | |
PFS_file * | sanitize_file (PFS_file *unsafe) |
PFS_socket * | sanitize_socket (PFS_socket *unsafe) |
PFS_metadata_lock * | sanitize_metadata_lock (PFS_metadata_lock *unsafe) |
void | destroy_thread (PFS_thread *pfs) |
Destroy instrumentation for a thread instance. More... | |
static LF_PINS * | get_filename_hash_pins (PFS_thread *thread) |
Get the hash pins for filename_hash . More... | |
int | normalize_filename (const char *filename, uint name_len, PFS_file_name &normalized) |
Normalize a filename with fully qualified path. More... | |
PFS_file * | find_or_create_file (PFS_thread *thread, PFS_file_class *klass, const char *filename, uint len, bool create) |
Find or create instrumentation for a file instance by file name. More... | |
PFS_file * | start_file_rename (PFS_thread *thread, const char *old_name) |
Before the rename operation: Find the file instrumentation by name, then delete the filename from the filename hash. More... | |
int | end_file_rename (PFS_thread *thread, PFS_file *pfs, const char *new_name, int rename_result) |
After the rename operation: Assign the new filename to the file instrumentation instance, then add to the filename hash. More... | |
PFS_file * | find_file (PFS_thread *thread, PFS_file_class *klass, const char *filename, uint len) |
Find a file instrumentation instance by name. More... | |
void | release_file (PFS_file *pfs) |
Release instrumentation for a file instance. More... | |
void | delete_file_name (PFS_thread *thread, PFS_file *pfs) |
Delete file name from the hash table. More... | |
void | destroy_file (PFS_thread *thread, PFS_file *pfs, bool delete_name) |
Destroy instrumentation for a file instance. More... | |
PFS_table * | create_table (PFS_table_share *share, PFS_thread *opening_thread, const void *identity) |
Create instrumentation for a table instance. More... | |
void | destroy_table (PFS_table *pfs) |
Destroy instrumentation for a table instance. More... | |
PFS_socket * | create_socket (PFS_socket_class *klass, const my_socket *fd, const struct sockaddr *addr, socklen_t addr_len) |
Create instrumentation for a socket instance. More... | |
void | destroy_socket (PFS_socket *pfs) |
Destroy instrumentation for a socket instance. More... | |
PFS_metadata_lock * | create_metadata_lock (void *identity, const MDL_key *mdl_key, opaque_mdl_type mdl_type, opaque_mdl_duration mdl_duration, opaque_mdl_status mdl_status, const char *src_file, uint src_line) |
void | destroy_metadata_lock (PFS_metadata_lock *pfs) |
static void | fct_reset_mutex_waits (PFS_mutex *pfs) |
static void | reset_mutex_waits_by_instance () |
static void | fct_reset_rwlock_waits (PFS_rwlock *pfs) |
static void | reset_rwlock_waits_by_instance () |
static void | fct_reset_cond_waits (PFS_cond *pfs) |
static void | reset_cond_waits_by_instance () |
static void | fct_reset_file_waits (PFS_file *pfs) |
static void | reset_file_waits_by_instance () |
static void | fct_reset_socket_waits (PFS_socket *pfs) |
static void | reset_socket_waits_by_instance () |
void | reset_events_waits_by_instance () |
Reset the wait statistics per object instance. More... | |
static void | fct_reset_file_io (PFS_file *pfs) |
void | reset_file_instance_io () |
Reset the I/O statistics per file instance. More... | |
static void | fct_reset_socket_io (PFS_socket *pfs) |
void | reset_socket_instance_io () |
Reset the I/O statistics per socket instance. More... | |
void | reset_histogram_global () |
void | aggregate_all_event_names (PFS_single_stat *from_array, PFS_single_stat *to_array) |
void | aggregate_all_event_names (PFS_single_stat *from_array, PFS_single_stat *to_array_1, PFS_single_stat *to_array_2) |
void | aggregate_all_stages (PFS_stage_stat *from_array, PFS_stage_stat *to_array) |
void | aggregate_all_stages (PFS_stage_stat *from_array, PFS_stage_stat *to_array_1, PFS_stage_stat *to_array_2) |
void | aggregate_all_statements (PFS_statement_stat *from_array, PFS_statement_stat *to_array) |
void | aggregate_all_statements (PFS_statement_stat *from_array, PFS_statement_stat *to_array_1, PFS_statement_stat *to_array_2) |
void | aggregate_all_transactions (PFS_transaction_stat *from_array, PFS_transaction_stat *to_array) |
void | aggregate_all_transactions (PFS_transaction_stat *from_array, PFS_transaction_stat *to_array_1, PFS_transaction_stat *to_array_2) |
void | aggregate_all_errors (PFS_error_stat *from_array, PFS_error_stat *to_array) |
void | aggregate_all_errors (PFS_error_stat *from_array, PFS_error_stat *to_array_1, PFS_error_stat *to_array_2) |
void | aggregate_all_memory_with_reassign (bool alive, PFS_memory_safe_stat *from_array, PFS_memory_shared_stat *to_array, PFS_memory_shared_stat *global_array) |
void | aggregate_all_memory (bool alive, PFS_memory_safe_stat *from_array, PFS_memory_shared_stat *to_array) |
void | aggregate_all_memory (bool alive, PFS_memory_shared_stat *from_array, PFS_memory_shared_stat *to_array) |
void | aggregate_all_memory_with_reassign (bool alive, PFS_memory_safe_stat *from_array, PFS_memory_shared_stat *to_array_1, PFS_memory_shared_stat *to_array_2, PFS_memory_shared_stat *global_array) |
void | aggregate_all_memory (bool alive, PFS_memory_shared_stat *from_array, PFS_memory_shared_stat *to_array_1, PFS_memory_shared_stat *to_array_2) |
void | aggregate_thread_status (PFS_thread *thread, PFS_account *safe_account, PFS_user *safe_user, PFS_host *safe_host) |
static void | aggregate_thread_stats (PFS_thread *thread, PFS_account *safe_account, PFS_user *safe_user, PFS_host *safe_host) |
void | aggregate_thread (PFS_thread *thread, PFS_account *safe_account, PFS_user *safe_user, PFS_host *safe_host) |
void | aggregate_thread_waits (PFS_thread *thread, PFS_account *safe_account, PFS_user *safe_user, PFS_host *safe_host) |
void | aggregate_thread_stages (PFS_thread *thread, PFS_account *safe_account, PFS_user *safe_user, PFS_host *safe_host) |
void | aggregate_thread_statements (PFS_thread *thread, PFS_account *safe_account, PFS_user *safe_user, PFS_host *safe_host) |
void | aggregate_thread_transactions (PFS_thread *thread, PFS_account *safe_account, PFS_user *safe_user, PFS_host *safe_host) |
void | aggregate_thread_errors (PFS_thread *thread, PFS_account *safe_account, PFS_user *safe_user, PFS_host *safe_host) |
void | aggregate_thread_memory (bool alive, PFS_thread *thread, PFS_account *safe_account, PFS_user *safe_user, PFS_host *safe_host) |
void | clear_thread_account (PFS_thread *thread) |
void | set_thread_account (PFS_thread *thread) |
static void | fct_update_mutex_derived_flags (PFS_mutex *pfs) |
void | update_mutex_derived_flags () |
Update derived flags for all mutex instances. More... | |
static void | fct_update_rwlock_derived_flags (PFS_rwlock *pfs) |
void | update_rwlock_derived_flags () |
Update derived flags for all rwlock instances. More... | |
static void | fct_update_cond_derived_flags (PFS_cond *pfs) |
void | update_cond_derived_flags () |
Update derived flags for all condition instances. More... | |
static void | fct_update_file_derived_flags (PFS_file *pfs) |
void | update_file_derived_flags () |
Update derived flags for all file handles. More... | |
static void | fct_update_table_derived_flags (PFS_table *pfs) |
void | update_table_derived_flags () |
Update derived flags for all table handles. More... | |
static void | fct_update_socket_derived_flags (PFS_socket *pfs) |
void | update_socket_derived_flags () |
Update derived flags for all socket instances. More... | |
static void | fct_reset_metadata_source_file_pointers (PFS_metadata_lock *pfs) |
static void | fct_update_metadata_derived_flags (PFS_metadata_lock *pfs) |
void | update_metadata_derived_flags () |
Update derived flags for all metadata instances. More... | |
static void | fct_update_thread_derived_flags (PFS_thread *pfs) |
void | update_thread_derived_flags () |
Update derived flags for all thread instances. More... | |
void | update_instruments_derived_flags () |
Update derived flags for all instruments. More... | |
static void | fct_reset_source_file_pointers (PFS_thread *pfs_thread) |
For each thread, clear the source file pointers from all waits, stages, statements and transaction events. More... | |
void | reset_source_file_pointers () |
Clear the source file pointers from all waits, stages, statements and transaction events. More... | |
Variables | |
ulong | nested_statement_lost = 0 |
long | file_handle_max = 0 |
Size of the file handle array. More... | |
bool | file_handle_full |
True when file_handle_array is full. More... | |
ulong | file_handle_lost = 0 |
Number of file handle lost. More... | |
ulong | events_waits_history_per_thread = 0 |
Number of EVENTS_WAITS_HISTORY records per thread. More... | |
ulong | events_stages_history_per_thread = 0 |
Number of EVENTS_STAGES_HISTORY records per thread. More... | |
ulong | events_statements_history_per_thread = 0 |
Number of EVENTS_STATEMENTS_HISTORY records per thread. More... | |
uint | statement_stack_max = 0 |
Max size of the statements stack. More... | |
size_t | pfs_max_digest_length = 0 |
Max size of the digests token array. More... | |
size_t | pfs_max_sqltext = 0 |
Max size of SQL TEXT. More... | |
ulong | locker_lost = 0 |
Number of locker lost. More... | |
ulong | statement_lost = 0 |
Number of statements lost. More... | |
ulong | session_connect_attrs_size_per_thread |
Size of connection attribute storage per thread. More... | |
ulong | session_connect_attrs_longest_seen = 0 |
Longest connection attributes string seen so far, pre-truncation. More... | |
ulong | session_connect_attrs_lost = 0 |
Number of connection attributes lost. More... | |
ulong | events_transactions_history_per_thread = 0 |
Number of EVENTS_TRANSACTIONS_HISTORY records per thread. More... | |
PFS_file ** | file_handle_array = nullptr |
File instrumentation handle array. More... | |
PFS_stage_stat * | global_instr_class_stages_array = nullptr |
PFS_statement_stat * | global_instr_class_statements_array = nullptr |
PFS_histogram | global_statements_histogram |
std::atomic< PFS_memory_shared_stat * > | global_instr_class_memory_array {nullptr} |
static PFS_cacheline_atomic_uint64 | thread_internal_id_counter |
LF_HASH | filename_hash |
Hash table for instrumented files. More... | |
static bool | filename_hash_inited = false |
True if filename_hash is initialized. More... | |
Performance schema instruments (implementation).
ulong nested_statement_lost = 0 |