MySQL  8.0.27
Source Code Documentation
pfs_instr_class.h
Go to the documentation of this file.
1 /* Copyright (c) 2008, 2021, 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 also distributed 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 included with MySQL.
13 
14  This program is distributed in the hope that it will be useful,
15  but WITHOUT ANY WARRANTY; without even the implied warranty of
16  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  GNU General Public License, version 2.0, for more details.
18 
19  You should have received a copy of the GNU General Public License
20  along with this program; if not, write to the Free Software
21  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
22 
23 #ifndef PFS_INSTR_CLASS_H
24 #define PFS_INSTR_CLASS_H
25 
26 #include "my_config.h"
27 
28 #include <assert.h>
29 #include <sys/types.h>
30 #include <atomic>
31 
32 #include "lf.h"
33 #include "my_compiler.h"
34 
35 #include "my_inttypes.h"
36 #include "mysql_com.h" /* NAME_LEN */
37 #include "mysqld_error.h"
38 #include "prealloced_array.h"
44 
45 struct TABLE_SHARE;
46 
47 /**
48  @file storage/perfschema/pfs_instr_class.h
49  Performance schema instruments metadata (declarations).
50 */
51 
52 /**
53  Maximum length of an instrument name.
54  For example, 'wait/sync/mutex/sql/LOCK_open' is an instrument name.
55 */
56 #define PFS_MAX_INFO_NAME_LENGTH 128
57 
58 /**
59  Maximum length of the thread os name.
60  Must include a terminating NUL character.
61  Length is 16 because of linux pthread_setname_np(3)
62  @see my_thread_self_setname()
63 */
64 #define PFS_MAX_OS_NAME_LENGTH 16
65 
66 /**
67  Maximum length of the 'full' prefix of an instrument name.
68  For example, for the instrument name 'wait/sync/mutex/sql/LOCK_open',
69  the full prefix is 'wait/sync/mutex/sql/', which in turn derives from
70  a prefix 'wait/sync/mutex' for mutexes, and a category of 'sql' for mutexes
71  of the sql layer in the server.
72 */
73 #define PFS_MAX_FULL_PREFIX_NAME_LENGTH 32
74 
75 struct PFS_global_param;
76 struct PFS_table_share;
77 class PFS_opaque_container_page;
78 
79 /**
80  @addtogroup performance_schema_buffers
81  @{
82 */
83 
84 extern bool pfs_enabled;
85 extern bool pfs_processlist_enabled;
86 
87 /** Global ref count for plugin and component events. */
88 extern std::atomic<uint32> pfs_unload_plugin_ref_count;
89 
90 /** Key, naming a synch instrument (mutex, rwlock, cond). */
91 typedef unsigned int PFS_sync_key;
92 /** Key, naming a thread instrument. */
93 typedef unsigned int PFS_thread_key;
94 /** Key, naming a file instrument. */
95 typedef unsigned int PFS_file_key;
96 /** Key, naming a stage instrument. */
97 typedef unsigned int PFS_stage_key;
98 /** Key, naming a statement instrument. */
99 typedef unsigned int PFS_statement_key;
100 /** Key, naming a transaction instrument. */
101 typedef unsigned int PFS_transaction_key;
102 /** Key, naming a socket instrument. */
103 typedef unsigned int PFS_socket_key;
104 /** Key, naming a memory instrument. */
105 typedef unsigned int PFS_memory_key;
106 
127 };
128 
129 /** User-defined instrument configuration. */
131  /* Instrument name. */
132  char *m_name;
133  /* Name length. */
135  /** Enabled flag. */
136  bool m_enabled;
137  /** Timed flag. */
138  bool m_timed;
139 };
140 
143 
144 struct PFS_thread;
145 
146 extern uint mutex_class_start;
147 extern uint rwlock_class_start;
148 extern uint cond_class_start;
149 extern uint file_class_start;
150 extern uint socket_class_start;
151 extern uint wait_class_max;
152 
153 /**
154  Encapsulates the name of an instrumented entity.
155 */
157  public:
158  static constexpr uint max_length = PFS_MAX_INFO_NAME_LENGTH - 1;
159  /*
160  DO NOT ACCESS THE DATA MEMBERS DIRECTLY. USE THE GETTERS AND
161  SETTTERS INSTEAD.
162 
163  The data members should really have been private, but having both
164  private and public members would make the class a non-POD. We
165  need to call memset on PFS_instr_class (in init_instr_class), and
166  the behavior of memset is undefined on non-POD objects. Therefore
167  we keep the data members public, with an underscore prefix, and
168  this warning text.
169  */
170  public /*private*/:
171  /** Instrument name. */
172  char m_private_name[max_length + 1];
173  /** Length in bytes of @c m_name. */
175  /** Old instrument name, if any. */
176  const char *m_private_old_name;
177  /** Length in bytes of old instrument name len, if any. */
179  /** The oldest version that uses the new name. */
181 
182  public:
183  /** Return the name as a string. */
184  const char *str() const;
185  /** Return the length of the string. */
186  uint length() const;
187  /**
188  Copy the specified name to this name.
189 
190  @param class_type The class type of this name, i.e., whether it is
191  the name of a mutex, thread, etc.
192 
193  @param name The buffer to read from.
194 
195  @param max_length_arg If is given, at most that many chars are
196  copied, plus the terminating '\0'. Otherwise, up to buffer_size-1
197  characters are copied, plus the terminating '\0'.
198  */
199  void set(PFS_class_type class_type, const char *name,
200  uint max_length_arg = max_length);
201 };
202 
203 /** Information for all instrumentation. */
205  /** Class type */
207  /** True if this instrument is enabled. */
208  bool m_enabled;
209  /** True if this instrument is timed. */
210  bool m_timed;
211  /** Instrument flags. */
213  /** Volatility index. */
215  /**
216  Instrument name index.
217  Self index in:
218  - EVENTS_WAITS_SUMMARY_*_BY_EVENT_NAME for waits
219  - EVENTS_STAGES_SUMMARY_*_BY_EVENT_NAME for stages
220  - EVENTS_STATEMENTS_SUMMARY_*_BY_EVENT_NAME for statements
221  - EVENTS_TRANSACTIONS_SUMMARY_*_BY_EVENT_NAME for transactions
222  */
224  /** Instrument name. */
226  /** Documentation. */
228 
229  bool is_singleton() const { return m_flags & PSI_FLAG_SINGLETON; }
230 
231  bool is_mutable() const { return m_flags & PSI_FLAG_MUTABLE; }
232 
233  bool is_progress() const { return m_flags & PSI_FLAG_STAGE_PROGRESS; }
234 
235  bool is_shared_exclusive() const { return m_flags & PSI_FLAG_RWLOCK_SX; }
236 
237  bool is_priority() const { return m_flags & PSI_FLAG_RWLOCK_PR; }
238 
239  bool is_transferable() const { return m_flags & PSI_FLAG_TRANSFER; }
240 
241  bool is_user() const { return m_flags & PSI_FLAG_USER; }
242 
244 
245  bool is_global() const { return m_flags & PSI_FLAG_ONLY_GLOBAL_STAT; }
246 
247  bool has_seqnum() const {
248  return (m_flags & (PSI_FLAG_SINGLETON | PSI_FLAG_NO_SEQNUM)) == 0;
249  }
250 
251  bool has_auto_seqnum() const { return m_flags & PSI_FLAG_AUTO_SEQNUM; }
252 
253  void enforce_valid_flags(uint allowed_flags) {
254  /* Reserved for future use. */
255  allowed_flags |= PSI_FLAG_THREAD | PSI_FLAG_TRANSFER;
256 
257  uint valid_flags = m_flags & allowed_flags;
258  /*
259  This fails when the instrumented code is providing
260  flags that are not supported for this instrument.
261  To fix it, clean up the instrumented code.
262  */
263  assert(valid_flags == m_flags);
264  m_flags = valid_flags;
265  }
266 
267  static void set_enabled(PFS_instr_class *pfs, bool enabled);
268  static void set_timed(PFS_instr_class *pfs, bool timed);
269 
270  bool is_deferred() const {
271  switch (m_type) {
272  case PFS_CLASS_SOCKET:
273  return true;
274  break;
275  default:
276  return false;
277  break;
278  };
279  }
280 
281  bool can_be_timed() const {
282  switch (m_type) {
283  case PFS_CLASS_MEMORY:
284  case PFS_CLASS_ERROR:
285  case PFS_CLASS_THREAD:
286  return false;
287  default:
288  return true;
289  };
290  }
291 };
292 
293 struct PFS_mutex;
294 
295 #define PFS_MUTEX_PARTITIONS 2
296 
297 /** Instrumentation metadata for a mutex. */
299  /** Mutex usage statistics. */
301  /** Singleton instance. */
303 };
304 
305 struct PFS_rwlock;
306 
307 /** Instrumentation metadata for a read write lock. */
309  /** Rwlock usage statistics. */
311  /** Singleton instance. */
313 };
314 
315 struct PFS_cond;
316 
317 /** Instrumentation metadata for a condition. */
319  /**
320  Condition usage statistics.
321  This statistic is not exposed in user visible tables yet.
322  */
324  /** Singleton instance. */
326 };
327 
328 /** Instrumentation metadata of a thread. */
330  /** Singleton instance. */
332  /** Thread history instrumentation flag. */
333  bool m_history{false};
334  /** Thread os name. */
335  char m_os_name[PFS_MAX_OS_NAME_LENGTH];
336  /** Thread instance sequence number counter. */
337  std::atomic<unsigned int> m_seqnum;
338 };
339 
340 /** Key identifying a table share. */
342  /**
343  Hash search key.
344  This has to be a string for @c LF_HASH,
345  the format is @c "<enum_object_type><schema_name><0x00><object_name><0x00>"
346  @see create_table_def_key
347  */
348  char m_hash_key[1 + NAME_LEN + 1 + NAME_LEN + 1];
349  /** Length in bytes of @c m_hash_key. */
351 };
352 
353 /** Table index or 'key' */
355  /** Index name */
357  /** Length in bytes of @c m_name. */
359 };
360 
361 /** Index statistics of a table.*/
364  /** The index name */
366  /** The index stat */
368  /** Owner table share. To be used later. */
370  /** Container page. */
371  PFS_opaque_container_page *m_page;
372 };
373 
374 /** Lock statistics of a table.*/
377  /** Lock stats. */
379  /** Owner table share. To be used later. */
381  /** Container page. */
382  PFS_opaque_container_page *m_page;
383 };
384 
385 /** Instrumentation metadata for a table share. */
387  public:
388  uint32 get_version() { return m_lock.get_version(); }
389 
391  return (enum_object_type)m_key.m_hash_key[0];
392  }
393 
394  void aggregate_io(void);
395  void aggregate_lock(void);
396 
397  void sum_io(PFS_single_stat *result, uint key_count);
398  void sum_lock(PFS_single_stat *result);
399  void sum(PFS_single_stat *result, uint key_count);
400 
401  inline void aggregate(void) {
402  aggregate_io();
403  aggregate_lock();
404  }
405 
406  inline void init_refcount(void) { m_refcount.store(1); }
407 
408  inline int get_refcount(void) { return m_refcount.load(); }
409 
410  inline void inc_refcount(void) { ++m_refcount; }
411 
412  inline void dec_refcount(void) { --m_refcount; }
413 
414  void refresh_setup_object_flags(PFS_thread *thread);
415 
416  /** Internal lock. */
418  /**
419  True if table instrumentation is enabled.
420  This flag is computed from the content of table setup_objects.
421  */
422  bool m_enabled;
423  /**
424  True if table instrumentation is timed.
425  This flag is computed from the content of table setup_objects.
426  */
427  bool m_timed;
428 
429  /** Search key. */
431  /** Schema name. */
432  const char *m_schema_name;
433  /** Length in bytes of @c m_schema_name. */
435  /** Table name. */
436  const char *m_table_name;
437  /** Length in bytes of @c m_table_name. */
439  /** Number of indexes. */
441  /** Container page. */
442  PFS_opaque_container_page *m_page;
443 
444  PFS_table_share_lock *find_lock_stat() const;
445  PFS_table_share_lock *find_or_create_lock_stat();
446  void destroy_lock_stat();
447 
448  PFS_table_share_index *find_index_stat(uint index) const;
449  PFS_table_share_index *find_or_create_index_stat(
450  const TABLE_SHARE *server_share, uint index);
451  void destroy_index_stats();
452 
453  private:
454  /** Number of opened table handles. */
455  std::atomic<int> m_refcount;
456  /** Table locks statistics. */
457  std::atomic<PFS_table_share_lock *> m_race_lock_stat;
458  /** Table indexes stats. */
459  std::atomic<PFS_table_share_index *> m_race_index_stat[MAX_INDEXES + 1];
460 };
461 
462 /** Statistics for the IDLE instrument. */
464 /** Statistics for dropped table I/O. */
466 /** Statistics for dropped table lock. */
468 /** Statistics for the METADATA instrument. */
470 /** Statistics for the transaction instrument. */
472 /** Statistics for the error instrument. */
474 
476  if (likely(count <= MAX_INDEXES)) {
477  return count;
478  }
479  return 0;
480 }
481 
482 #define GLOBAL_TABLE_IO_EVENT_INDEX 0
483 #define GLOBAL_TABLE_LOCK_EVENT_INDEX 1
484 #define GLOBAL_IDLE_EVENT_INDEX 2
485 #define GLOBAL_METADATA_EVENT_INDEX 3
486 /** Number of global wait events. */
487 #define COUNT_GLOBAL_EVENT_INDEX 4
488 
489 /** Transaction events are not wait events .*/
490 #define GLOBAL_TRANSACTION_INDEX 0
491 
492 #define GLOBAL_ERROR_INDEX 0
493 
494 /**
495  Instrument controlling all table I/O.
496  This instrument is used with table SETUP_OBJECTS.
497 */
499 
500 /**
501  Instrument controlling all table lock.
502  This instrument is used with table SETUP_OBJECTS.
503 */
505 
506 /**
507  Instrument controlling all idle waits.
508 */
510 
511 /**
512  Instrument controlling all metadata locks.
513 */
515 
516 /** Instrumentation metadata for an error. */
518 /**
519  Instrument controlling all server errors.
520 */
522 
523 struct PFS_file;
524 
525 /** Instrumentation metadata for a file. */
527  /** File usage statistics. */
529  /** Singleton instance. */
531 };
532 
533 /** Instrumentation metadata for a stage. */
535  /**
536  Length of the @c "stage/<component>/" prefix.
537  This is to extract @c "foo" from @c "stage/sql/foo".
538  */
540  /** Stage usage statistics. */
542 };
543 
544 /** Instrumentation metadata for a statement. */
546 
547 /** Instrumentation metadata for a transaction. */
549 
551 
552 struct PFS_socket;
553 
554 /** Instrumentation metadata for a socket. */
556  /** Socket usage statistics. */
558  /** Singleton instance. */
560 };
561 
562 /** Instrumentation metadata for a memory. */
564 
565 void init_event_name_sizing(const PFS_global_param *param);
566 
568 
569 int init_sync_class(uint mutex_class_sizing, uint rwlock_class_sizing,
570  uint cond_class_sizing);
571 
572 void cleanup_sync_class();
573 int init_thread_class(uint thread_class_sizing);
574 void cleanup_thread_class();
575 int init_table_share(uint table_share_sizing);
576 void cleanup_table_share();
577 
578 int init_table_share_lock_stat(uint table_stat_sizing);
582 
583 int init_table_share_index_stat(uint index_stat_sizing);
586  uint index);
588 
589 int init_table_share_hash(const PFS_global_param *param);
591 int init_file_class(uint file_class_sizing);
592 void cleanup_file_class();
593 int init_stage_class(uint stage_class_sizing);
594 void cleanup_stage_class();
595 int init_statement_class(uint statement_class_sizing);
597 int init_socket_class(uint socket_class_sizing);
598 void cleanup_socket_class();
599 int init_memory_class(uint memory_class_sizing);
600 void cleanup_memory_class();
601 
602 PFS_sync_key register_mutex_class(const char *name, uint name_length,
604 
605 PFS_sync_key register_rwlock_class(const char *name, uint name_length,
607 
608 PFS_sync_key register_cond_class(const char *name, uint name_length,
610 
611 PFS_thread_key register_thread_class(const char *name, uint name_length,
613 
614 PFS_file_key register_file_class(const char *name, uint name_length,
616 
617 PFS_stage_key register_stage_class(const char *name, uint prefix_length,
618  uint name_length, PSI_stage_info *info);
619 
620 PFS_statement_key register_statement_class(const char *name, uint name_length,
622 
623 PFS_socket_key register_socket_class(const char *name, uint name_length,
625 
626 PFS_memory_key register_memory_class(const char *name, uint name_length,
628 
657  PFS_transaction_class *unsafe);
658 
659 PFS_table_share *find_or_create_table_share(PFS_thread *thread, bool temporary,
660  const TABLE_SHARE *share);
662 void drop_table_share(PFS_thread *thread, bool temporary,
663  const char *schema_name, uint schema_name_length,
664  const char *table_name, uint table_name_length);
665 
667 
668 extern ulong mutex_class_max;
669 extern ulong mutex_class_lost;
670 extern ulong rwlock_class_max;
671 extern ulong rwlock_class_lost;
672 extern ulong cond_class_max;
673 extern ulong cond_class_lost;
674 extern ulong thread_class_max;
675 extern ulong thread_class_lost;
676 extern ulong file_class_max;
677 extern ulong file_class_lost;
678 extern ulong stage_class_max;
679 extern ulong stage_class_lost;
680 extern ulong statement_class_max;
681 extern ulong statement_class_lost;
682 extern ulong transaction_class_max;
683 extern ulong socket_class_max;
684 extern ulong socket_class_lost;
685 extern ulong memory_class_max;
686 extern ulong memory_class_lost;
687 extern ulong error_class_max;
688 
689 /* Exposing the data directly, for iterators. */
690 
695 
697 void reset_file_class_io();
698 void reset_socket_class_io();
699 
700 /** Update derived flags for all table shares. */
702 
703 /** Update derived flags for all stored procedure shares. */
705 
707 
708 /**
709  Get current time for GTID monitoring.
710 
711  @return my_getsystime() when PFS monitoring is enabled.
712  @return 0 when PFS monitoring is disabled.
713 */
715 
716 /** @} */
717 #endif
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:963
PFS_instr_class global_metadata_class
Instrument controlling all metadata locks.
Definition: pfs_instr_class.cc:184
LF_HASH table_share_hash
Hash index for instrumented table shares.
Definition: pfs_instr_class.cc:197
PFS_sync_key register_rwlock_class(const char *name, uint name_length, PSI_rwlock_info *info)
Register a rwlock instrumentation metadata.
Definition: pfs_instr_class.cc:1181
PFS_thread_class * sanitize_thread_class(PFS_thread_class *unsafe)
Definition: pfs_instr_class.cc:1384
uint socket_class_start
Definition: pfs_instr_class.cc:231
void cleanup_table_share_index_stat(void)
Cleanup the table stat buffers.
Definition: pfs_instr_class.cc:796
PFS_socket_class * sanitize_socket_class(PFS_socket_class *unsafe)
Definition: pfs_instr_class.cc:1617
unsigned int PFS_transaction_key
Key, naming a transaction instrument.
Definition: pfs_instr_class.h:101
PFS_rwlock_class * find_rwlock_class(PFS_sync_key key)
Find a rwlock instrumentation class by key.
Definition: pfs_instr_class.cc:1288
ulong error_class_max
Number of error classes.
Definition: pfs_instr_class.cc:158
PFS_socket_key register_socket_class(const char *name, uint name_length, PSI_socket_info *info)
Register a socket instrumentation metadata.
Definition: pfs_instr_class.cc:1573
void cleanup_sync_class(void)
Cleanup the instrument synch class buffers.
Definition: pfs_instr_class.cc:399
ulong stage_class_max
Size of the stage class array.
Definition: pfs_instr_class.cc:130
PFS_stage_key register_stage_class(const char *name, uint prefix_length, uint name_length, PSI_stage_info *info)
Register a stage instrumentation metadata.
Definition: pfs_instr_class.cc:1439
unsigned int PFS_file_key
Key, naming a file instrument.
Definition: pfs_instr_class.h:95
unsigned int PFS_sync_key
Key, naming a synch instrument (mutex, rwlock, cond).
Definition: pfs_instr_class.h:91
PFS_rwlock_class * rwlock_class_array
Definition: pfs_instr_class.cc:161
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.
Definition: pfs_instr_class.cc:1982
int init_table_share(uint table_share_sizing)
Initialize the table share buffer.
Definition: pfs_instr_class.cc:484
ulonglong gtid_monitoring_getsystime()
Get current time for GTID monitoring.
Definition: pfs_instr_class.cc:2083
PFS_instr_class global_table_lock_class
Instrument controlling all table lock.
Definition: pfs_instr_class.cc:182
uint mutex_class_start
Definition: pfs_instr_class.cc:226
PFS_instr_class global_idle_class
Instrument controlling all idle waits.
Definition: pfs_instr_class.cc:183
ulong thread_class_max
Size of the thread class array.
Definition: pfs_instr_class.cc:122
ulong socket_class_lost
Number of socket class lost.
Definition: pfs_instr_class.cc:140
PFS_table_share * find_or_create_table_share(PFS_thread *thread, bool temporary, const TABLE_SHARE *share)
Find or create a table share instrumentation.
Definition: pfs_instr_class.cc:1787
PFS_instr_class * find_metadata_class(uint index)
Definition: pfs_instr_class.cc:1708
uint sanitize_index_count(uint count)
Definition: pfs_instr_class.h:475
ulong socket_class_max
Size of the socket class array.
Definition: pfs_instr_class.cc:138
unsigned int PFS_socket_key
Key, naming a socket instrument.
Definition: pfs_instr_class.h:103
void reset_file_class_io(void)
Reset the I/O statistics per file class.
Definition: pfs_instr_class.cc:2028
ulong rwlock_class_lost
Number of rwlock class lost.
Definition: pfs_instr_class.cc:116
void cleanup_file_class(void)
Cleanup the file class buffers.
Definition: pfs_instr_class.cc:826
int init_table_share_lock_stat(uint table_stat_sizing)
Initialize the table lock stat buffer.
Definition: pfs_instr_class.cc:700
PFS_stage_class * sanitize_stage_class(PFS_stage_class *unsafe)
Definition: pfs_instr_class.cc:1547
PFS_cond_class * find_cond_class(PFS_sync_key key)
Find a condition instrumentation class by key.
Definition: pfs_instr_class.cc:1302
Prealloced_array< PFS_instr_config *, 10 > Pfs_instr_config_array
Definition: pfs_instr_class.h:141
int init_file_class(uint file_class_sizing)
Initialize the file class buffer.
Definition: pfs_instr_class.cc:805
uint length() const
Return the length of the string.
Definition: pfs_instr_class.cc:242
PFS_file_key register_file_class(const char *name, uint name_length, PSI_file_info *info)
Register a file instrumentation metadata.
Definition: pfs_instr_class.cc:1396
Pfs_instr_config_array * pfs_instr_config_array
PFS_INSTRUMENT option settings array.
Definition: pfs_instr_class.cc:87
void cleanup_socket_class(void)
Cleanup the socket class buffers.
Definition: pfs_instr_class.cc:952
ulong memory_class_lost
Number of memory class lost.
Definition: pfs_instr_class.cc:144
ulong statement_class_lost
Number of statement class lost.
Definition: pfs_instr_class.cc:136
PFS_stage_class * find_stage_class(PFS_stage_key key)
Find a stage instrumentation class by key.
Definition: pfs_instr_class.cc:1543
uint cond_class_start
Definition: pfs_instr_class.cc:228
PFS_statement_class * find_statement_class(PFS_stage_key key)
Find a statement instrumentation class by key.
Definition: pfs_instr_class.cc:1557
ulong cond_class_max
Size of the condition class array.
Definition: pfs_instr_class.cc:118
ulong mutex_class_lost
Number of mutex class lost.
Definition: pfs_instr_class.cc:112
PFS_statement_class * sanitize_statement_class(PFS_statement_class *unsafe)
Definition: pfs_instr_class.cc:1561
unsigned int PFS_memory_key
Key, naming a memory instrument.
Definition: pfs_instr_class.h:105
PFS_table_lock_stat global_table_lock_stat
Statistics for dropped table lock.
Definition: pfs_instr_class.cc:177
void register_global_classes()
Definition: pfs_instr_class.cc:298
ulong memory_class_max
Size of the memory class array.
Definition: pfs_instr_class.cc:142
void cleanup_stage_class(void)
Cleanup the stage class buffers.
Definition: pfs_instr_class.cc:868
uint wait_class_max
Definition: pfs_instr_class.cc:230
PFS_table_share_lock * create_table_share_lock_stat()
Create a table share lock instrumentation.
Definition: pfs_instr_class.cc:712
PFS_transaction_class * find_transaction_class(uint index)
Definition: pfs_instr_class.cc:1736
PFS_statement_key register_statement_class(const char *name, uint name_length, PSI_statement_info *info)
Register a statement instrumentation metadata.
Definition: pfs_instr_class.cc:1490
void update_table_share_derived_flags(PFS_thread *thread)
Update derived flags for all table shares.
Definition: pfs_instr_class.cc:2060
ulong stage_class_lost
Number of stage class lost.
Definition: pfs_instr_class.cc:132
bool pfs_processlist_enabled
Global flag used to enable and disable SHOW PROCESSLIST in the performance schema.
Definition: pfs_instr_class.cc:75
PFS_thread_key register_thread_class(const char *name, uint name_length, PSI_thread_info *info)
Register a thread instrumentation metadata.
Definition: pfs_instr_class.cc:1317
PFS_cond_class * sanitize_cond_class(PFS_cond_class *unsafe)
Definition: pfs_instr_class.cc:1306
PFS_instr_class * sanitize_idle_class(PFS_instr_class *unsafe)
Definition: pfs_instr_class.cc:1701
PFS_error_stat global_error_stat
Statistics for the error instrument.
Definition: pfs_instr_class.cc:180
PFS_thread_class * find_thread_class(PFS_sync_key key)
Find a thread instrumentation class by key.
Definition: pfs_instr_class.cc:1380
PFS_table_io_stat global_table_io_stat
Statistics for dropped table I/O.
Definition: pfs_instr_class.cc:176
void cleanup_table_share(void)
Cleanup the table share buffers.
Definition: pfs_instr_class.cc:493
PFS_sync_key register_cond_class(const char *name, uint name_length, PSI_cond_info *info)
Register a condition instrumentation metadata.
Definition: pfs_instr_class.cc:1229
PFS_instr_class * sanitize_metadata_class(PFS_instr_class *unsafe)
Definition: pfs_instr_class.cc:1715
PFS_mutex_class * sanitize_mutex_class(PFS_mutex_class *unsafe)
Definition: pfs_instr_class.cc:1278
PFS_error_class global_error_class
Instrument controlling all server errors.
Definition: pfs_instr_class.cc:185
uint file_class_start
Definition: pfs_instr_class.cc:229
PFS_transaction_stat global_transaction_stat
Statistics for the transaction instrument.
Definition: pfs_instr_class.cc:179
PFS_cond_class * cond_class_array
Definition: pfs_instr_class.cc:162
PFS_rwlock_class * sanitize_rwlock_class(PFS_rwlock_class *unsafe)
Definition: pfs_instr_class.cc:1292
ulong file_class_lost
Number of file class lost.
Definition: pfs_instr_class.cc:128
int init_stage_class(uint stage_class_sizing)
Initialize the stage class buffer.
Definition: pfs_instr_class.cc:847
void cleanup_table_share_hash(void)
Cleanup the table share hash table.
Definition: pfs_instr_class.cc:521
PFS_instr_class * find_idle_class(uint index)
Definition: pfs_instr_class.cc:1694
void cleanup_memory_class(void)
Cleanup the memory class buffers.
Definition: pfs_instr_class.cc:994
int init_thread_class(uint thread_class_sizing)
Initialize the thread class buffer.
Definition: pfs_instr_class.cc:442
void cleanup_statement_class(void)
Cleanup the statement class buffers.
Definition: pfs_instr_class.cc:910
void init_event_name_sizing(const PFS_global_param *param)
Definition: pfs_instr_class.cc:288
int init_socket_class(uint socket_class_sizing)
Initialize the socket class buffer.
Definition: pfs_instr_class.cc:931
PFS_socket_class * find_socket_class(PFS_socket_key key)
Find a socket instrumentation class by key.
Definition: pfs_instr_class.cc:1613
void update_program_share_derived_flags(PFS_thread *thread)
Update derived flags for all stored procedure shares.
Definition: pfs_instr_class.cc:2078
PFS_error_class * find_error_class(uint index)
Definition: pfs_instr_class.cc:1722
PFS_file_class * sanitize_file_class(PFS_file_class *unsafe)
Definition: pfs_instr_class.cc:1534
unsigned int PFS_stage_key
Key, naming a stage instrument.
Definition: pfs_instr_class.h:97
std::atomic< uint32 > pfs_unload_plugin_ref_count
Global ref count for plugin and component events.
int init_statement_class(uint statement_class_sizing)
Initialize the statement class buffer.
Definition: pfs_instr_class.cc:889
ulong file_class_max
Size of the file class array.
Definition: pfs_instr_class.cc:126
ulong thread_class_lost
Number of thread class lost.
Definition: pfs_instr_class.cc:124
void reset_events_waits_by_class()
Reset the wait statistics per instrument class.
Definition: pfs_instr_class.cc:2018
PFS_table_share * sanitize_table_share(PFS_table_share *unsafe)
Sanitize an unsafe table_share pointer.
Definition: pfs_instr_class.cc:2013
void cleanup_table_share_lock_stat(void)
Cleanup the table stat buffers.
Definition: pfs_instr_class.cc:737
PFS_memory_key register_memory_class(const char *name, uint name_length, PSI_memory_info *info)
Register a memory instrumentation metadata.
Definition: pfs_instr_class.cc:1629
PFS_transaction_class global_transaction_class
Definition: pfs_instr_class.cc:186
unsigned int PFS_statement_key
Key, naming a statement instrument.
Definition: pfs_instr_class.h:99
PFS_single_stat global_idle_stat
Statistics for the IDLE instrument.
Definition: pfs_instr_class.cc:175
unsigned int PFS_thread_key
Key, naming a thread instrument.
Definition: pfs_instr_class.h:93
int init_table_share_index_stat(uint index_stat_sizing)
Initialize table index stat buffer.
Definition: pfs_instr_class.cc:746
PFS_sync_key register_mutex_class(const char *name, uint name_length, PSI_mutex_info *info)
Register a mutex instrumentation metadata.
Definition: pfs_instr_class.cc:1084
PFS_memory_class * sanitize_memory_class(PFS_memory_class *unsafe)
Definition: pfs_instr_class.cc:1671
void reset_socket_class_io(void)
Reset the I/O statistics per socket class.
Definition: pfs_instr_class.cc:2038
bool pfs_enabled
Global performance schema flag.
Definition: pfs_instr_class.cc:67
uint rwlock_class_start
Definition: pfs_instr_class.cc:227
PFS_class_type
Definition: pfs_instr_class.h:107
PFS_error_class * sanitize_error_class(PFS_instr_class *unsafe)
ulong mutex_class_max
Size of the mutex class array.
Definition: pfs_instr_class.cc:110
PFS_single_stat global_metadata_stat
Statistics for the METADATA instrument.
Definition: pfs_instr_class.cc:178
ulong statement_class_max
Size of the statement class array.
Definition: pfs_instr_class.cc:134
const char * str() const
Return the name as a string.
Definition: pfs_instr_class.cc:233
PFS_instr_class global_table_io_class
Instrument controlling all table I/O.
Definition: pfs_instr_class.cc:181
PFS_instr_class * sanitize_table_class(PFS_instr_class *unsafe)
Definition: pfs_instr_class.cc:1686
int init_table_share_hash(const PFS_global_param *param)
Initialize the table share hash table.
Definition: pfs_instr_class.cc:511
ulong rwlock_class_max
Size of the rwlock class array.
Definition: pfs_instr_class.cc:114
void set(PFS_class_type class_type, const char *name, uint max_length_arg=max_length)
Copy the specified name to this name.
Definition: pfs_instr_class.cc:270
ulong cond_class_lost
Number of condition class lost.
Definition: pfs_instr_class.cc:120
PFS_memory_class * find_memory_class(PFS_memory_key key)
Find a memory instrumentation class by key.
Definition: pfs_instr_class.cc:1667
PFS_transaction_class * sanitize_transaction_class(PFS_transaction_class *unsafe)
Definition: pfs_instr_class.cc:1743
ulong transaction_class_max
Number of transaction classes.
Definition: pfs_instr_class.cc:151
int init_memory_class(uint memory_class_sizing)
Initialize the memory class buffer.
Definition: pfs_instr_class.cc:973
static constexpr uint max_length
Definition: pfs_instr_class.h:158
void release_table_share_lock_stat(PFS_table_share_lock *pfs)
Release a table share lock instrumentation.
Definition: pfs_instr_class.cc:730
void cleanup_thread_class(void)
Cleanup the thread class buffers.
Definition: pfs_instr_class.cc:463
void release_table_share_index_stat(PFS_table_share_index *pfs)
Release a table share index instrumentation.
Definition: pfs_instr_class.cc:789
PFS_mutex_class * mutex_class_array
Definition: pfs_instr_class.cc:160
PFS_instr_class * find_table_class(uint index)
Definition: pfs_instr_class.cc:1676
PFS_table_share_index * create_table_share_index_stat(const TABLE_SHARE *server_share, uint server_index)
Create a table share index instrumentation.
Definition: pfs_instr_class.cc:758
int init_sync_class(uint mutex_class_sizing, uint rwlock_class_sizing, uint cond_class_sizing)
Initialize the instrument synch class buffers.
Definition: pfs_instr_class.cc:354
PFS_mutex_class * find_mutex_class(PFS_sync_key key)
Find a mutex instrumentation class by key.
Definition: pfs_instr_class.cc:1274
PFS_file_class * file_class_array
Definition: pfs_instr_class.cc:204
PFS_file_class * find_file_class(PFS_file_key key)
Find a file instrumentation class by key.
Definition: pfs_instr_class.cc:1530
@ PFS_CLASS_MAX
Definition: pfs_instr_class.h:126
@ PFS_CLASS_IDLE
Definition: pfs_instr_class.h:120
@ PFS_CLASS_LAST
Definition: pfs_instr_class.h:125
@ PFS_CLASS_MUTEX
Definition: pfs_instr_class.h:109
@ PFS_CLASS_STAGE
Definition: pfs_instr_class.h:114
@ PFS_CLASS_NONE
Definition: pfs_instr_class.h:108
@ PFS_CLASS_TABLE
Definition: pfs_instr_class.h:113
@ PFS_CLASS_TABLE_LOCK
Definition: pfs_instr_class.h:119
@ PFS_CLASS_FILE
Definition: pfs_instr_class.h:112
@ PFS_CLASS_TABLE_IO
Definition: pfs_instr_class.h:118
@ PFS_CLASS_METADATA
Definition: pfs_instr_class.h:122
@ PFS_CLASS_RWLOCK
Definition: pfs_instr_class.h:110
@ PFS_CLASS_COND
Definition: pfs_instr_class.h:111
@ PFS_CLASS_MEMORY
Definition: pfs_instr_class.h:121
@ PFS_CLASS_THREAD
Definition: pfs_instr_class.h:124
@ PFS_CLASS_ERROR
Definition: pfs_instr_class.h:123
@ PFS_CLASS_STATEMENT
Definition: pfs_instr_class.h:115
@ PFS_CLASS_SOCKET
Definition: pfs_instr_class.h:117
@ PFS_CLASS_TRANSACTION
Definition: pfs_instr_class.h:116
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_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:206
Header for compiler-dependent features.
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
Log info(cout, "NOTE")
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:197
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:64
#define PFS_MAX_INFO_NAME_LENGTH
Maximum length of an instrument name.
Definition: pfs_instr_class.h:56
Performance schema internal locks (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:62
case opt name
Definition: sslopt-case.h:32
Definition: lf.h:181
Instrumentation metadata for a condition.
Definition: pfs_instr_class.h:318
PFS_cond_stat m_cond_stat
Condition usage statistics.
Definition: pfs_instr_class.h:323
PFS_cond * m_singleton
Singleton instance.
Definition: pfs_instr_class.h:325
Statistics for conditions usage.
Definition: pfs_stat.h:237
Instrumented condition implementation.
Definition: pfs_instr.h:158
Instrumentation metadata for an error.
Definition: pfs_instr_class.h:517
Statistics for all server errors.
Definition: pfs_stat.h:531
Instrumentation metadata for a file.
Definition: pfs_instr_class.h:526
PFS_file * m_singleton
Singleton instance.
Definition: pfs_instr_class.h:530
PFS_file_stat m_file_stat
File usage statistics.
Definition: pfs_instr_class.h:528
Statistics for FILE usage.
Definition: pfs_stat.h:307
Instrumented File and FILE implementation.
Definition: pfs_instr.h:175
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:270
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 is_progress() const
Definition: pfs_instr_class.h:233
bool can_be_timed() const
Definition: pfs_instr_class.h:281
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:253
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:563
Instrumentation metadata for a mutex.
Definition: pfs_instr_class.h:298
PFS_mutex_stat m_mutex_stat
Mutex usage statistics.
Definition: pfs_instr_class.h:300
PFS_mutex * m_singleton
Singleton instance.
Definition: pfs_instr_class.h:302
Statistics for mutex usage.
Definition: pfs_stat.h:176
Instrumented mutex implementation.
Definition: pfs_instr.h:99
Instrumentation metadata for a read write lock.
Definition: pfs_instr_class.h:308
PFS_rwlock * m_singleton
Singleton instance.
Definition: pfs_instr_class.h:312
PFS_rwlock_stat m_rwlock_stat
Rwlock usage statistics.
Definition: pfs_instr_class.h:310
Statistics for rwlock usage.
Definition: pfs_stat.h:203
Instrumented rwlock implementation.
Definition: pfs_instr.h:125
Single statistic.
Definition: pfs_stat.h:51
Instrumentation metadata for a socket.
Definition: pfs_instr_class.h:555
PFS_socket_stat m_socket_stat
Socket usage statistics.
Definition: pfs_instr_class.h:557
PFS_socket * m_singleton
Singleton instance.
Definition: pfs_instr_class.h:559
Statistics for SOCKET usage.
Definition: pfs_stat.h:849
Instrumented socket implementation.
Definition: pfs_instr.h:287
Instrumentation metadata for a stage.
Definition: pfs_instr_class.h:534
uint m_prefix_length
Length of the "stage/<component>/" prefix.
Definition: pfs_instr_class.h:539
PFS_stage_stat m_stage_stat
Stage usage statistics.
Definition: pfs_instr_class.h:541
Statistics for stage usage.
Definition: pfs_stat.h:322
Instrumentation metadata for a statement.
Definition: pfs_instr_class.h:545
Single table I/O statistic.
Definition: pfs_stat.h:620
Table index or 'key'.
Definition: pfs_instr_class.h:354
uint m_name_length
Length in bytes of m_name.
Definition: pfs_instr_class.h:358
char m_name[NAME_LEN]
Index name.
Definition: pfs_instr_class.h:356
Statistics for table locks.
Definition: pfs_stat.h:682
Index statistics of a table.
Definition: pfs_instr_class.h:362
PFS_table_key m_key
The index name.
Definition: pfs_instr_class.h:365
PFS_table_io_stat m_stat
The index stat.
Definition: pfs_instr_class.h:367
pfs_lock m_lock
Definition: pfs_instr_class.h:363
PFS_table_share * m_owner
Owner table share.
Definition: pfs_instr_class.h:369
PFS_opaque_container_page * m_page
Container page.
Definition: pfs_instr_class.h:371
Key identifying a table share.
Definition: pfs_instr_class.h:341
uint m_key_length
Length in bytes of m_hash_key.
Definition: pfs_instr_class.h:350
char m_hash_key[1+NAME_LEN+1+NAME_LEN+1]
Hash search key.
Definition: pfs_instr_class.h:348
Lock statistics of a table.
Definition: pfs_instr_class.h:375
PFS_opaque_container_page * m_page
Container page.
Definition: pfs_instr_class.h:382
pfs_lock m_lock
Definition: pfs_instr_class.h:376
PFS_table_share * m_owner
Owner table share.
Definition: pfs_instr_class.h:380
PFS_table_lock_stat m_stat
Lock stats.
Definition: pfs_instr_class.h:378
Instrumentation metadata for a table share.
Definition: pfs_instr_class.h:386
PFS_table_share_key m_key
Search key.
Definition: pfs_instr_class.h:430
std::atomic< PFS_table_share_lock * > m_race_lock_stat
Table locks statistics.
Definition: pfs_instr_class.h:457
void dec_refcount(void)
Definition: pfs_instr_class.h:412
enum_object_type get_object_type()
Definition: pfs_instr_class.h:390
uint32 get_version()
Definition: pfs_instr_class.h:388
void inc_refcount(void)
Definition: pfs_instr_class.h:410
bool m_timed
True if table instrumentation is timed.
Definition: pfs_instr_class.h:427
bool m_enabled
True if table instrumentation is enabled.
Definition: pfs_instr_class.h:422
PFS_opaque_container_page * m_page
Container page.
Definition: pfs_instr_class.h:442
uint m_table_name_length
Length in bytes of m_table_name.
Definition: pfs_instr_class.h:438
void init_refcount(void)
Definition: pfs_instr_class.h:406
const char * m_table_name
Table name.
Definition: pfs_instr_class.h:436
int get_refcount(void)
Definition: pfs_instr_class.h:408
std::atomic< int > m_refcount
Number of opened table handles.
Definition: pfs_instr_class.h:455
uint m_key_count
Number of indexes.
Definition: pfs_instr_class.h:440
const char * m_schema_name
Schema name.
Definition: pfs_instr_class.h:432
void aggregate(void)
Definition: pfs_instr_class.h:401
uint m_schema_name_length
Length in bytes of m_schema_name.
Definition: pfs_instr_class.h:434
pfs_lock m_lock
Internal lock.
Definition: pfs_instr_class.h:417
Instrumentation metadata of a thread.
Definition: pfs_instr_class.h:329
PFS_thread * m_singleton
Singleton instance.
Definition: pfs_instr_class.h:331
std::atomic< unsigned int > m_seqnum
Thread instance sequence number counter.
Definition: pfs_instr_class.h:337
Instrumented thread implementation.
Definition: pfs_instr.h:373
Instrumentation metadata for a transaction.
Definition: pfs_instr_class.h:548
Statistics for transaction usage.
Definition: pfs_stat.h:433
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:110
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
Definition: result.h:29
unsigned int uint
Definition: uca-dump.cc:29