23#ifndef PFS_INSTR_CLASS_H
24#define PFS_INSTR_CLASS_H
37#include "mysqld_error.h"
57#define PFS_MAX_INFO_NAME_LENGTH 128
65#define PFS_MAX_OS_NAME_LENGTH 16
74#define PFS_MAX_FULL_PREFIX_NAME_LENGTH 32
78class PFS_opaque_container_page;
184 const char *
str()
const;
273 assert(valid_flags ==
m_flags);
314#define PFS_MUTEX_PARTITIONS 2
352 bool m_history{
false};
411 void aggregate_lock();
430 void refresh_setup_object_flags(
PFS_thread *thread);
455 void destroy_lock_stat();
460 void destroy_index_stats();
468 std::atomic<PFS_table_share_index *> m_race_index_stat[
MAX_INDEXES + 1];
491#define GLOBAL_TABLE_IO_EVENT_INDEX 0
492#define GLOBAL_TABLE_LOCK_EVENT_INDEX 1
493#define GLOBAL_IDLE_EVENT_INDEX 2
494#define GLOBAL_METADATA_EVENT_INDEX 3
496#define COUNT_GLOBAL_EVENT_INDEX 4
499#define GLOBAL_TRANSACTION_INDEX 0
501#define GLOBAL_ERROR_INDEX 0
579 uint cond_class_sizing);
672 const char *schema_name,
uint schema_name_length,
Encapsulates the name of an instrumented entity.
Definition: pfs_instr_class.h:156
const char * m_private_old_name
Old instrument name, if any.
Definition: pfs_instr_class.h:176
terminology_use_previous::enum_compatibility_version m_private_version
The oldest version that uses the new name.
Definition: pfs_instr_class.h:180
uint m_private_old_name_length
Length in bytes of old instrument name len, if any.
Definition: pfs_instr_class.h:178
static constexpr uint max_length
Definition: pfs_instr_class.h:158
uint m_private_name_length
Length in bytes of m_name.
Definition: pfs_instr_class.h:174
A typesafe replacement for DYNAMIC_ARRAY.
Definition: prealloced_array.h:70
#define PSI_FLAG_SINGLETON
Singleton flag.
Definition: component_common.h:34
void release_table_share(TABLE_SHARE *share)
Mark that we are not using table share anymore.
Definition: sql_base.cc:980
unsigned int PSI_cond_key
Instrumented cond key.
Definition: psi_cond_bits.h:43
unsigned int PSI_file_key
Instrumented file key.
Definition: psi_file_bits.h:47
unsigned int PSI_memory_key
Instrumented memory key.
Definition: psi_memory_bits.h:48
unsigned int PSI_mutex_key
Instrumented mutex key.
Definition: psi_mutex_bits.h:51
unsigned int PSI_rwlock_key
Instrumented rwlock key.
Definition: psi_rwlock_bits.h:43
unsigned int PSI_socket_key
Instrumented socket key.
Definition: psi_socket_bits.h:48
unsigned int PSI_stage_key
Instrumented stage key.
Definition: psi_stage_bits.h:42
unsigned int PSI_statement_key
Instrumented statement key.
Definition: psi_statement_bits.h:48
unsigned int PSI_thread_key
Instrumented thread key.
Definition: psi_thread_bits.h:49
#define PSI_FLAG_USER
User flag.
Definition: psi_bits.h:102
#define PSI_FLAG_TRANSFER
Transferable flag.
Definition: psi_bits.h:94
#define PSI_FLAG_MUTABLE
Mutable flag.
Definition: psi_bits.h:67
#define PSI_FLAG_STAGE_PROGRESS
Stage progress flag.
Definition: psi_bits.h:81
#define PSI_FLAG_RWLOCK_SX
Shared Exclusive flag.
Definition: psi_bits.h:87
#define PSI_FLAG_NO_SEQNUM
No sequence number flag.
Definition: psi_bits.h:135
#define PSI_FLAG_THREAD
Per Thread flag.
Definition: psi_bits.h:74
#define PSI_FLAG_AUTO_SEQNUM
Automatic sequence number flag.
Definition: psi_bits.h:129
#define PSI_FLAG_MEM_COLLECT
Enable collecting the memory consumed by threads.
Definition: psi_bits.h:140
#define PSI_FLAG_THREAD_SYSTEM
System thread flag.
Definition: psi_bits.h:123
#define PSI_FLAG_RWLOCK_PR
Priority lock flag.
Definition: psi_bits.h:117
#define PSI_FLAG_ONLY_GLOBAL_STAT
Global stat only flag.
Definition: psi_bits.h:111
static int flags[50]
Definition: hp_test1.cc:39
#define MAX_INDEXES
Definition: config.h:210
Header for compiler-dependent features.
constexpr bool likely(bool expr)
Definition: my_compiler.h:54
Some integer typedefs for easier portability.
unsigned long long int ulonglong
Definition: my_inttypes.h:55
uint32_t uint32
Definition: my_inttypes.h:66
static int count
Definition: myisam_ftdump.cc:42
Common definition between mysql server & client.
#define NAME_LEN
Definition: mysql_com.h:66
const char * table_name
Definition: rules_table_service.cc:55
enum_compatibility_version
Enumeration holding the possible values for @terminology_use_previous.
Definition: terminology_use_previous_enum.h:47
Data types for columns used in the performance schema tables (declarations)
enum_object_type
Enum values for the various OBJECT_TYPE columns.
Definition: pfs_column_types.h:221
Miscellaneous global dependencies (declarations).
#define PFS_ALIGNED
Definition: pfs_global.h:56
#define PFS_MAX_OS_NAME_LENGTH
Maximum length of the thread os name.
Definition: pfs_instr_class.h:65
#define PFS_MAX_INFO_NAME_LENGTH
Maximum length of an instrument name.
Definition: pfs_instr_class.h:57
Performance schema internal locks (declarations).
Object names (declarations).
Statistics (declarations).
required string key
Definition: replication_asynchronous_connection_failover.proto:59
required bool enabled
Definition: replication_group_member_actions.proto:32
static const LEX_CSTRING pfs
Definition: sql_show_processlist.cc:65
case opt name
Definition: sslopt-case.h:32
Instrumentation metadata for a condition.
Definition: pfs_instr_class.h:337
PFS_cond_stat m_cond_stat
Condition usage statistics.
Definition: pfs_instr_class.h:342
PFS_cond * m_singleton
Singleton instance.
Definition: pfs_instr_class.h:344
Statistics for conditions usage.
Definition: pfs_stat.h:237
Instrumented condition implementation.
Definition: pfs_instr.h:159
Instrumentation metadata for an error.
Definition: pfs_instr_class.h:526
Statistics for all server errors.
Definition: pfs_stat.h:556
Instrumentation metadata for a file.
Definition: pfs_instr_class.h:535
PFS_file * m_singleton
Singleton instance.
Definition: pfs_instr_class.h:539
PFS_file_stat m_file_stat
File usage statistics.
Definition: pfs_instr_class.h:537
Statistics for FILE usage.
Definition: pfs_stat.h:307
Instrumented File and FILE implementation.
Definition: pfs_instr.h:176
Performance schema global sizing parameters.
Definition: pfs_server.h:112
Information for all instrumentation.
Definition: pfs_instr_class.h:204
bool is_deferred() const
Definition: pfs_instr_class.h:280
bool m_enabled
True if this instrument is enabled.
Definition: pfs_instr_class.h:208
static void set_enabled(PFS_instr_class *pfs, bool enabled)
uint m_flags
Instrument flags.
Definition: pfs_instr_class.h:212
bool is_singleton() const
Definition: pfs_instr_class.h:231
PFS_class_type m_type
Class type.
Definition: pfs_instr_class.h:206
bool is_priority() const
Definition: pfs_instr_class.h:239
static void set_timed(PFS_instr_class *pfs, bool timed)
void set_enforced_flags(uint flags)
Definition: pfs_instr_class.h:261
bool is_progress() const
Definition: pfs_instr_class.h:235
bool can_be_timed() const
Definition: pfs_instr_class.h:291
bool is_transferable() const
Definition: pfs_instr_class.h:241
bool has_enforced_memory_cnt() const
Definition: pfs_instr_class.h:257
PFS_instr_name m_name
Instrument name.
Definition: pfs_instr_class.h:227
bool has_default_memory_cnt() const
Definition: pfs_instr_class.h:255
uint m_event_name_index
Instrument name index.
Definition: pfs_instr_class.h:225
bool has_auto_seqnum() const
Definition: pfs_instr_class.h:253
bool m_timed
True if this instrument is timed.
Definition: pfs_instr_class.h:210
bool can_be_enforced() const
Definition: pfs_instr_class.h:302
bool is_global() const
Definition: pfs_instr_class.h:247
char * m_documentation
Documentation.
Definition: pfs_instr_class.h:229
bool is_user() const
Definition: pfs_instr_class.h:243
uint m_enforced_flags
Instrument enforced flags.
Definition: pfs_instr_class.h:214
bool is_mutable() const
Definition: pfs_instr_class.h:233
bool is_shared_exclusive() const
Definition: pfs_instr_class.h:237
int m_volatility
Volatility index.
Definition: pfs_instr_class.h:216
void enforce_valid_flags(uint allowed_flags)
Definition: pfs_instr_class.h:263
bool is_system_thread() const
Definition: pfs_instr_class.h:245
bool has_seqnum() const
Definition: pfs_instr_class.h:249
User-defined instrument configuration.
Definition: pfs_instr_class.h:130
uint m_name_length
Definition: pfs_instr_class.h:134
bool m_enabled
Enabled flag.
Definition: pfs_instr_class.h:136
bool m_timed
Timed flag.
Definition: pfs_instr_class.h:138
char * m_name
Definition: pfs_instr_class.h:132
Instrumentation metadata for a memory.
Definition: pfs_instr_class.h:572
Instrumentation metadata for a mutex.
Definition: pfs_instr_class.h:317
PFS_mutex_stat m_mutex_stat
Mutex usage statistics.
Definition: pfs_instr_class.h:319
PFS_mutex * m_singleton
Singleton instance.
Definition: pfs_instr_class.h:321
Statistics for mutex usage.
Definition: pfs_stat.h:176
Instrumented mutex implementation.
Definition: pfs_instr.h:100
Instrumentation metadata for a read write lock.
Definition: pfs_instr_class.h:327
PFS_rwlock * m_singleton
Singleton instance.
Definition: pfs_instr_class.h:331
PFS_rwlock_stat m_rwlock_stat
Rwlock usage statistics.
Definition: pfs_instr_class.h:329
Statistics for rwlock usage.
Definition: pfs_stat.h:203
Instrumented rwlock implementation.
Definition: pfs_instr.h:126
Definition: pfs_name.h:115
Single statistic.
Definition: pfs_stat.h:51
Instrumentation metadata for a socket.
Definition: pfs_instr_class.h:564
PFS_socket_stat m_socket_stat
Socket usage statistics.
Definition: pfs_instr_class.h:566
PFS_socket * m_singleton
Singleton instance.
Definition: pfs_instr_class.h:568
Statistics for SOCKET usage.
Definition: pfs_stat.h:874
Instrumented socket implementation.
Definition: pfs_instr.h:286
Instrumentation metadata for a stage.
Definition: pfs_instr_class.h:543
uint m_prefix_length
Length of the "stage/<component>/" prefix.
Definition: pfs_instr_class.h:548
PFS_stage_stat m_stage_stat
Stage usage statistics.
Definition: pfs_instr_class.h:550
Statistics for stage usage.
Definition: pfs_stat.h:322
Instrumentation metadata for a statement.
Definition: pfs_instr_class.h:554
Single table I/O statistic.
Definition: pfs_stat.h:647
Table index or 'key'.
Definition: pfs_instr_class.h:372
uint m_name_length
Length in bytes of m_name.
Definition: pfs_instr_class.h:376
char m_name[NAME_LEN]
Index name.
Definition: pfs_instr_class.h:374
Statistics for table locks.
Definition: pfs_stat.h:709
Definition: pfs_name.h:136
Index statistics of a table.
Definition: pfs_instr_class.h:380
PFS_table_key m_key
The index name.
Definition: pfs_instr_class.h:383
PFS_table_io_stat m_stat
The index stat.
Definition: pfs_instr_class.h:385
pfs_lock m_lock
Definition: pfs_instr_class.h:381
PFS_table_share * m_owner
Owner table share.
Definition: pfs_instr_class.h:387
PFS_opaque_container_page * m_page
Container page.
Definition: pfs_instr_class.h:389
Key identifying a table share.
Definition: pfs_instr_class.h:360
PFS_schema_name m_schema_name
Table schema.
Definition: pfs_instr_class.h:365
PFS_table_name m_table_name
Table name.
Definition: pfs_instr_class.h:368
enum_object_type m_type
Object type.
Definition: pfs_instr_class.h:362
Lock statistics of a table.
Definition: pfs_instr_class.h:393
PFS_opaque_container_page * m_page
Container page.
Definition: pfs_instr_class.h:400
pfs_lock m_lock
Definition: pfs_instr_class.h:394
PFS_table_share * m_owner
Owner table share.
Definition: pfs_instr_class.h:398
PFS_table_lock_stat m_stat
Lock stats.
Definition: pfs_instr_class.h:396
Instrumentation metadata for a table share.
Definition: pfs_instr_class.h:404
PFS_table_share_key m_key
Search key.
Definition: pfs_instr_class.h:446
std::atomic< PFS_table_share_lock * > m_race_lock_stat
Table locks statistics.
Definition: pfs_instr_class.h:466
uint32 get_version()
Definition: pfs_instr_class.h:406
enum_object_type get_object_type() const
Definition: pfs_instr_class.h:408
bool m_timed
True if table instrumentation is timed.
Definition: pfs_instr_class.h:443
bool m_enabled
True if table instrumentation is enabled.
Definition: pfs_instr_class.h:438
void inc_refcount()
Definition: pfs_instr_class.h:426
PFS_opaque_container_page * m_page
Container page.
Definition: pfs_instr_class.h:451
void aggregate()
Definition: pfs_instr_class.h:417
int get_refcount()
Definition: pfs_instr_class.h:424
void init_refcount()
Definition: pfs_instr_class.h:422
std::atomic< int > m_refcount
Number of opened table handles.
Definition: pfs_instr_class.h:464
uint m_key_count
Number of indexes.
Definition: pfs_instr_class.h:449
void dec_refcount()
Definition: pfs_instr_class.h:428
pfs_lock m_lock
Internal lock.
Definition: pfs_instr_class.h:433
Instrumentation metadata of a thread.
Definition: pfs_instr_class.h:348
PFS_thread * m_singleton
Singleton instance.
Definition: pfs_instr_class.h:350
std::atomic< unsigned int > m_seqnum
Thread instance sequence number counter.
Definition: pfs_instr_class.h:356
Instrumented thread implementation.
Definition: pfs_instr.h:372
Instrumentation metadata for a transaction.
Definition: pfs_instr_class.h:557
Statistics for transaction usage.
Definition: pfs_stat.h:458
Condition information.
Definition: psi_cond_bits.h:87
File instrument information.
Definition: psi_file_bits.h:113
Memory instrument information.
Definition: psi_memory_bits.h:57
Mutex information.
Definition: psi_mutex_bits.h:72
Rwlock information.
Definition: psi_rwlock_bits.h:161
Socket instrument information.
Definition: psi_socket_bits.h:127
Stage instrument information.
Definition: psi_stage_bits.h:73
Statement instrument information.
Definition: psi_statement_bits.h:132
Thread instrument information.
Definition: psi_thread_bits.h:116
This structure is shared between different table objects.
Definition: table.h:688
A 'lock' protecting performance schema internal buffers.
Definition: pfs_lock.h:153
unsigned int uint
Definition: uca9-dump.cc:74