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;
265 assert(valid_flags ==
m_flags);
297#define PFS_MUTEX_PARTITIONS 2
335 bool m_history{
false};
393 void aggregate_io(
void);
394 void aggregate_lock(
void);
413 void refresh_setup_object_flags(
PFS_thread *thread);
438 void destroy_lock_stat();
443 void destroy_index_stats();
451 std::atomic<PFS_table_share_index *> m_race_index_stat[
MAX_INDEXES + 1];
474#define GLOBAL_TABLE_IO_EVENT_INDEX 0
475#define GLOBAL_TABLE_LOCK_EVENT_INDEX 1
476#define GLOBAL_IDLE_EVENT_INDEX 2
477#define GLOBAL_METADATA_EVENT_INDEX 3
479#define COUNT_GLOBAL_EVENT_INDEX 4
482#define GLOBAL_TRANSACTION_INDEX 0
484#define GLOBAL_ERROR_INDEX 0
562 uint cond_class_sizing);
655 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
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:47
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
#define MAX_INDEXES
Definition: config.h:209
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:54
#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:320
PFS_cond_stat m_cond_stat
Condition usage statistics.
Definition: pfs_instr_class.h:325
PFS_cond * m_singleton
Singleton instance.
Definition: pfs_instr_class.h:327
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:509
Statistics for all server errors.
Definition: pfs_stat.h:539
Instrumentation metadata for a file.
Definition: pfs_instr_class.h:518
PFS_file * m_singleton
Singleton instance.
Definition: pfs_instr_class.h:522
PFS_file_stat m_file_stat
File usage statistics.
Definition: pfs_instr_class.h:520
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:272
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:229
PFS_class_type m_type
Class type.
Definition: pfs_instr_class.h:206
bool is_priority() const
Definition: pfs_instr_class.h:237
static void set_timed(PFS_instr_class *pfs, bool timed)
bool has_memory_cnt() const
Definition: pfs_instr_class.h:253
bool is_progress() const
Definition: pfs_instr_class.h:233
bool can_be_timed() const
Definition: pfs_instr_class.h:283
bool is_transferable() const
Definition: pfs_instr_class.h:239
PFS_instr_name m_name
Instrument name.
Definition: pfs_instr_class.h:225
uint m_event_name_index
Instrument name index.
Definition: pfs_instr_class.h:223
bool has_auto_seqnum() const
Definition: pfs_instr_class.h:251
bool m_timed
True if this instrument is timed.
Definition: pfs_instr_class.h:210
bool is_global() const
Definition: pfs_instr_class.h:245
char * m_documentation
Documentation.
Definition: pfs_instr_class.h:227
bool is_user() const
Definition: pfs_instr_class.h:241
bool is_mutable() const
Definition: pfs_instr_class.h:231
bool is_shared_exclusive() const
Definition: pfs_instr_class.h:235
int m_volatility
Volatility index.
Definition: pfs_instr_class.h:214
void enforce_valid_flags(uint allowed_flags)
Definition: pfs_instr_class.h:255
bool is_system_thread() const
Definition: pfs_instr_class.h:243
bool has_seqnum() const
Definition: pfs_instr_class.h:247
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:555
Instrumentation metadata for a mutex.
Definition: pfs_instr_class.h:300
PFS_mutex_stat m_mutex_stat
Mutex usage statistics.
Definition: pfs_instr_class.h:302
PFS_mutex * m_singleton
Singleton instance.
Definition: pfs_instr_class.h:304
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:310
PFS_rwlock * m_singleton
Singleton instance.
Definition: pfs_instr_class.h:314
PFS_rwlock_stat m_rwlock_stat
Rwlock usage statistics.
Definition: pfs_instr_class.h:312
Statistics for rwlock usage.
Definition: pfs_stat.h:203
Instrumented rwlock implementation.
Definition: pfs_instr.h:126
Definition: pfs_name.h:113
Single statistic.
Definition: pfs_stat.h:51
Instrumentation metadata for a socket.
Definition: pfs_instr_class.h:547
PFS_socket_stat m_socket_stat
Socket usage statistics.
Definition: pfs_instr_class.h:549
PFS_socket * m_singleton
Singleton instance.
Definition: pfs_instr_class.h:551
Statistics for SOCKET usage.
Definition: pfs_stat.h:857
Instrumented socket implementation.
Definition: pfs_instr.h:286
Instrumentation metadata for a stage.
Definition: pfs_instr_class.h:526
uint m_prefix_length
Length of the "stage/<component>/" prefix.
Definition: pfs_instr_class.h:531
PFS_stage_stat m_stage_stat
Stage usage statistics.
Definition: pfs_instr_class.h:533
Statistics for stage usage.
Definition: pfs_stat.h:322
Instrumentation metadata for a statement.
Definition: pfs_instr_class.h:537
Single table I/O statistic.
Definition: pfs_stat.h:628
Table index or 'key'.
Definition: pfs_instr_class.h:355
uint m_name_length
Length in bytes of m_name.
Definition: pfs_instr_class.h:359
char m_name[NAME_LEN]
Index name.
Definition: pfs_instr_class.h:357
Statistics for table locks.
Definition: pfs_stat.h:690
Definition: pfs_name.h:134
Index statistics of a table.
Definition: pfs_instr_class.h:363
PFS_table_key m_key
The index name.
Definition: pfs_instr_class.h:366
PFS_table_io_stat m_stat
The index stat.
Definition: pfs_instr_class.h:368
pfs_lock m_lock
Definition: pfs_instr_class.h:364
PFS_table_share * m_owner
Owner table share.
Definition: pfs_instr_class.h:370
PFS_opaque_container_page * m_page
Container page.
Definition: pfs_instr_class.h:372
Key identifying a table share.
Definition: pfs_instr_class.h:343
PFS_schema_name m_schema_name
Table schema.
Definition: pfs_instr_class.h:348
PFS_table_name m_table_name
Table name.
Definition: pfs_instr_class.h:351
enum_object_type m_type
Object type.
Definition: pfs_instr_class.h:345
Lock statistics of a table.
Definition: pfs_instr_class.h:376
PFS_opaque_container_page * m_page
Container page.
Definition: pfs_instr_class.h:383
pfs_lock m_lock
Definition: pfs_instr_class.h:377
PFS_table_share * m_owner
Owner table share.
Definition: pfs_instr_class.h:381
PFS_table_lock_stat m_stat
Lock stats.
Definition: pfs_instr_class.h:379
Instrumentation metadata for a table share.
Definition: pfs_instr_class.h:387
PFS_table_share_key m_key
Search key.
Definition: pfs_instr_class.h:429
std::atomic< PFS_table_share_lock * > m_race_lock_stat
Table locks statistics.
Definition: pfs_instr_class.h:449
void dec_refcount(void)
Definition: pfs_instr_class.h:411
enum_object_type get_object_type()
Definition: pfs_instr_class.h:391
uint32 get_version()
Definition: pfs_instr_class.h:389
void inc_refcount(void)
Definition: pfs_instr_class.h:409
bool m_timed
True if table instrumentation is timed.
Definition: pfs_instr_class.h:426
bool m_enabled
True if table instrumentation is enabled.
Definition: pfs_instr_class.h:421
PFS_opaque_container_page * m_page
Container page.
Definition: pfs_instr_class.h:434
void init_refcount(void)
Definition: pfs_instr_class.h:405
int get_refcount(void)
Definition: pfs_instr_class.h:407
std::atomic< int > m_refcount
Number of opened table handles.
Definition: pfs_instr_class.h:447
uint m_key_count
Number of indexes.
Definition: pfs_instr_class.h:432
void aggregate(void)
Definition: pfs_instr_class.h:400
pfs_lock m_lock
Internal lock.
Definition: pfs_instr_class.h:416
Instrumentation metadata of a thread.
Definition: pfs_instr_class.h:331
PFS_thread * m_singleton
Singleton instance.
Definition: pfs_instr_class.h:333
std::atomic< unsigned int > m_seqnum
Thread instance sequence number counter.
Definition: pfs_instr_class.h:339
Instrumented thread implementation.
Definition: pfs_instr.h:372
Instrumentation metadata for a transaction.
Definition: pfs_instr_class.h:540
Statistics for transaction usage.
Definition: pfs_stat.h:441
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:117
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:151
unsigned int uint
Definition: uca-dump.cc:29