SlideShare a Scribd company logo
1 of 160
Download to read offline
MySQL Performance Schema in Action
October, 13, 2018
Sveta Smirnova
•Internal Diagnostic in MySQL
•Performance Schema Configuration
•5.6+: Statements Instrumentation
•5.7+: Prepared Statements
•5.7+: Stored Routines Instrumentation
•5.7+: Locks Diagnostic
•5.7+: Memory Usage
•5.7+: Replication
•5.7+: Variables
•8.0+: Errors Summary
Table of Contents
2
• MySQL Support engineer
• Author of
• MySQL Troubleshooting
• JSON UDF functions
• FILTER clause for MySQL
• Speaker
• Percona Live, OOW, Fosdem,
DevConf, HighLoad...
Sveta Smirnova
3
Internal Diagnostic in MySQL
•
INFORMATION SCHEMA
• SHOW commands
• Metadata
• Storage engine extentions
Runtime
Can be anything
Old Style
5
•
INFORMATION SCHEMA
• SHOW commands
• Status variables
• Runtime
Old Style
5
•
INFORMATION SCHEMA
• SHOW commands
• Status variables
• Administration statements
•
ANALYZE
• EXPLAIN
• CHECK
Old Style
5
•
INFORMATION SCHEMA
• SHOW commands
• Status variables
• Administration statements
•
No or limited information on
•
Performance
•
Internal server operations
Old Style
5
• Introduced in version 5.5
Performance Schema
6
• Introduced in version 5.5
• Runtime performances statistics
Performance Schema
6
• Introduced in version 5.5
• Runtime performances statistics
• Wraps the diagnosed code
locker = PSI_RWLOCK_CALL(start_rwlock_wrwait)(
&state, lock->pfs_psi, PSI_RWLOCK_TRYEXCLUSIVELOCK,
file_name, static_cast<uint>(line));
ret = rw_lock_x_lock_func_nowait(lock, file_name, line);
if (locker != NULL)
PSI_RWLOCK_CALL(end_rwlock_wrwait)(
locker, static_cast<int>(ret));
Performance Schema
6
How Does Performance Schema Works?
7
Instruments: Get the Data
8
Consumers: Store the Data
9
• Must be supported by the component
• Collects data only after they are enabled
• Never frees allocated memory
Performance Schema Limitations
10
• Views on Performance Schema tables
• Stored routines
sys Schema
11
• Views on Performance Schema tables
• Stored routines
• Easier configuration
• Shortcuts to typical use cases
sys Schema
11
• Views on Performance Schema tables
• Stored routines
• Easier configuration
• Shortcuts to typical use cases
• 5.7+: Installed by default
•
Before: github.com/mysql/mysql-sys
sys Schema
11
• Statements
• Locks
• Memory Usage
• Replication
•
Variables
•
Errors
What will We Discuss Today?
12
Performance Schema Configuration
5.6
• 52 tables
• 561 instrs
589 Percona Server
• 31 variables
5.7
• 87 tables
• 1029 instrs
1067 Percona Server
•
42 variables
8.0
• 102 tables
• 1202 instrs
1229 Percona Server
•
44 variables
What is Inside?
14
• Defaults
• ON
5.7: Only global, thread, statements and transactions
instrumentation
8.0: Memory and MDL
Performance Schema Defaults
15
• Defaults
• ON
5.7: Only global, thread, statements and transactions
instrumentation
8.0: Memory and MDL
• All other instruments/consumers disabled
Performance Schema Defaults
15
• Turn required instrumentation ON
Prepare
16
• Turn required instrumentation ON
• Use a pattern
update performance_schema.setup_consumers set enabled=’yes’
where name like ’OUR_REQUIREMENT_%’;
update performance_schema.setup_instruments set enabled=’yes’, timed=’yes’
where name like ’OUR_REQUIREMENT_%’;
Prepare
16
• Turn required instrumentation ON
• Or easier
call sys.ps_setup_enable_consumer(YOUR_CONSUMER);
call sys.ps_setup_enable_instrument(YOUR_INSTRUMENT);
Prepare
16
• Turn required instrumentation ON
• Be careful!
•
They are memory and CPU intensive
• Do not turn them all ON until needed
Prepare
16
5.6+: Statements Instrumentation
• Instruments
mysql> select name from setup_instruments where name like ’statement%’;
+-----------------------------------------------+
| name |
+-----------------------------------------------+
| statement/sql/select |
| statement/sql/create_table |
| statement/sql/create_index |
| statement/sql/alter_table |
| statement/sql/update |
| statement/sql/insert |
| statement/sql/insert_select |
| statement/sql/delete |
...
• Enable those you want to examine
Statements: configuration
18
• Instruments
• Consumers
mysql> select name from setup_consumers where name like ’%statement%’;
+--------------------------------+
| name |
+--------------------------------+
| events_statements_current | -- Current statements
| events_statements_history | -- Last 10 statements
| events_statements_history_long | -- Last 1K statements
| statements_digest | -- Digests
+--------------------------------+
4 rows in set (0.00 sec)
Statements: configuration
18
• Why statements are slow?
•
Examine more rows than return/change
• Use disk instead of memory
• Full table scan instead of index
• This is not full list!
What Can We Discover?
19
• Why statements are slow?
• Performance Schema has
•
Per-query statistics
• Most evolving stages
What Can We Discover?
19
• events statements * and
prepared statements instances tables
• Important field names
CREATED TMP DISK TABLES
CREATED TMP TABLES
SELECT FULL JOIN
SELECT RANGE CHECK
SELECT SCAN
SORT MERGE PASSES
SORT SCAN
Why Statements are Slow?
20
• events statements * and
prepared statements instances tables
• Views in sys schema
• Important view names
statement analysis
statements with full table scans
statements with runtimes in 95th percentile
statements with sorting
statements with temp tables
statements with errors or warnings
Why Statements are Slow?
20
• events statements * and
prepared statements instances tables
• Views in sys schema
•
Digest tables
• Combined statistics
events statements summary by account by event name
events statements summary by host by event name
events statements summary by thread by event name
events statements summary by user by event name
events statements summary global by event name
5.7+: events statements summary by program
Why Statements are Slow?
20
• events statements * and
prepared statements instances tables
• Views in sys schema
•
Digest tables
•
Histogram Summary
events statements histogram by digest
events statements histogram global
Do NOT mix with Optimizer histograms!
Why Statements are Slow?
20
• events statements * and
prepared statements instances tables
• Views in sys schema
•
Digest tables
• events statements summary by digest
SCHEMA NAME
DIGEST
DIGEST TEXT
8.0+: QUERY SAMPLE TEXT
Why Statements are Slow?
20
mysql> SELECT THREAD_ID TID, SUBSTR(SQL_TEXT, 1, 50) SQL_TEXT, ROWS_SENT RS,
-> ROWS_EXAMINED RE,CREATED_TMP_TABLES,NO_INDEX_USED,NO_GOOD_INDEX_USED
-> FROM performance_schema.events_statements_history
-> WHERE NO_INDEX_USED=1 OR NO_GOOD_INDEX_USED=1G
********************** 1. row **********************
TID: 10124
SQL_TEXT: select emp_no, first_name, last_name from employee
RS: 97750
RE: 397774
CREATED_TMP_TABLES: 0
NO_INDEX_USED: 1
NO_GOOD_INDEX_USED: 0
...
Which Queries Do Not Use Indexes?
21
mysql> SELECT query, total_latency, no_index_used_count, rows_sent,
-> rows_examined
-> FROM sys.statements_with_full_table_scans
-> WHERE db=’employees’ AND query NOT LIKE ’%performance_schema%’G
********************** 1. row **********************
query: SELECT COUNT ( ‘emp_no‘ ) FROM ... ‘emp_no‘ )
WHERE ‘title‘ = ?
total_latency: 805.37 ms
no_index_used_count: 1
rows_sent: 1
rows_examined: 397774
...
Take it Easy: Index Usage with sys Schema
22
mysql> select DIGEST, DIGEST_TEXT, COUNT_STAR, SUM_CREATED_TMP_DISK_TABLES,
-> SUM_SELECT_FULL_JOIN, SUM_SELECT_RANGE , SUM_SELECT_SCAN , SUM_NO_INDEX_USED,
-> SUM_ROWS_SENT, SUM_ROWS_EXAMINED
-> from events_statements_summary_by_digest where SUM_NO_INDEX_USED > 0G
*************************** 1. row ***************************
DIGEST: 3884185b07312b354c4918f2368d8fe2c431aeb8e39bf8ff5c3dcc6837c335a7
DIGEST_TEXT: SELECT ‘c‘ FROM ‘sbtest1‘ WHERE ‘id‘ BETWEEN ? AND ?
COUNT_STAR: 1501791
SUM_CREATED_TMP_DISK_TABLES: 0
SUM_SELECT_FULL_JOIN: 0
SUM_SELECT_RANGE: 1501840
SUM_SELECT_SCAN: 4
SUM_NO_INDEX_USED: 4
SUM_ROWS_SENT: 150872400
SUM_ROWS_EXAMINED: 152872000
...
Take it Easy: with Digest Tables
23
Statements: demo
24
• events stages * tables
Statements Deep Dive
25
• events stages * tables
• Same information as in table
INFORMATION SCHEMA.PROCESSLIST or SHOW
PROCESSLIST output
•
init
• executing
• Opening tables
Statements Deep Dive
25
• events stages * tables
• Same information as in table
INFORMATION SCHEMA.PROCESSLIST or SHOW
PROCESSLIST output
•
init
• executing
• Opening tables
• Replacement for SHOW PROFILE
Statements Deep Dive
25
• events stages * tables
• Same information as in table
INFORMATION SCHEMA.PROCESSLIST or SHOW
PROCESSLIST output
•
init
• executing
• Opening tables
• Replacement for SHOW PROFILE
• Only server-level
•
No storage engine information!
Statements Deep Dive
25
• Instruments
mysql> select name from setup_instruments where name like ’stage%’;
+----------------------------------------------------------------------------+
| name |
+----------------------------------------------------------------------------+
| stage/sql/After create |
| stage/sql/allocating local table |
| stage/sql/preparing for alter table |
| stage/sql/altering table |
| stage/sql/committing alter table to storage engine |
| stage/sql/Changing master |
| stage/sql/Checking master version
...
• Enable those you want to examine
Stages: configuration
26
• Instruments
• Consumers
mysql> select name from setup_consumers where name like ’%stage%’;
+----------------------------+
| name |
+----------------------------+
| events_stages_current | -- Current stages
| events_stages_history | -- Last 10 stages
| events_stages_history_long | -- Last 1K stages
+----------------------------+
3 rows in set (0.00 sec)
Stages: configuration
26
•
Everything, related to temporary tables
•
EVENT NAME LIKE ’stage/sql/%tmp%’
• Everything, related to locks
• EVENT NAME LIKE ’stage/sql/%lock%’
• Everything in state ”Waiting for”
• EVENT NAME LIKE ’stage/%/Waiting for%’
• Frequently met issues
Stages Shortcuts
27
•
Everything, related to temporary tables
• Everything, related to locks
• Everything in state ”Waiting for”
• Frequently met issues
• EVENT NAME=’stage/sql/freeing items’
• EVENT NAME=’stage/sql/Sending data’
•
EVENT NAME=’stage/sql/cleaning up’
• EVENT NAME=’stage/sql/closing tables’
• EVENT NAME=’stage/sql/end’
Stages Shortcuts
27
mysql> SELECT eshl.event_name, sql_text, eshl.timer_wait/1000000000000 w_s
-> FROM performance_schema.events_stages_history_long eshl
-> JOIN performance_schema.events_statements_history_long esthl
-> ON (eshl.nesting_event_id = esthl.event_id)
-> WHERE eshl.timer_wait > 1*10000000000G
*************************** 1. row ***************************
event_name: stage/sql/Sending data
sql_text: SELECT COUNT(emp_no) FROM employees JOIN salaries USING(emp_no)
WHERE hire_date=from_date
w_s: 0.8170
1 row in set (0.00 sec)
Stages Example: Which Stage Run Critically Long?
28
Stages: demo
29
5.7+: Prepared Statements
• Contains current prepared statements
Table prepared statements instances
31
• Contains current prepared statements
•
Statistics by
• Which thread owns the statement
•
How many times executed
• Optimizer statistics, similar to
events statements *
Table prepared statements instances
31
• Instruments
statement/sql/prepare_sql
statement/sql/execute_sql
statement/com/Prepare
statement/com/Execute
Prepared Statements: configuration
32
• Instruments
• Consumers
• prepared statements instances
Prepared Statements: configuration
32
• Instruments
• Consumers
• Size
mysql> select @@performance_schema_max_prepared_statements_instancesG
*************************** 1. row ***************************
@@performance_schema_max_prepared_statements_instances: -1
1 row in set (0.00 sec)
Prepared Statements: configuration
32
mysql1> prepare stmt from ’select count(*) from employees where hire_date > ?’;
Query OK, 0 rows affected (0.00 sec)
Statement prepared
mysql1> set @hd=’1995-01-01’;
Query OK, 0 rows affected (0.00 sec)
mysql1> execute stmt using @hd;
+----------+
| count(*) |
+----------+
| 34004 |
+----------+
1 row in set (1.44 sec)
Example: Prepared Statement
33
mysql1> prepare stmt from ’select count(*) from employees where hire_date > ?’;
Query OK, 0 rows affected (0.00 sec)
Statement prepared
mysql1> set @hd=’1995-01-01’;
Query OK, 0 rows affected (0.00 sec)
mysql1> execute stmt using @hd;
+----------+
| count(*) |
+----------+
| 34004 |
+----------+
1 row in set (1.44 sec)
• Try EXECUTE with different values
Example: Prepared Statement
33
mysql2> select statement_name, sql_text, owner_thread_id, count_reprepare,
-> count_execute, sum_timer_execute from prepared_statements_instancesG
*************************** 1. row ***************************
statement_name: stmt
sql_text: select count(*) from employees where hire_date > ?
owner_thread_id: 22
count_reprepare: 0
count_execute: 3
sum_timer_execute: 4156561368000
1 row in set (0.00 sec)
mysql1> drop prepare stmt;
Query OK, 0 rows affected (0.00 sec)
mysql2> select * from prepared_statements_instancesG
Empty set (0.00 sec)
Example: diagnosis
34
Prepared Statements: demo
35
5.7+: Stored Routines Instrumentation
mysql> select * from setup_instruments where name like ’statement/sp%’;
+--------------------------------+---------+-------+
| NAME | ENABLED | TIMED |
+--------------------------------+---------+-------+ ...
| statement/sp/stmt | YES | YES | | statement/sp/hreturn |
| statement/sp/set | YES | YES | | statement/sp/cpush |
| statement/sp/set_trigger_field | YES | YES | | statement/sp/cpop |
| statement/sp/jump | YES | YES | | statement/sp/copen |
| statement/sp/jump_if_not | YES | YES | | statement/sp/cclose |
| statement/sp/freturn | YES | YES | | statement/sp/cfetch |
| statement/sp/hpush_jump | YES | YES | | statement/sp/error |
| statement/sp/hpop | YES | YES | | statement/sp/set_case_expr |
... +----------------------------+
16 rows in set (0.00 sec)
New Instruments
37
• What happens inside the routine
Stored Routines Instrumentation
38
• What happens inside the routine
• Queries, called from the routine
•
statement/sp/stmt
Stored Routines Instrumentation
38
• We will use this procedure
CREATE DEFINER=‘root‘@‘localhost‘ PROCEDURE ‘sp_test‘(val int)
BEGIN
DECLARE CONTINUE HANDLER FOR 1364, 1048, 1366
BEGIN
INSERT IGNORE INTO t1 VALUES(’Some string’);
GET STACKED DIAGNOSTICS CONDITION 1 @stacked_state = RETURNED_SQLSTATE;
GET STACKED DIAGNOSTICS CONDITION 1 @stacked_msg = MESSAGE_TEXT;
END;
INSERT INTO t1 VALUES(val);
END
Stored Routines: example
39
• We will use this procedure
CREATE DEFINER=‘root‘@‘localhost‘ PROCEDURE ‘sp_test‘(val int)
BEGIN
DECLARE CONTINUE HANDLER FOR 1364, 1048, 1366
BEGIN
INSERT IGNORE INTO t1 VALUES(’Some string’);
GET STACKED DIAGNOSTICS CONDITION 1 @stacked_state = RETURNED_SQLSTATE;
GET STACKED DIAGNOSTICS CONDITION 1 @stacked_msg = MESSAGE_TEXT;
END;
INSERT INTO t1 VALUES(val);
END
• When HANDLER called?
Stored Routines: example
39
mysql> call sp_test(1);
Query OK, 1 row affected (0.07 sec)
mysql> select thread_id, event_name, sql_text from events_statements_history
-> where event_name like ’statement/sp%’;
+-----------+-------------------------+----------------------------+
| thread_id | event_name | sql_text |
+-----------+-------------------------+----------------------------+
| 24 | statement/sp/hpush_jump | NULL |
| 24 | statement/sp/stmt | INSERT INTO t1 VALUES(val) |
| 24 | statement/sp/hpop | NULL |
+-----------+-------------------------+----------------------------+
3 rows in set (0.00 sec)
Correct Value
40
mysql> call sp_test(NULL);
Query OK, 1 row affected (0.07 sec)
mysql> select thread_id, event_name, sql_text from events_statements_history
-> where event_name like ’statement/sp%’;
+-----------+-------------------------+-------------------------------------------+
| thread_id | event_name | sql_text |
+-----------+-------------------------+-------------------------------------------+
| 24 | statement/sp/hpush_jump | NULL |
| 24 | statement/sp/stmt | INSERT INTO t1 VALUES(val) |
| 24 | statement/sp/stmt | INSERT IGNORE INTO t1 VALUES(’Some str... |
| 24 | statement/sp/stmt | GET STACKED DIAGNOSTICS CONDITION 1 @s... |
| 24 | statement/sp/stmt | GET STACKED DIAGNOSTICS CONDITION 1 @s... |
| 24 | statement/sp/hreturn | NULL |
| 24 | statement/sp/hpop | NULL |
+-----------+-------------------------+-------------------------------------------+
7 rows in set (0.00 sec)
HANDLER call
41
Stored Routines: demo
42
5.7+: Locks Diagnostic
• Table METADATA LOCKS
5.7+: MDL
44
• Table METADATA LOCKS
• Which thread is waiting for a lock
5.7+: MDL
44
• Table METADATA LOCKS
• Which thread is waiting for a lock
• Which thread holds the lock
5.7+: MDL
44
• Table METADATA LOCKS
• Which thread is waiting for a lock
• Which thread holds the lock
• Not only for tables:
GLOBAL, SCHEMA, TABLE, FUNCTION, PROCEDURE, EVENT, COMMIT, USER LEVEL LOCK, TABLESPACE
5.7+: MDL
44
• Instruments
• wait/lock/metadata/sql/mdl
MDL: configuration
45
• Instruments
• Consumers
• METADATA LOCKS
MDL: configuration
45
mysql> select processlist_id, object_type, lock_type, lock_status, source
-> from metadata_locks join threads on (owner_thread_id=thread_id)
-> where object_schema=’employees’ and object_name=’titles’G
*************************** 1. row ***************************
processlist_id: 4
object_type: TABLE
lock_type: EXCLUSIVE
lock_status: PENDING -- waits
source: mdl.cc:3263
*************************** 2. row ***************************
processlist_id: 5
object_type: TABLE
lock_type: SHARED_READ
lock_status: GRANTED -- holds
source: sql_parse.cc:5707
METADATA LOCKS: example
46
MDL: demo
47
• Information about locks, held by the engine
8.0.+: Data Locks
48
• Information about locks, held by the engine
• Only for engines with own locking models
8.0.+: Data Locks
48
• Information about locks, held by the engine
• Only for engines with own locking models
• Currently only InnoDB
8.0.+: Data Locks
48
• Information about locks, held by the engine
• Only for engines with own locking models
• Currently only InnoDB
• Replacement for I S tables
•
INNODB LOCKS
•
INNODB LOCK WAITS
8.0.+: Data Locks
48
Unlike most Performance Schema data collection, there are no instruments
for controlling whether data lock information is collected or system variables for
controlling data lock table sizes. The Performance Schema collects information
that is already available in the server, so there is no memory or CPU overhead
to generate this information or need for parameters that control its collection.
https://dev.mysql.com/doc/refman/8.0/en/data-locks-table.html
Data Locks: configuration
49
• Which lock is held
*************************** 4. row ***************************
ENGINE: INNODB
ENGINE_LOCK_ID: 2408:0:393:2
ENGINE_TRANSACTION_ID: 2408
THREAD_ID: 34
OBJECT_SCHEMA: test
OBJECT_NAME: t
INDEX_NAME: PRIMARY
LOCK_TYPE: RECORD
LOCK_MODE: X
LOCK_STATUS: GRANTED
LOCK_DATA: 12345
Table DATA LOCKS
50
• Which lock is held
• Which lock is requested
*************************** 2. row ***************************
ENGINE: INNODB
ENGINE_LOCK_ID: 2409:0:393:2
ENGINE_TRANSACTION_ID: 2409
THREAD_ID: 36
OBJECT_SCHEMA: test
OBJECT_NAME: t
INDEX_NAME: PRIMARY
LOCK_TYPE: RECORD
LOCK_MODE: X
LOCK_STATUS: WAITING
LOCK_DATA: 12345
Table DATA LOCKS
50
• Which lock is held
• Which lock is requested
• Both record-level and table level
p_s> select * from data_locksG
*************************** 1. row ***************************
...
LOCK_TYPE: TABLE
LOCK_MODE: IX
LOCK_STATUS: GRANTED
LOCK_DATA: NULL
*************************** 2. row ***************************
...
LOCK_TYPE: RECORD
Table DATA LOCKS
50
• Maps lock waits with granted locks
Table DATA LOCK WAITS
51
• Maps lock waits with granted locks
• Only granted blocking other transactions
p_s> select ENGINE, ... from data_lock_waitsG
*************************** 1. row ***************************
ENGINE: INNODB
REQUESTING_ENGINE_LOCK_ID: 2409:0:393:2
REQUESTING_ENGINE_TRANSACTION_ID: 2409
REQUESTING_THREAD_ID: 36
BLOCKING_ENGINE_LOCK_ID: 2408:0:393:2
BLOCKING_ENGINE_TRANSACTION_ID: 2408
BLOCKING_THREAD_ID: 34
1 row in set (0,01 sec)
Table DATA LOCK WAITS
51
• Partition
• Subpartition
• Lock data
•
Requesting and blocking thread id
New Information
52
• View innodb lock waits
In sys Schema
53
• View innodb lock waits
• Takes additional information from
INFORMATION SCHEMA.INNODB TRX
In sys Schema
53
• View innodb lock waits
sys> select locked_table, ...
-> from innodb_lock_waitsG
*************************** 1. row ***************************
locked_table: ‘test‘.‘t‘ blocking_pid: 4
locked_index: PRIMARY blocking_query: NULL
locked_type: RECORD blocking_trx_rows_locked: 1
waiting_trx_rows_locked: 1 blocking_trx_rows_modified: 1
waiting_trx_rows_modified: 0 sql_kill_blocking_query: KILL QUERY 4
waiting_pid: 6 sql_kill_blocking_connection: KILL 4
waiting_query: UPDATE t SET f=’bar’ WHERE id=12345
In sys Schema
53
Data Locks: demo
54
5.7+: Memory Usage
• Instruments
mysql> select name from setup_instruments where name like ’memory%’;
+-----------------------------------------------------+
| name |
+-----------------------------------------------------+
...
| memory/sql/Gtid_state::group_commit_sidno_locks |
| memory/sql/Mutex_cond_array::Mutex_cond |
| memory/sql/TABLE_RULE_ENT |
| memory/sql/Rpl_info_table |
| memory/sql/Rpl_info_file::buffer |
| memory/sql/db_worker_hash_entry |
| memory/sql/rpl_slave::check_temp_dir |
| memory/sql/rpl_slave::command_buffer |
| memory/sql/binlog_ver_1_event |
| memory/sql/SLAVE_INFO |
| memory/sql/binlog_pos |
...
Memory: configuration
56
• Instruments
• Consumers
• Digest tables in Performance Schema
•
Views in sys schema
Memory: configuration
56
• Memory, used by internal mysqld structures
Memory Diagnostic
57
• Memory, used by internal mysqld structures
•
Aggregated by
• Global
•
Thread
• Account
• Host
• User
Memory Diagnostic
57
• Memory, used by internal mysqld structures
•
Aggregated by
• Global
•
Thread
• Account
• Host
• User
• Nice views in sys schema
Memory Diagnostic
57
mysql> select thread_id tid, user, current_allocated ca, total_allocated
-> from sys.memory_by_thread_by_current_bytes;
+-----+-------------------------+-------------+-----------------+
| tid | user | ca | total_allocated |
+-----+-------------------------+-------------+-----------------+
| 1 | sql/main | 2.53 GiB | 2.69 GiB |
| 150 | root@127.0.0.1 | 4.06 MiB | 32.17 MiB |
| 146 | sql/slave_sql | 1.31 MiB | 1.44 MiB |
| 145 | sql/slave_io | 1.08 MiB | 2.79 MiB |
...
| 60 | innodb/io_read_thread | 0 bytes | 384 bytes |
| 139 | innodb/srv_purge_thread | -328 bytes | 754.21 KiB |
| 69 | innodb/io_write_thread | -1008 bytes | 34.28 KiB |
| 68 | innodb/io_write_thread | -1440 bytes | 298.05 KiB |
| 74 | innodb/io_write_thread | -1656 bytes | 103.55 KiB |
| 4 | innodb/io_log_thread | -2880 bytes | 132.38 KiB |
| 72 | innodb/io_write_thread | -7632 bytes | 1.10 MiB |
+-----+-------------------------+-------------+-----------------+
145 rows in set (2.65 sec)
Memory Usage by Thread
58
mysql> select * from sys.memory_by_thread_by_current_bytes
-> order by current_allocated descG
*************************** 1. row ***************************
thread_id: 152
user: lj@127.0.0.1
current_count_used: 325
current_allocated: 36.00 GiB
current_avg_alloc: 113.43 MiB
current_max_alloc: 36.00 GiB
total_allocated: 37.95 GiB
...
• Find threads, eating memory, in a second!
Threads Statistics
59
• memory summary by account by event name
• memory summary by host by event name
• memory summary by thread by event name
• memory summary by user by event name
• memory summary global by event name
RAW Performance Schema tables
60
• memory summary by account by event name
• memory summary by host by event name
• memory summary by thread by event name
• memory summary by user by event name
• memory summary global by event name
•
You must enable memory instrumentation!
RAW Performance Schema tables
60
• memory summary by account by event name
• memory summary by host by event name
• memory summary by thread by event name
• memory summary by user by event name
• memory summary global by event name
•
You must enable memory instrumentation!
•
sys schema includes user name
RAW Performance Schema tables
60
• NAME@HOST - regular user
Users in sys.memory * tables
61
• NAME@HOST - regular user
•
System users
•
sql/main
•
innodb/*
• ...
Users in sys.memory * tables
61
• NAME@HOST - regular user
•
System users
•
sql/main
•
innodb/*
• ...
• Data comes from table THREADS
Users in sys.memory * tables
61
Memory Usage: demo
62
5.7+: Replication
• Data from SHOW SLAVE STATUS available in
replication * tables
Major Improvements
64
• Data from SHOW SLAVE STATUS available in
replication * tables
• Support of Replication Channels (Multi-master
slave)
Major Improvements
64
• Data from SHOW SLAVE STATUS available in
replication * tables
• Support of Replication Channels (Multi-master
slave)
• More instruments for GTID
Major Improvements
64
• No need to parse SHOW output
SLAVE STATUS
65
• No need to parse SHOW output
• Configuration
•
replication connection configuration
• replication applier configuration
SLAVE STATUS
65
• No need to parse SHOW output
• Configuration
• IO thread
•
replication connection status
SLAVE STATUS
65
• No need to parse SHOW output
• Configuration
• IO thread
• SQL thread
•
replication applier status
• replication applier status by coordinator - MTS only
• replication applier status by worker
• replication applier global filters
•
replication applier filters
SLAVE STATUS
65
• No need to parse SHOW output
• Configuration
• IO thread
• SQL thread
• Group replication
•
replication group members
• replication group member stats
SLAVE STATUS
65
• Configuration
mysql> select * from replication_connection_configuration
-> join replication_applier_configuration using(channel_name)G
*************************** 1. row ***************************
CHANNEL_NAME:
HOST: 127.0.0.1
PORT: 13000
USER: root
NETWORK_INTERFACE:
AUTO_POSITION: 1
SSL_ALLOWED: NO
SSL_CA_FILE:
...
CHANNEL_NAME:
DESIRED_DELAY: 0
SLAVE STATUS
66
• State of IO Thread
mysql> select * from replication_connection_statusG
*************************** 1. row ***************************
CHANNEL_NAME:
GROUP_NAME:
SOURCE_UUID: d0753e78-14ec-11e5-b3fb-28b2bd7442fd
THREAD_ID: 21
SERVICE_STATE: ON
COUNT_RECEIVED_HEARTBEATS: 17
LAST_HEARTBEAT_TIMESTAMP: 2015-06-17 15:49:08
RECEIVED_TRANSACTION_SET:
LAST_ERROR_NUMBER: 0
LAST_ERROR_MESSAGE:
LAST_ERROR_TIMESTAMP: 0000-00-00 00:00:00
1 row in set (0.00 sec)
SLAVE STATUS
67
• Coordinator thread for multiple workers
mysql> select * from replication_applier_status join
-> replication_applier_status_by_coordinator using(channel_name)G
*************************** 1. row ***************************
CHANNEL_NAME:
SERVICE_STATE: ON
REMAINING_DELAY: NULL
COUNT_TRANSACTIONS_RETRIES: 0
THREAD_ID: 76
SERVICE_STATE: ON
LAST_ERROR_NUMBER: 0
LAST_ERROR_MESSAGE:
LAST_ERROR_TIMESTAMP: 0000-00-00 00:00:00.000000
LAST_PROCESSED_TRANSACTION: c634ce2d-cbb3-11e8-9532-0242cedce297:6
LAST_PROCESSED_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP: 2018-10-09 14:59:05.281818
...
Performance Schema: State of SQL Thread
68
• Coordinator thread for multiple workers
• Multi-source slave
mysql> select * from replication_applier_status join
-> replication_applier_status_by_worker using(channel_name)G
*************************** 1. row ***************************
CHANNEL_NAME: master-01
SERVICE_STATE: ON
REMAINING_DELAY: NULL
...
LAST_APPLIED_TRANSACTION: c634ce2d-cbb3-11e8-9532-0242cedce297:7
LAST_APPLIED_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP: 2018-10-09 15:12:56.285995
...
Performance Schema: State of SQL Thread
68
• Coordinator thread for multiple workers
• Multi-source slave
*************************** 2. row ***************************
CHANNEL_NAME: m-03
SERVICE_STATE: OFF
...
LAST_ERROR_NUMBER: 1050
LAST_ERROR_MESSAGE: Worker 1 failed executing transaction ...
LAST_ERROR_TIMESTAMP: 2018-10-09 15:15:14.306672
LAST_APPLIED_TRANSACTION: c63ae70c-cbb3-11e8-b634-0242cedce297:2
...
LAST_APPLIED_TRANSACTION_END_APPLY_TIMESTAMP: 2018-10-09 15:13:33.770744
APPLYING_TRANSACTION: c63ae70c-cbb3-11e8-b634-0242cedce297:3
...
Performance Schema: State of SQL Thread
68
•
RECEIVED TRANSACTION SET
in table replication connection status
GTID Diagnostics
69
•
RECEIVED TRANSACTION SET
in table replication connection status
• LAST SEEN TRANSACTION
in replication applier status by worker
GTID Diagnostics
69
• Single-threaded slave
mysql> select cs.CHANNEL_NAME, cs.SOURCE_UUID, cs.RECEIVED_TRANSACTION_SET,
-> asw.LAST_APPLIED_TRANSACTION, aps.SERVICE_STATE from
-> replication_connection_status cs join replication_applier_status_by_worker
-> asw using(channel_name) join replication_applier_status aps
-> using(channel_name) G
*************************** 1. row ***************************
CHANNEL_NAME:
SOURCE_UUID: 9038967d-7164-11e6-8c88-30b5c2208a0f
RECEIVED_TRANSACTION_SET: 9038967d-7164-11e6-8c88-30b5c2208a0f:1-2
LAST_APPLIED_TRANSACTION: 9038967d-7164-11e6-8c88-30b5c2208a0f:2
SERVICE_STATE: ON
1 row in set (0,00 sec)
GTID: All in One Place
70
• Single-threaded slave
• Multi-threaded
*************************** 1. row ***************************
THREAD_ID: 30
SERVICE_STATE: ON
RECEIVED_TRANSACTION_SET: 9038967d-7164-11e6-8c88-30b5c2208a0f:1-3
LAST_APPLIED_TRANSACTION:
...
*************************** 8. row ***************************
THREAD_ID: 37
SERVICE_STATE: ON
RECEIVED_TRANSACTION_SET: 9038967d-7164-11e6-8c88-30b5c2208a0f:1-3
LAST_APPLIED_TRANSACTION: 9038967d-7164-11e6-8c88-30b5c2208a0f:3
8 rows in set (0,00 sec)
GTID: All in One Place
70
• Global
mysql> select * from replication_applier_global_filtersG
*************************** 1. row ***************************
FILTER_NAME: REPLICATE_IGNORE_TABLE
FILTER_RULE: test.test
CONFIGURED_BY: CHANGE_REPLICATION_FILTER
ACTIVE_SINCE: 2018-10-09 16:54:45.733490
1 row in set (0.00 sec)
Replication Filters
71
• Global
• Worker’s
mysql> select * from replication_applier_filtersG
*************************** 1. row ***************************
CHANNEL_NAME: m-01
FILTER_NAME: REPLICATE_IGNORE_TABLE
FILTER_RULE: test.test
CONFIGURED_BY: CHANGE_REPLICATION_FILTER
ACTIVE_SINCE: 2018-10-09 16:54:45.733490
COUNTER: 0
*************************** 2. row ***************************
CHANNEL_NAME: m-03
FILTER_NAME: REPLICATE_IGNORE_TABLE
FILTER_RULE: test.t1
CONFIGURED_BY: CHANGE_REPLICATION_FILTER_FOR_CHANNEL
ACTIVE_SINCE: 2018-10-09 16:54:53.881195
COUNTER: 0
Replication Filters
71
•
replication group members
mysql> SELECT * FROM performance_schema.replication_group_membersG
*************************** 1. row ***************************
CHANNEL_NAME: group_replication_applier
MEMBER_ID: c26fc705-cbcc-11e8-b5b8-0242cedce297
MEMBER_HOST: delly
MEMBER_PORT: 24801
MEMBER_STATE: ONLINE
MEMBER_ROLE: PRIMARY
MEMBER_VERSION: 8.0.12
*************************** 2. row ***************************
CHANNEL_NAME: group_replication_applier
MEMBER_ID: f3d2feda-cbcc-11e8-9eb9-0242cedce297
MEMBER_HOST: delly
MEMBER_PORT: 24802
MEMBER_STATE: RECOVERING
MEMBER_ROLE: PRIMARY
MEMBER_VERSION: 8.0.12
2 rows in set (0.00 sec)
Group Replication
72
•
replication group members
• replication group member stats
mysql> SELECT * FROM performance_schema.replication_group_member_statsG
*************************** 1. row ***************************
CHANNEL_NAME: group_replication_applier
VIEW_ID: 15390963914656312:3
MEMBER_ID: 1dfa4dee-cbcd-11e8-bad1-0242cedce297
COUNT_TRANSACTIONS_IN_QUEUE: 0
COUNT_TRANSACTIONS_CHECKED: 1
COUNT_CONFLICTS_DETECTED: 0
COUNT_TRANSACTIONS_ROWS_VALIDATING: 8
TRANSACTIONS_COMMITTED_ALL_MEMBERS: aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa:1-21
LAST_CONFLICT_FREE_TRANSACTION: aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa:21
COUNT_TRANSACTIONS_REMOTE_IN_APPLIER_QUEUE: 0
COUNT_TRANSACTIONS_REMOTE_APPLIED: 0
COUNT_TRANSACTIONS_LOCAL_PROPOSED: 1
COUNT_TRANSACTIONS_LOCAL_ROLLBACK: 0
Group Replication
72
• Tables in mysql schema
•
slave master info
• slave relay log info
• slave worker info
•
Join with Performance Schema tables
More Diagnostic
73
• Tables in mysql schema
•
slave master info
• slave relay log info
• slave worker info
•
Join with Performance Schema tables
• New instruments
• memory
• wait
•
stage
More Diagnostic
73
• Not only replication
mysql> select * from log_statusG
*************************** 1. row ***************************
SERVER_UUID: c634ce2c-cbb3-11e8-8900-0242cedce297
LOCAL: {"gtid_executed": "c634ce2d-cbb3-11e8-9532-0242cedce297:1-2",
"binary_log_file": "binlog.000001", "binary_log_position": 620}
REPLICATION: {"channels": [{"channel_name": "", "relay_log_file": "delly-relay-bin.000002",
"relay_log_position": 819, "relay_master_log_file": "binlog.000001",
"exec_master_log_position": 611}]}
STORAGE_ENGINES: {"InnoDB": {"LSN": 19177930, "LSN_checkpoint": 19177930}}
1 row in set (0.01 sec)
Table log status
74
• Not only replication
• Currently only InnoDB supported!
Table log status
74
Replication: demo
75
5.7+: Variables
• Variables
•
global variables
• session variables
• user variables by thread
•
variables by thread
Variables Instrumentation
77
• Variables
• Status variables
•
global status
• session status
• status by [account|host|thread|user]
Variables Instrumentation
77
• Variables
• Status variables
• show compatibility 56 = 0
Variables Instrumentation
77
• Same information which is in
• SHOW [GLOBAL] STATUS•
I S.GLOBAL VARIABLES
Deprecated in 5.7
Removed in 8.0.1
•
I S.SESSION VARIABLES
Deprecated in 5.7
Removed in 8.0.1
Global and Session Variables
78
• Same information which is in
• SHOW [GLOBAL] STATUS•
I S.GLOBAL VARIABLES
Deprecated in 5.7
Removed in 8.0.1
•
I S.SESSION VARIABLES
Deprecated in 5.7
Removed in 8.0.1
•
Helps to watch session variables changes
Global and Session Variables
78
• Same information which is in
• SHOW [GLOBAL] STATUS•
I S.GLOBAL STATUS
Deprecated in 5.7
Removed in 8.0.1
•
I S.SESSION STATUS
Deprecated in 5.7
Removed in 8.0.1
Status Variables
79
mysql> SELECT ss.variable_name, ss.variable_value FROM session_status ss
-> LEFT JOIN global_status gs USING(variable_name)
-> WHERE ss.variable_value != gs.variable_value OR gs.variable_value IS NULL;;
+----------------------------+----------------+
| variable_name | variable_value |
+----------------------------+----------------+
| Bytes_sent | 197774 |
| Handler_commit | 0 |
| Handler_external_lock | 44 |
| Handler_read_first | 3 |
| Handler_read_key | 523 |
| Handler_read_next | 0 |
| Handler_read_rnd_next | 7241 |
| Opened_table_definitions | 0 |
...
Status Variables
80
•
variables by thread
• status by
• account
• host
• thread
•
user
Possible to Group
81
•
variables by thread
mysql> select * from variables_by_thread where variable_name=’tx_isolation’;
+-----------+---------------+-----------------+
| THREAD_ID | VARIABLE_NAME | VARIABLE_VALUE |
+-----------+---------------+-----------------+
| 71 | tx_isolation | REPEATABLE-READ |
| 83 | tx_isolation | REPEATABLE-READ |
| 84 | tx_isolation | SERIALIZABLE |
+-----------+---------------+-----------------+
3 rows in set, 3 warnings (0.00 sec)
Possible to Group
81
•
variables by thread
• status by
mysql> select * from status_by_thread where variable_name=’Handler_write’;
+-----------+---------------+----------------+
| THREAD_ID | VARIABLE_NAME | VARIABLE_VALUE |
+-----------+---------------+----------------+
| 71 | Handler_write | 94 |
| 83 | Handler_write | 477 | -- Most writes
| 84 | Handler_write | 101 |
+-----------+---------------+----------------+
3 rows in set (0.00 sec)
Possible to Group
81
• Grouped by connection
• Sometimes can help to find tricky bugs with
persistent connections
mysql> select * from user_variables_by_thread;
+-----------+---------------+----------------+
| THREAD_ID | VARIABLE_NAME | VARIABLE_VALUE |
+-----------+---------------+----------------+
| 71 | baz | boo |
| 84 | foo | bar |
+-----------+---------------+----------------+
2 rows in set (0.00 sec)
User Variables
82
•
VARIABLES INFO
• Source of variable
COMPILED
EXPLICIT
COMMAND LINE
DYNAMIC
• Path of option file if specified
• Minimum and maximum values
8.0+: Variables Info
83
•
VARIABLES INFO
mysql> select * from variables_info where set_user is not nullG
*************************** 1. row ***************************
VARIABLE_NAME: innodb_file_per_table
VARIABLE_SOURCE: DYNAMIC
VARIABLE_PATH:
MIN_VALUE: 0
MAX_VALUE: 0
SET_TIME: 2018-10-09 22:17:34.638459
SET_USER: root
SET_HOST: localhost
*************************** 2. row ***************************
VARIABLE_NAME: max_allowed_packet
VARIABLE_SOURCE: DYNAMIC
VARIABLE_PATH:
MIN_VALUE: 1024
MAX_VALUE: 1073741824
SET_TIME: 2018-10-09 22:17:47.269913
...
8.0+: Variables Info
83
•
VARIABLES INFO
• Source of variable
COMPILED
EXPLICIT
COMMAND LINE
DYNAMIC
• Path of option file if specified
• Minimum and maximum values
• No variable values in this table!
8.0+: Variables Info
83
Variables: demo
84
8.0+: Errors Summary
• Traditionally aggregated
•
events errors summary by account by error
•
events errors summary by host by error
• events errors summary by thread by error
• events errors summary by user by error
•
events errors summary global by error
Errors Summary Tables
86
• Traditionally aggregated
• All tables have similar structure
mysql> DESC events_errors_summary_global_by_error;
+-------------------+---------------------+------+-----+---------------------+
| Field | Type | Null | Key | Default |
+-------------------+---------------------+------+-----+---------------------+
| ERROR_NUMBER | int(11) | YES | UNI | NULL |
| ERROR_NAME | varchar(64) | YES | | NULL |
| SQL_STATE | varchar(5) | YES | | NULL |
| SUM_ERROR_RAISED | bigint(20) unsigned | NO | | NULL |
| SUM_ERROR_HANDLED | bigint(20) unsigned | NO | | NULL |
| FIRST_SEEN | timestamp | YES | | 0000-00-00 00:00:00 |
| LAST_SEEN | timestamp | YES | | 0000-00-00 00:00:00 |
+-------------------+---------------------+------+-----+
7 rows in set (0,03 sec)
Errors Summary Tables
86
mysql> select * from events_errors_summary_by_account_by_error
-> where SUM_ERROR_RAISED > 100G
*************** 1. row ***************
USER: root
HOST: localhost
ERROR_NUMBER: 1213
ERROR_NAME: ER_LOCK_DEADLOCK
SQL_STATE: 40001
SUM_ERROR_RAISED: 221
SUM_ERROR_HANDLED: 0
FIRST_SEEN: 2016-09-28 01:45:09
LAST_SEEN: 2016-09-28 01:47:02
*************** 2. row ***************
USER: root
HOST: localhost
ERROR_NUMBER: 1287
ERROR_NAME: ER_WARN_DEPRECATED_SYNTAX
SQL_STATE: HY000
SUM_ERROR_RAISED: 279
SUM_ERROR_HANDLED: 0
FIRST_SEEN: 2016-09-27 23:59:49
LAST_SEEN: 2016-09-28 01:47:05
Errors Summary: Which Accounts Raise More Errors?
87
Errors Summary: demo
88
Nickolay Ihalainen for practice setup idea and 5.7 examples
Alexander Rubin for EC2 setup and replication example
Practice Examples Repository
Special thanks
89
Blog of MySQL developers team
Mark Leith: author of sys schema
Official reference manual
Webinar ”Performance Schema for MySQL
Troubleshooting”
More information
90
http://www.slideshare.net/SvetaSmirnova
https://twitter.com/svetsmirnova
https://github.com/svetasmirnova
Thank you!
91

More Related Content

What's hot

Oracle Enterprise Manager 12c: The Oracle Monitoring tool of choice – Why yo...
Oracle Enterprise Manager 12c:  The Oracle Monitoring tool of choice – Why yo...Oracle Enterprise Manager 12c:  The Oracle Monitoring tool of choice – Why yo...
Oracle Enterprise Manager 12c: The Oracle Monitoring tool of choice – Why yo...Jeff Kayser
 
Optimizer Trace Walkthrough
Optimizer Trace WalkthroughOptimizer Trace Walkthrough
Optimizer Trace WalkthroughSergey Petrunya
 
In Search of Plan Stability - Part 1
In Search of Plan Stability - Part 1In Search of Plan Stability - Part 1
In Search of Plan Stability - Part 1Enkitec
 
Basic MySQL Troubleshooting for Oracle DBAs
Basic MySQL Troubleshooting for Oracle DBAsBasic MySQL Troubleshooting for Oracle DBAs
Basic MySQL Troubleshooting for Oracle DBAsSveta Smirnova
 
2008 Collaborate IOUG Presentation
2008 Collaborate IOUG Presentation2008 Collaborate IOUG Presentation
2008 Collaborate IOUG PresentationBiju Thomas
 
Essential Linux Commands for DBAs
Essential Linux Commands for DBAsEssential Linux Commands for DBAs
Essential Linux Commands for DBAsGokhan Atil
 
Introduction to MySQL Query Tuning for Dev[Op]s
Introduction to MySQL Query Tuning for Dev[Op]sIntroduction to MySQL Query Tuning for Dev[Op]s
Introduction to MySQL Query Tuning for Dev[Op]sSveta Smirnova
 
Introduction into MySQL Query Tuning
Introduction into MySQL Query TuningIntroduction into MySQL Query Tuning
Introduction into MySQL Query TuningSveta Smirnova
 
Optimizing applications and database performance
Optimizing applications and database performanceOptimizing applications and database performance
Optimizing applications and database performanceInam Bukhary
 
MySQL Stored Procedures: Building High Performance Web Applications
MySQL Stored Procedures: Building High Performance Web ApplicationsMySQL Stored Procedures: Building High Performance Web Applications
MySQL Stored Procedures: Building High Performance Web ApplicationsOSSCube
 
Performance Schema for MySQL Troubleshooting
 Performance Schema for MySQL Troubleshooting Performance Schema for MySQL Troubleshooting
Performance Schema for MySQL TroubleshootingSveta Smirnova
 
Oracle Database 12c - The Best Oracle Database 12c Tuning Features for Develo...
Oracle Database 12c - The Best Oracle Database 12c Tuning Features for Develo...Oracle Database 12c - The Best Oracle Database 12c Tuning Features for Develo...
Oracle Database 12c - The Best Oracle Database 12c Tuning Features for Develo...Alex Zaballa
 
Test Dml With Nologging
Test Dml With NologgingTest Dml With Nologging
Test Dml With NologgingN/A
 
Basic MySQL Troubleshooting for Oracle Database Administrators
Basic MySQL Troubleshooting for Oracle Database AdministratorsBasic MySQL Troubleshooting for Oracle Database Administrators
Basic MySQL Troubleshooting for Oracle Database AdministratorsSveta Smirnova
 
MySQL/MariaDB query optimizer tuning tutorial from Percona Live 2013
MySQL/MariaDB query optimizer tuning tutorial from Percona Live 2013MySQL/MariaDB query optimizer tuning tutorial from Percona Live 2013
MySQL/MariaDB query optimizer tuning tutorial from Percona Live 2013Sergey Petrunya
 
Optimizer overviewoow2014
Optimizer overviewoow2014Optimizer overviewoow2014
Optimizer overviewoow2014Mysql User Camp
 
Profiling Oracle with GDB
Profiling Oracle with GDBProfiling Oracle with GDB
Profiling Oracle with GDBEnkitec
 
Oracle Database 12.1.0.2 New Features
Oracle Database 12.1.0.2 New FeaturesOracle Database 12.1.0.2 New Features
Oracle Database 12.1.0.2 New FeaturesAlex Zaballa
 
Introduction into MySQL Query Tuning for Dev[Op]s
Introduction into MySQL Query Tuning for Dev[Op]sIntroduction into MySQL Query Tuning for Dev[Op]s
Introduction into MySQL Query Tuning for Dev[Op]sSveta Smirnova
 
Performance Schema for MySQL Troubleshooting
Performance Schema for MySQL TroubleshootingPerformance Schema for MySQL Troubleshooting
Performance Schema for MySQL TroubleshootingSveta Smirnova
 

What's hot (20)

Oracle Enterprise Manager 12c: The Oracle Monitoring tool of choice – Why yo...
Oracle Enterprise Manager 12c:  The Oracle Monitoring tool of choice – Why yo...Oracle Enterprise Manager 12c:  The Oracle Monitoring tool of choice – Why yo...
Oracle Enterprise Manager 12c: The Oracle Monitoring tool of choice – Why yo...
 
Optimizer Trace Walkthrough
Optimizer Trace WalkthroughOptimizer Trace Walkthrough
Optimizer Trace Walkthrough
 
In Search of Plan Stability - Part 1
In Search of Plan Stability - Part 1In Search of Plan Stability - Part 1
In Search of Plan Stability - Part 1
 
Basic MySQL Troubleshooting for Oracle DBAs
Basic MySQL Troubleshooting for Oracle DBAsBasic MySQL Troubleshooting for Oracle DBAs
Basic MySQL Troubleshooting for Oracle DBAs
 
2008 Collaborate IOUG Presentation
2008 Collaborate IOUG Presentation2008 Collaborate IOUG Presentation
2008 Collaborate IOUG Presentation
 
Essential Linux Commands for DBAs
Essential Linux Commands for DBAsEssential Linux Commands for DBAs
Essential Linux Commands for DBAs
 
Introduction to MySQL Query Tuning for Dev[Op]s
Introduction to MySQL Query Tuning for Dev[Op]sIntroduction to MySQL Query Tuning for Dev[Op]s
Introduction to MySQL Query Tuning for Dev[Op]s
 
Introduction into MySQL Query Tuning
Introduction into MySQL Query TuningIntroduction into MySQL Query Tuning
Introduction into MySQL Query Tuning
 
Optimizing applications and database performance
Optimizing applications and database performanceOptimizing applications and database performance
Optimizing applications and database performance
 
MySQL Stored Procedures: Building High Performance Web Applications
MySQL Stored Procedures: Building High Performance Web ApplicationsMySQL Stored Procedures: Building High Performance Web Applications
MySQL Stored Procedures: Building High Performance Web Applications
 
Performance Schema for MySQL Troubleshooting
 Performance Schema for MySQL Troubleshooting Performance Schema for MySQL Troubleshooting
Performance Schema for MySQL Troubleshooting
 
Oracle Database 12c - The Best Oracle Database 12c Tuning Features for Develo...
Oracle Database 12c - The Best Oracle Database 12c Tuning Features for Develo...Oracle Database 12c - The Best Oracle Database 12c Tuning Features for Develo...
Oracle Database 12c - The Best Oracle Database 12c Tuning Features for Develo...
 
Test Dml With Nologging
Test Dml With NologgingTest Dml With Nologging
Test Dml With Nologging
 
Basic MySQL Troubleshooting for Oracle Database Administrators
Basic MySQL Troubleshooting for Oracle Database AdministratorsBasic MySQL Troubleshooting for Oracle Database Administrators
Basic MySQL Troubleshooting for Oracle Database Administrators
 
MySQL/MariaDB query optimizer tuning tutorial from Percona Live 2013
MySQL/MariaDB query optimizer tuning tutorial from Percona Live 2013MySQL/MariaDB query optimizer tuning tutorial from Percona Live 2013
MySQL/MariaDB query optimizer tuning tutorial from Percona Live 2013
 
Optimizer overviewoow2014
Optimizer overviewoow2014Optimizer overviewoow2014
Optimizer overviewoow2014
 
Profiling Oracle with GDB
Profiling Oracle with GDBProfiling Oracle with GDB
Profiling Oracle with GDB
 
Oracle Database 12.1.0.2 New Features
Oracle Database 12.1.0.2 New FeaturesOracle Database 12.1.0.2 New Features
Oracle Database 12.1.0.2 New Features
 
Introduction into MySQL Query Tuning for Dev[Op]s
Introduction into MySQL Query Tuning for Dev[Op]sIntroduction into MySQL Query Tuning for Dev[Op]s
Introduction into MySQL Query Tuning for Dev[Op]s
 
Performance Schema for MySQL Troubleshooting
Performance Schema for MySQL TroubleshootingPerformance Schema for MySQL Troubleshooting
Performance Schema for MySQL Troubleshooting
 

Similar to sveta smirnova - my sql performance schema in action

MySQL Performance Schema in Action
MySQL Performance Schema in ActionMySQL Performance Schema in Action
MySQL Performance Schema in ActionSveta Smirnova
 
MySQL Performance Schema in Action: the Complete Tutorial
MySQL Performance Schema in Action: the Complete TutorialMySQL Performance Schema in Action: the Complete Tutorial
MySQL Performance Schema in Action: the Complete TutorialSveta Smirnova
 
Performance Schema for MySQL Troubleshooting
Performance Schema for MySQL TroubleshootingPerformance Schema for MySQL Troubleshooting
Performance Schema for MySQL TroubleshootingSveta Smirnova
 
Query Optimization with MySQL 5.6: Old and New Tricks
Query Optimization with MySQL 5.6: Old and New TricksQuery Optimization with MySQL 5.6: Old and New Tricks
Query Optimization with MySQL 5.6: Old and New TricksMYXPLAIN
 
Performance Schema for MySQL Troubleshooting
Performance Schema for MySQL TroubleshootingPerformance Schema for MySQL Troubleshooting
Performance Schema for MySQL TroubleshootingSveta Smirnova
 
New features in Performance Schema 5.7 in action
New features in Performance Schema 5.7 in actionNew features in Performance Schema 5.7 in action
New features in Performance Schema 5.7 in actionSveta Smirnova
 
MySQL Performance Schema in Action
MySQL Performance Schema in ActionMySQL Performance Schema in Action
MySQL Performance Schema in ActionSveta Smirnova
 
Empower my sql server administration with 5.7 instruments
Empower my sql server administration with 5.7 instrumentsEmpower my sql server administration with 5.7 instruments
Empower my sql server administration with 5.7 instrumentsMarco Tusa
 
New features in Performance Schema 5.7 in action
New features in Performance Schema 5.7 in actionNew features in Performance Schema 5.7 in action
New features in Performance Schema 5.7 in actionSveta Smirnova
 
Query Optimization with MySQL 5.6: Old and New Tricks - Percona Live London 2013
Query Optimization with MySQL 5.6: Old and New Tricks - Percona Live London 2013Query Optimization with MySQL 5.6: Old and New Tricks - Percona Live London 2013
Query Optimization with MySQL 5.6: Old and New Tricks - Percona Live London 2013Jaime Crespo
 
Preparse Query Rewrite Plugins
Preparse Query Rewrite PluginsPreparse Query Rewrite Plugins
Preparse Query Rewrite PluginsSveta Smirnova
 
Oracle Enteprise Manager Cloud Control 12c - Setting Up Metrics and Monitorin...
Oracle Enteprise Manager Cloud Control 12c - Setting Up Metrics and Monitorin...Oracle Enteprise Manager Cloud Control 12c - Setting Up Metrics and Monitorin...
Oracle Enteprise Manager Cloud Control 12c - Setting Up Metrics and Monitorin...Leighton Nelson
 
DBA Commands and Concepts That Every Developer Should Know - Part 2
DBA Commands and Concepts That Every Developer Should Know - Part 2DBA Commands and Concepts That Every Developer Should Know - Part 2
DBA Commands and Concepts That Every Developer Should Know - Part 2Alex Zaballa
 
Configuring Sage 500 for Performance
Configuring Sage 500 for PerformanceConfiguring Sage 500 for Performance
Configuring Sage 500 for PerformanceRKLeSolutions
 
Oracle Database 12c features for DBA
Oracle Database 12c features for DBAOracle Database 12c features for DBA
Oracle Database 12c features for DBAKaran Kukreja
 
MySQL Performance Schema in 20 Minutes
 MySQL Performance Schema in 20 Minutes MySQL Performance Schema in 20 Minutes
MySQL Performance Schema in 20 MinutesSveta Smirnova
 
LVOUG meetup #4 - Case Study 10g to 11g
LVOUG meetup #4 - Case Study 10g to 11gLVOUG meetup #4 - Case Study 10g to 11g
LVOUG meetup #4 - Case Study 10g to 11gMaris Elsins
 
MySQL Performance Schema : fossasia
MySQL Performance Schema : fossasiaMySQL Performance Schema : fossasia
MySQL Performance Schema : fossasiaMayank Prasad
 
Macy's: Changing Engines in Mid-Flight
Macy's: Changing Engines in Mid-FlightMacy's: Changing Engines in Mid-Flight
Macy's: Changing Engines in Mid-FlightDataStax Academy
 
End-to-end Troubleshooting Checklist for Microsoft SQL Server
End-to-end Troubleshooting Checklist for Microsoft SQL ServerEnd-to-end Troubleshooting Checklist for Microsoft SQL Server
End-to-end Troubleshooting Checklist for Microsoft SQL ServerKevin Kline
 

Similar to sveta smirnova - my sql performance schema in action (20)

MySQL Performance Schema in Action
MySQL Performance Schema in ActionMySQL Performance Schema in Action
MySQL Performance Schema in Action
 
MySQL Performance Schema in Action: the Complete Tutorial
MySQL Performance Schema in Action: the Complete TutorialMySQL Performance Schema in Action: the Complete Tutorial
MySQL Performance Schema in Action: the Complete Tutorial
 
Performance Schema for MySQL Troubleshooting
Performance Schema for MySQL TroubleshootingPerformance Schema for MySQL Troubleshooting
Performance Schema for MySQL Troubleshooting
 
Query Optimization with MySQL 5.6: Old and New Tricks
Query Optimization with MySQL 5.6: Old and New TricksQuery Optimization with MySQL 5.6: Old and New Tricks
Query Optimization with MySQL 5.6: Old and New Tricks
 
Performance Schema for MySQL Troubleshooting
Performance Schema for MySQL TroubleshootingPerformance Schema for MySQL Troubleshooting
Performance Schema for MySQL Troubleshooting
 
New features in Performance Schema 5.7 in action
New features in Performance Schema 5.7 in actionNew features in Performance Schema 5.7 in action
New features in Performance Schema 5.7 in action
 
MySQL Performance Schema in Action
MySQL Performance Schema in ActionMySQL Performance Schema in Action
MySQL Performance Schema in Action
 
Empower my sql server administration with 5.7 instruments
Empower my sql server administration with 5.7 instrumentsEmpower my sql server administration with 5.7 instruments
Empower my sql server administration with 5.7 instruments
 
New features in Performance Schema 5.7 in action
New features in Performance Schema 5.7 in actionNew features in Performance Schema 5.7 in action
New features in Performance Schema 5.7 in action
 
Query Optimization with MySQL 5.6: Old and New Tricks - Percona Live London 2013
Query Optimization with MySQL 5.6: Old and New Tricks - Percona Live London 2013Query Optimization with MySQL 5.6: Old and New Tricks - Percona Live London 2013
Query Optimization with MySQL 5.6: Old and New Tricks - Percona Live London 2013
 
Preparse Query Rewrite Plugins
Preparse Query Rewrite PluginsPreparse Query Rewrite Plugins
Preparse Query Rewrite Plugins
 
Oracle Enteprise Manager Cloud Control 12c - Setting Up Metrics and Monitorin...
Oracle Enteprise Manager Cloud Control 12c - Setting Up Metrics and Monitorin...Oracle Enteprise Manager Cloud Control 12c - Setting Up Metrics and Monitorin...
Oracle Enteprise Manager Cloud Control 12c - Setting Up Metrics and Monitorin...
 
DBA Commands and Concepts That Every Developer Should Know - Part 2
DBA Commands and Concepts That Every Developer Should Know - Part 2DBA Commands and Concepts That Every Developer Should Know - Part 2
DBA Commands and Concepts That Every Developer Should Know - Part 2
 
Configuring Sage 500 for Performance
Configuring Sage 500 for PerformanceConfiguring Sage 500 for Performance
Configuring Sage 500 for Performance
 
Oracle Database 12c features for DBA
Oracle Database 12c features for DBAOracle Database 12c features for DBA
Oracle Database 12c features for DBA
 
MySQL Performance Schema in 20 Minutes
 MySQL Performance Schema in 20 Minutes MySQL Performance Schema in 20 Minutes
MySQL Performance Schema in 20 Minutes
 
LVOUG meetup #4 - Case Study 10g to 11g
LVOUG meetup #4 - Case Study 10g to 11gLVOUG meetup #4 - Case Study 10g to 11g
LVOUG meetup #4 - Case Study 10g to 11g
 
MySQL Performance Schema : fossasia
MySQL Performance Schema : fossasiaMySQL Performance Schema : fossasia
MySQL Performance Schema : fossasia
 
Macy's: Changing Engines in Mid-Flight
Macy's: Changing Engines in Mid-FlightMacy's: Changing Engines in Mid-Flight
Macy's: Changing Engines in Mid-Flight
 
End-to-end Troubleshooting Checklist for Microsoft SQL Server
End-to-end Troubleshooting Checklist for Microsoft SQL ServerEnd-to-end Troubleshooting Checklist for Microsoft SQL Server
End-to-end Troubleshooting Checklist for Microsoft SQL Server
 

More from Dariia Seimova

Chris Homer - Moving the entire stack to k8s within a year – lessons learned
Chris Homer - Moving the entire stack to k8s within a year – lessons learnedChris Homer - Moving the entire stack to k8s within a year – lessons learned
Chris Homer - Moving the entire stack to k8s within a year – lessons learnedDariia Seimova
 
juliya tkachova - dev ops on scale from philosophy to toolset
juliya tkachova - dev ops on scale from philosophy to toolsetjuliya tkachova - dev ops on scale from philosophy to toolset
juliya tkachova - dev ops on scale from philosophy to toolsetDariia Seimova
 
rohit sharma - dev ops virtual assistant - automate devops stuffs using nlp a...
rohit sharma - dev ops virtual assistant - automate devops stuffs using nlp a...rohit sharma - dev ops virtual assistant - automate devops stuffs using nlp a...
rohit sharma - dev ops virtual assistant - automate devops stuffs using nlp a...Dariia Seimova
 
ostap soroka - aws architecture and a human body
ostap soroka - aws architecture and a human bodyostap soroka - aws architecture and a human body
ostap soroka - aws architecture and a human bodyDariia Seimova
 
victoriia basarab - special aspects of dev ops platform development
victoriia basarab - special aspects of dev ops platform developmentvictoriia basarab - special aspects of dev ops platform development
victoriia basarab - special aspects of dev ops platform developmentDariia Seimova
 
faisal mushtaq - an enterprise cloud cost management framework
faisal mushtaq - an enterprise cloud cost management frameworkfaisal mushtaq - an enterprise cloud cost management framework
faisal mushtaq - an enterprise cloud cost management frameworkDariia Seimova
 
mykola marzhan - jenkins on aws spot instance
mykola marzhan - jenkins on aws spot instancemykola marzhan - jenkins on aws spot instance
mykola marzhan - jenkins on aws spot instanceDariia Seimova
 
maksym vlasov - culture of git as roots of your ci
maksym vlasov - culture of git as roots of your cimaksym vlasov - culture of git as roots of your ci
maksym vlasov - culture of git as roots of your ciDariia Seimova
 
vitaly davidoff - end 2 end containers secure sdlc process
vitaly davidoff - end 2 end containers secure sdlc processvitaly davidoff - end 2 end containers secure sdlc process
vitaly davidoff - end 2 end containers secure sdlc processDariia Seimova
 
yegor maksymchuk - open shift as a cloud for data science
yegor maksymchuk - open shift as a cloud for data scienceyegor maksymchuk - open shift as a cloud for data science
yegor maksymchuk - open shift as a cloud for data scienceDariia Seimova
 

More from Dariia Seimova (10)

Chris Homer - Moving the entire stack to k8s within a year – lessons learned
Chris Homer - Moving the entire stack to k8s within a year – lessons learnedChris Homer - Moving the entire stack to k8s within a year – lessons learned
Chris Homer - Moving the entire stack to k8s within a year – lessons learned
 
juliya tkachova - dev ops on scale from philosophy to toolset
juliya tkachova - dev ops on scale from philosophy to toolsetjuliya tkachova - dev ops on scale from philosophy to toolset
juliya tkachova - dev ops on scale from philosophy to toolset
 
rohit sharma - dev ops virtual assistant - automate devops stuffs using nlp a...
rohit sharma - dev ops virtual assistant - automate devops stuffs using nlp a...rohit sharma - dev ops virtual assistant - automate devops stuffs using nlp a...
rohit sharma - dev ops virtual assistant - automate devops stuffs using nlp a...
 
ostap soroka - aws architecture and a human body
ostap soroka - aws architecture and a human bodyostap soroka - aws architecture and a human body
ostap soroka - aws architecture and a human body
 
victoriia basarab - special aspects of dev ops platform development
victoriia basarab - special aspects of dev ops platform developmentvictoriia basarab - special aspects of dev ops platform development
victoriia basarab - special aspects of dev ops platform development
 
faisal mushtaq - an enterprise cloud cost management framework
faisal mushtaq - an enterprise cloud cost management frameworkfaisal mushtaq - an enterprise cloud cost management framework
faisal mushtaq - an enterprise cloud cost management framework
 
mykola marzhan - jenkins on aws spot instance
mykola marzhan - jenkins on aws spot instancemykola marzhan - jenkins on aws spot instance
mykola marzhan - jenkins on aws spot instance
 
maksym vlasov - culture of git as roots of your ci
maksym vlasov - culture of git as roots of your cimaksym vlasov - culture of git as roots of your ci
maksym vlasov - culture of git as roots of your ci
 
vitaly davidoff - end 2 end containers secure sdlc process
vitaly davidoff - end 2 end containers secure sdlc processvitaly davidoff - end 2 end containers secure sdlc process
vitaly davidoff - end 2 end containers secure sdlc process
 
yegor maksymchuk - open shift as a cloud for data science
yegor maksymchuk - open shift as a cloud for data scienceyegor maksymchuk - open shift as a cloud for data science
yegor maksymchuk - open shift as a cloud for data science
 

Recently uploaded

Incoming and Outgoing Shipments in 1 STEP Using Odoo 17
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17Incoming and Outgoing Shipments in 1 STEP Using Odoo 17
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17Celine George
 
Proudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptxProudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptxthorishapillay1
 
EPANDING THE CONTENT OF AN OUTLINE using notes.pptx
EPANDING THE CONTENT OF AN OUTLINE using notes.pptxEPANDING THE CONTENT OF AN OUTLINE using notes.pptx
EPANDING THE CONTENT OF AN OUTLINE using notes.pptxRaymartEstabillo3
 
Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions  for the students and aspirants of Chemistry12th.pptxOrganic Name Reactions  for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions for the students and aspirants of Chemistry12th.pptxVS Mahajan Coaching Centre
 
Alper Gobel In Media Res Media Component
Alper Gobel In Media Res Media ComponentAlper Gobel In Media Res Media Component
Alper Gobel In Media Res Media ComponentInMediaRes1
 
DATA STRUCTURE AND ALGORITHM for beginners
DATA STRUCTURE AND ALGORITHM for beginnersDATA STRUCTURE AND ALGORITHM for beginners
DATA STRUCTURE AND ALGORITHM for beginnersSabitha Banu
 
Presiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha electionsPresiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha electionsanshu789521
 
Capitol Tech U Doctoral Presentation - April 2024.pptx
Capitol Tech U Doctoral Presentation - April 2024.pptxCapitol Tech U Doctoral Presentation - April 2024.pptx
Capitol Tech U Doctoral Presentation - April 2024.pptxCapitolTechU
 
Employee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptxEmployee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptxNirmalaLoungPoorunde1
 
Painted Grey Ware.pptx, PGW Culture of India
Painted Grey Ware.pptx, PGW Culture of IndiaPainted Grey Ware.pptx, PGW Culture of India
Painted Grey Ware.pptx, PGW Culture of IndiaVirag Sontakke
 
Introduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher EducationIntroduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher Educationpboyjonauth
 
Crayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon ACrayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon AUnboundStockton
 
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...Marc Dusseiller Dusjagr
 
How to Configure Email Server in Odoo 17
How to Configure Email Server in Odoo 17How to Configure Email Server in Odoo 17
How to Configure Email Server in Odoo 17Celine George
 
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxiammrhaywood
 
Enzyme, Pharmaceutical Aids, Miscellaneous Last Part of Chapter no 5th.pdf
Enzyme, Pharmaceutical Aids, Miscellaneous Last Part of Chapter no 5th.pdfEnzyme, Pharmaceutical Aids, Miscellaneous Last Part of Chapter no 5th.pdf
Enzyme, Pharmaceutical Aids, Miscellaneous Last Part of Chapter no 5th.pdfSumit Tiwari
 
भारत-रोम व्यापार.pptx, Indo-Roman Trade,
भारत-रोम व्यापार.pptx, Indo-Roman Trade,भारत-रोम व्यापार.pptx, Indo-Roman Trade,
भारत-रोम व्यापार.pptx, Indo-Roman Trade,Virag Sontakke
 

Recently uploaded (20)

Incoming and Outgoing Shipments in 1 STEP Using Odoo 17
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17Incoming and Outgoing Shipments in 1 STEP Using Odoo 17
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17
 
Proudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptxProudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptx
 
EPANDING THE CONTENT OF AN OUTLINE using notes.pptx
EPANDING THE CONTENT OF AN OUTLINE using notes.pptxEPANDING THE CONTENT OF AN OUTLINE using notes.pptx
EPANDING THE CONTENT OF AN OUTLINE using notes.pptx
 
Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions  for the students and aspirants of Chemistry12th.pptxOrganic Name Reactions  for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
 
Alper Gobel In Media Res Media Component
Alper Gobel In Media Res Media ComponentAlper Gobel In Media Res Media Component
Alper Gobel In Media Res Media Component
 
DATA STRUCTURE AND ALGORITHM for beginners
DATA STRUCTURE AND ALGORITHM for beginnersDATA STRUCTURE AND ALGORITHM for beginners
DATA STRUCTURE AND ALGORITHM for beginners
 
Presiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha electionsPresiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha elections
 
OS-operating systems- ch04 (Threads) ...
OS-operating systems- ch04 (Threads) ...OS-operating systems- ch04 (Threads) ...
OS-operating systems- ch04 (Threads) ...
 
Capitol Tech U Doctoral Presentation - April 2024.pptx
Capitol Tech U Doctoral Presentation - April 2024.pptxCapitol Tech U Doctoral Presentation - April 2024.pptx
Capitol Tech U Doctoral Presentation - April 2024.pptx
 
Employee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptxEmployee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptx
 
Painted Grey Ware.pptx, PGW Culture of India
Painted Grey Ware.pptx, PGW Culture of IndiaPainted Grey Ware.pptx, PGW Culture of India
Painted Grey Ware.pptx, PGW Culture of India
 
9953330565 Low Rate Call Girls In Rohini Delhi NCR
9953330565 Low Rate Call Girls In Rohini  Delhi NCR9953330565 Low Rate Call Girls In Rohini  Delhi NCR
9953330565 Low Rate Call Girls In Rohini Delhi NCR
 
Introduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher EducationIntroduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher Education
 
Crayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon ACrayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon A
 
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
 
How to Configure Email Server in Odoo 17
How to Configure Email Server in Odoo 17How to Configure Email Server in Odoo 17
How to Configure Email Server in Odoo 17
 
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
 
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
 
Enzyme, Pharmaceutical Aids, Miscellaneous Last Part of Chapter no 5th.pdf
Enzyme, Pharmaceutical Aids, Miscellaneous Last Part of Chapter no 5th.pdfEnzyme, Pharmaceutical Aids, Miscellaneous Last Part of Chapter no 5th.pdf
Enzyme, Pharmaceutical Aids, Miscellaneous Last Part of Chapter no 5th.pdf
 
भारत-रोम व्यापार.pptx, Indo-Roman Trade,
भारत-रोम व्यापार.pptx, Indo-Roman Trade,भारत-रोम व्यापार.pptx, Indo-Roman Trade,
भारत-रोम व्यापार.pptx, Indo-Roman Trade,
 

sveta smirnova - my sql performance schema in action

  • 1. MySQL Performance Schema in Action October, 13, 2018 Sveta Smirnova
  • 2. •Internal Diagnostic in MySQL •Performance Schema Configuration •5.6+: Statements Instrumentation •5.7+: Prepared Statements •5.7+: Stored Routines Instrumentation •5.7+: Locks Diagnostic •5.7+: Memory Usage •5.7+: Replication •5.7+: Variables •8.0+: Errors Summary Table of Contents 2
  • 3. • MySQL Support engineer • Author of • MySQL Troubleshooting • JSON UDF functions • FILTER clause for MySQL • Speaker • Percona Live, OOW, Fosdem, DevConf, HighLoad... Sveta Smirnova 3
  • 5. • INFORMATION SCHEMA • SHOW commands • Metadata • Storage engine extentions Runtime Can be anything Old Style 5
  • 6. • INFORMATION SCHEMA • SHOW commands • Status variables • Runtime Old Style 5
  • 7. • INFORMATION SCHEMA • SHOW commands • Status variables • Administration statements • ANALYZE • EXPLAIN • CHECK Old Style 5
  • 8. • INFORMATION SCHEMA • SHOW commands • Status variables • Administration statements • No or limited information on • Performance • Internal server operations Old Style 5
  • 9. • Introduced in version 5.5 Performance Schema 6
  • 10. • Introduced in version 5.5 • Runtime performances statistics Performance Schema 6
  • 11. • Introduced in version 5.5 • Runtime performances statistics • Wraps the diagnosed code locker = PSI_RWLOCK_CALL(start_rwlock_wrwait)( &state, lock->pfs_psi, PSI_RWLOCK_TRYEXCLUSIVELOCK, file_name, static_cast<uint>(line)); ret = rw_lock_x_lock_func_nowait(lock, file_name, line); if (locker != NULL) PSI_RWLOCK_CALL(end_rwlock_wrwait)( locker, static_cast<int>(ret)); Performance Schema 6
  • 12. How Does Performance Schema Works? 7
  • 15. • Must be supported by the component • Collects data only after they are enabled • Never frees allocated memory Performance Schema Limitations 10
  • 16. • Views on Performance Schema tables • Stored routines sys Schema 11
  • 17. • Views on Performance Schema tables • Stored routines • Easier configuration • Shortcuts to typical use cases sys Schema 11
  • 18. • Views on Performance Schema tables • Stored routines • Easier configuration • Shortcuts to typical use cases • 5.7+: Installed by default • Before: github.com/mysql/mysql-sys sys Schema 11
  • 19. • Statements • Locks • Memory Usage • Replication • Variables • Errors What will We Discuss Today? 12
  • 21. 5.6 • 52 tables • 561 instrs 589 Percona Server • 31 variables 5.7 • 87 tables • 1029 instrs 1067 Percona Server • 42 variables 8.0 • 102 tables • 1202 instrs 1229 Percona Server • 44 variables What is Inside? 14
  • 22. • Defaults • ON 5.7: Only global, thread, statements and transactions instrumentation 8.0: Memory and MDL Performance Schema Defaults 15
  • 23. • Defaults • ON 5.7: Only global, thread, statements and transactions instrumentation 8.0: Memory and MDL • All other instruments/consumers disabled Performance Schema Defaults 15
  • 24. • Turn required instrumentation ON Prepare 16
  • 25. • Turn required instrumentation ON • Use a pattern update performance_schema.setup_consumers set enabled=’yes’ where name like ’OUR_REQUIREMENT_%’; update performance_schema.setup_instruments set enabled=’yes’, timed=’yes’ where name like ’OUR_REQUIREMENT_%’; Prepare 16
  • 26. • Turn required instrumentation ON • Or easier call sys.ps_setup_enable_consumer(YOUR_CONSUMER); call sys.ps_setup_enable_instrument(YOUR_INSTRUMENT); Prepare 16
  • 27. • Turn required instrumentation ON • Be careful! • They are memory and CPU intensive • Do not turn them all ON until needed Prepare 16
  • 29. • Instruments mysql> select name from setup_instruments where name like ’statement%’; +-----------------------------------------------+ | name | +-----------------------------------------------+ | statement/sql/select | | statement/sql/create_table | | statement/sql/create_index | | statement/sql/alter_table | | statement/sql/update | | statement/sql/insert | | statement/sql/insert_select | | statement/sql/delete | ... • Enable those you want to examine Statements: configuration 18
  • 30. • Instruments • Consumers mysql> select name from setup_consumers where name like ’%statement%’; +--------------------------------+ | name | +--------------------------------+ | events_statements_current | -- Current statements | events_statements_history | -- Last 10 statements | events_statements_history_long | -- Last 1K statements | statements_digest | -- Digests +--------------------------------+ 4 rows in set (0.00 sec) Statements: configuration 18
  • 31. • Why statements are slow? • Examine more rows than return/change • Use disk instead of memory • Full table scan instead of index • This is not full list! What Can We Discover? 19
  • 32. • Why statements are slow? • Performance Schema has • Per-query statistics • Most evolving stages What Can We Discover? 19
  • 33. • events statements * and prepared statements instances tables • Important field names CREATED TMP DISK TABLES CREATED TMP TABLES SELECT FULL JOIN SELECT RANGE CHECK SELECT SCAN SORT MERGE PASSES SORT SCAN Why Statements are Slow? 20
  • 34. • events statements * and prepared statements instances tables • Views in sys schema • Important view names statement analysis statements with full table scans statements with runtimes in 95th percentile statements with sorting statements with temp tables statements with errors or warnings Why Statements are Slow? 20
  • 35. • events statements * and prepared statements instances tables • Views in sys schema • Digest tables • Combined statistics events statements summary by account by event name events statements summary by host by event name events statements summary by thread by event name events statements summary by user by event name events statements summary global by event name 5.7+: events statements summary by program Why Statements are Slow? 20
  • 36. • events statements * and prepared statements instances tables • Views in sys schema • Digest tables • Histogram Summary events statements histogram by digest events statements histogram global Do NOT mix with Optimizer histograms! Why Statements are Slow? 20
  • 37. • events statements * and prepared statements instances tables • Views in sys schema • Digest tables • events statements summary by digest SCHEMA NAME DIGEST DIGEST TEXT 8.0+: QUERY SAMPLE TEXT Why Statements are Slow? 20
  • 38. mysql> SELECT THREAD_ID TID, SUBSTR(SQL_TEXT, 1, 50) SQL_TEXT, ROWS_SENT RS, -> ROWS_EXAMINED RE,CREATED_TMP_TABLES,NO_INDEX_USED,NO_GOOD_INDEX_USED -> FROM performance_schema.events_statements_history -> WHERE NO_INDEX_USED=1 OR NO_GOOD_INDEX_USED=1G ********************** 1. row ********************** TID: 10124 SQL_TEXT: select emp_no, first_name, last_name from employee RS: 97750 RE: 397774 CREATED_TMP_TABLES: 0 NO_INDEX_USED: 1 NO_GOOD_INDEX_USED: 0 ... Which Queries Do Not Use Indexes? 21
  • 39. mysql> SELECT query, total_latency, no_index_used_count, rows_sent, -> rows_examined -> FROM sys.statements_with_full_table_scans -> WHERE db=’employees’ AND query NOT LIKE ’%performance_schema%’G ********************** 1. row ********************** query: SELECT COUNT ( ‘emp_no‘ ) FROM ... ‘emp_no‘ ) WHERE ‘title‘ = ? total_latency: 805.37 ms no_index_used_count: 1 rows_sent: 1 rows_examined: 397774 ... Take it Easy: Index Usage with sys Schema 22
  • 40. mysql> select DIGEST, DIGEST_TEXT, COUNT_STAR, SUM_CREATED_TMP_DISK_TABLES, -> SUM_SELECT_FULL_JOIN, SUM_SELECT_RANGE , SUM_SELECT_SCAN , SUM_NO_INDEX_USED, -> SUM_ROWS_SENT, SUM_ROWS_EXAMINED -> from events_statements_summary_by_digest where SUM_NO_INDEX_USED > 0G *************************** 1. row *************************** DIGEST: 3884185b07312b354c4918f2368d8fe2c431aeb8e39bf8ff5c3dcc6837c335a7 DIGEST_TEXT: SELECT ‘c‘ FROM ‘sbtest1‘ WHERE ‘id‘ BETWEEN ? AND ? COUNT_STAR: 1501791 SUM_CREATED_TMP_DISK_TABLES: 0 SUM_SELECT_FULL_JOIN: 0 SUM_SELECT_RANGE: 1501840 SUM_SELECT_SCAN: 4 SUM_NO_INDEX_USED: 4 SUM_ROWS_SENT: 150872400 SUM_ROWS_EXAMINED: 152872000 ... Take it Easy: with Digest Tables 23
  • 42. • events stages * tables Statements Deep Dive 25
  • 43. • events stages * tables • Same information as in table INFORMATION SCHEMA.PROCESSLIST or SHOW PROCESSLIST output • init • executing • Opening tables Statements Deep Dive 25
  • 44. • events stages * tables • Same information as in table INFORMATION SCHEMA.PROCESSLIST or SHOW PROCESSLIST output • init • executing • Opening tables • Replacement for SHOW PROFILE Statements Deep Dive 25
  • 45. • events stages * tables • Same information as in table INFORMATION SCHEMA.PROCESSLIST or SHOW PROCESSLIST output • init • executing • Opening tables • Replacement for SHOW PROFILE • Only server-level • No storage engine information! Statements Deep Dive 25
  • 46. • Instruments mysql> select name from setup_instruments where name like ’stage%’; +----------------------------------------------------------------------------+ | name | +----------------------------------------------------------------------------+ | stage/sql/After create | | stage/sql/allocating local table | | stage/sql/preparing for alter table | | stage/sql/altering table | | stage/sql/committing alter table to storage engine | | stage/sql/Changing master | | stage/sql/Checking master version ... • Enable those you want to examine Stages: configuration 26
  • 47. • Instruments • Consumers mysql> select name from setup_consumers where name like ’%stage%’; +----------------------------+ | name | +----------------------------+ | events_stages_current | -- Current stages | events_stages_history | -- Last 10 stages | events_stages_history_long | -- Last 1K stages +----------------------------+ 3 rows in set (0.00 sec) Stages: configuration 26
  • 48. • Everything, related to temporary tables • EVENT NAME LIKE ’stage/sql/%tmp%’ • Everything, related to locks • EVENT NAME LIKE ’stage/sql/%lock%’ • Everything in state ”Waiting for” • EVENT NAME LIKE ’stage/%/Waiting for%’ • Frequently met issues Stages Shortcuts 27
  • 49. • Everything, related to temporary tables • Everything, related to locks • Everything in state ”Waiting for” • Frequently met issues • EVENT NAME=’stage/sql/freeing items’ • EVENT NAME=’stage/sql/Sending data’ • EVENT NAME=’stage/sql/cleaning up’ • EVENT NAME=’stage/sql/closing tables’ • EVENT NAME=’stage/sql/end’ Stages Shortcuts 27
  • 50. mysql> SELECT eshl.event_name, sql_text, eshl.timer_wait/1000000000000 w_s -> FROM performance_schema.events_stages_history_long eshl -> JOIN performance_schema.events_statements_history_long esthl -> ON (eshl.nesting_event_id = esthl.event_id) -> WHERE eshl.timer_wait > 1*10000000000G *************************** 1. row *************************** event_name: stage/sql/Sending data sql_text: SELECT COUNT(emp_no) FROM employees JOIN salaries USING(emp_no) WHERE hire_date=from_date w_s: 0.8170 1 row in set (0.00 sec) Stages Example: Which Stage Run Critically Long? 28
  • 53. • Contains current prepared statements Table prepared statements instances 31
  • 54. • Contains current prepared statements • Statistics by • Which thread owns the statement • How many times executed • Optimizer statistics, similar to events statements * Table prepared statements instances 31
  • 56. • Instruments • Consumers • prepared statements instances Prepared Statements: configuration 32
  • 57. • Instruments • Consumers • Size mysql> select @@performance_schema_max_prepared_statements_instancesG *************************** 1. row *************************** @@performance_schema_max_prepared_statements_instances: -1 1 row in set (0.00 sec) Prepared Statements: configuration 32
  • 58. mysql1> prepare stmt from ’select count(*) from employees where hire_date > ?’; Query OK, 0 rows affected (0.00 sec) Statement prepared mysql1> set @hd=’1995-01-01’; Query OK, 0 rows affected (0.00 sec) mysql1> execute stmt using @hd; +----------+ | count(*) | +----------+ | 34004 | +----------+ 1 row in set (1.44 sec) Example: Prepared Statement 33
  • 59. mysql1> prepare stmt from ’select count(*) from employees where hire_date > ?’; Query OK, 0 rows affected (0.00 sec) Statement prepared mysql1> set @hd=’1995-01-01’; Query OK, 0 rows affected (0.00 sec) mysql1> execute stmt using @hd; +----------+ | count(*) | +----------+ | 34004 | +----------+ 1 row in set (1.44 sec) • Try EXECUTE with different values Example: Prepared Statement 33
  • 60. mysql2> select statement_name, sql_text, owner_thread_id, count_reprepare, -> count_execute, sum_timer_execute from prepared_statements_instancesG *************************** 1. row *************************** statement_name: stmt sql_text: select count(*) from employees where hire_date > ? owner_thread_id: 22 count_reprepare: 0 count_execute: 3 sum_timer_execute: 4156561368000 1 row in set (0.00 sec) mysql1> drop prepare stmt; Query OK, 0 rows affected (0.00 sec) mysql2> select * from prepared_statements_instancesG Empty set (0.00 sec) Example: diagnosis 34
  • 62. 5.7+: Stored Routines Instrumentation
  • 63. mysql> select * from setup_instruments where name like ’statement/sp%’; +--------------------------------+---------+-------+ | NAME | ENABLED | TIMED | +--------------------------------+---------+-------+ ... | statement/sp/stmt | YES | YES | | statement/sp/hreturn | | statement/sp/set | YES | YES | | statement/sp/cpush | | statement/sp/set_trigger_field | YES | YES | | statement/sp/cpop | | statement/sp/jump | YES | YES | | statement/sp/copen | | statement/sp/jump_if_not | YES | YES | | statement/sp/cclose | | statement/sp/freturn | YES | YES | | statement/sp/cfetch | | statement/sp/hpush_jump | YES | YES | | statement/sp/error | | statement/sp/hpop | YES | YES | | statement/sp/set_case_expr | ... +----------------------------+ 16 rows in set (0.00 sec) New Instruments 37
  • 64. • What happens inside the routine Stored Routines Instrumentation 38
  • 65. • What happens inside the routine • Queries, called from the routine • statement/sp/stmt Stored Routines Instrumentation 38
  • 66. • We will use this procedure CREATE DEFINER=‘root‘@‘localhost‘ PROCEDURE ‘sp_test‘(val int) BEGIN DECLARE CONTINUE HANDLER FOR 1364, 1048, 1366 BEGIN INSERT IGNORE INTO t1 VALUES(’Some string’); GET STACKED DIAGNOSTICS CONDITION 1 @stacked_state = RETURNED_SQLSTATE; GET STACKED DIAGNOSTICS CONDITION 1 @stacked_msg = MESSAGE_TEXT; END; INSERT INTO t1 VALUES(val); END Stored Routines: example 39
  • 67. • We will use this procedure CREATE DEFINER=‘root‘@‘localhost‘ PROCEDURE ‘sp_test‘(val int) BEGIN DECLARE CONTINUE HANDLER FOR 1364, 1048, 1366 BEGIN INSERT IGNORE INTO t1 VALUES(’Some string’); GET STACKED DIAGNOSTICS CONDITION 1 @stacked_state = RETURNED_SQLSTATE; GET STACKED DIAGNOSTICS CONDITION 1 @stacked_msg = MESSAGE_TEXT; END; INSERT INTO t1 VALUES(val); END • When HANDLER called? Stored Routines: example 39
  • 68. mysql> call sp_test(1); Query OK, 1 row affected (0.07 sec) mysql> select thread_id, event_name, sql_text from events_statements_history -> where event_name like ’statement/sp%’; +-----------+-------------------------+----------------------------+ | thread_id | event_name | sql_text | +-----------+-------------------------+----------------------------+ | 24 | statement/sp/hpush_jump | NULL | | 24 | statement/sp/stmt | INSERT INTO t1 VALUES(val) | | 24 | statement/sp/hpop | NULL | +-----------+-------------------------+----------------------------+ 3 rows in set (0.00 sec) Correct Value 40
  • 69. mysql> call sp_test(NULL); Query OK, 1 row affected (0.07 sec) mysql> select thread_id, event_name, sql_text from events_statements_history -> where event_name like ’statement/sp%’; +-----------+-------------------------+-------------------------------------------+ | thread_id | event_name | sql_text | +-----------+-------------------------+-------------------------------------------+ | 24 | statement/sp/hpush_jump | NULL | | 24 | statement/sp/stmt | INSERT INTO t1 VALUES(val) | | 24 | statement/sp/stmt | INSERT IGNORE INTO t1 VALUES(’Some str... | | 24 | statement/sp/stmt | GET STACKED DIAGNOSTICS CONDITION 1 @s... | | 24 | statement/sp/stmt | GET STACKED DIAGNOSTICS CONDITION 1 @s... | | 24 | statement/sp/hreturn | NULL | | 24 | statement/sp/hpop | NULL | +-----------+-------------------------+-------------------------------------------+ 7 rows in set (0.00 sec) HANDLER call 41
  • 72. • Table METADATA LOCKS 5.7+: MDL 44
  • 73. • Table METADATA LOCKS • Which thread is waiting for a lock 5.7+: MDL 44
  • 74. • Table METADATA LOCKS • Which thread is waiting for a lock • Which thread holds the lock 5.7+: MDL 44
  • 75. • Table METADATA LOCKS • Which thread is waiting for a lock • Which thread holds the lock • Not only for tables: GLOBAL, SCHEMA, TABLE, FUNCTION, PROCEDURE, EVENT, COMMIT, USER LEVEL LOCK, TABLESPACE 5.7+: MDL 44
  • 77. • Instruments • Consumers • METADATA LOCKS MDL: configuration 45
  • 78. mysql> select processlist_id, object_type, lock_type, lock_status, source -> from metadata_locks join threads on (owner_thread_id=thread_id) -> where object_schema=’employees’ and object_name=’titles’G *************************** 1. row *************************** processlist_id: 4 object_type: TABLE lock_type: EXCLUSIVE lock_status: PENDING -- waits source: mdl.cc:3263 *************************** 2. row *************************** processlist_id: 5 object_type: TABLE lock_type: SHARED_READ lock_status: GRANTED -- holds source: sql_parse.cc:5707 METADATA LOCKS: example 46
  • 80. • Information about locks, held by the engine 8.0.+: Data Locks 48
  • 81. • Information about locks, held by the engine • Only for engines with own locking models 8.0.+: Data Locks 48
  • 82. • Information about locks, held by the engine • Only for engines with own locking models • Currently only InnoDB 8.0.+: Data Locks 48
  • 83. • Information about locks, held by the engine • Only for engines with own locking models • Currently only InnoDB • Replacement for I S tables • INNODB LOCKS • INNODB LOCK WAITS 8.0.+: Data Locks 48
  • 84. Unlike most Performance Schema data collection, there are no instruments for controlling whether data lock information is collected or system variables for controlling data lock table sizes. The Performance Schema collects information that is already available in the server, so there is no memory or CPU overhead to generate this information or need for parameters that control its collection. https://dev.mysql.com/doc/refman/8.0/en/data-locks-table.html Data Locks: configuration 49
  • 85. • Which lock is held *************************** 4. row *************************** ENGINE: INNODB ENGINE_LOCK_ID: 2408:0:393:2 ENGINE_TRANSACTION_ID: 2408 THREAD_ID: 34 OBJECT_SCHEMA: test OBJECT_NAME: t INDEX_NAME: PRIMARY LOCK_TYPE: RECORD LOCK_MODE: X LOCK_STATUS: GRANTED LOCK_DATA: 12345 Table DATA LOCKS 50
  • 86. • Which lock is held • Which lock is requested *************************** 2. row *************************** ENGINE: INNODB ENGINE_LOCK_ID: 2409:0:393:2 ENGINE_TRANSACTION_ID: 2409 THREAD_ID: 36 OBJECT_SCHEMA: test OBJECT_NAME: t INDEX_NAME: PRIMARY LOCK_TYPE: RECORD LOCK_MODE: X LOCK_STATUS: WAITING LOCK_DATA: 12345 Table DATA LOCKS 50
  • 87. • Which lock is held • Which lock is requested • Both record-level and table level p_s> select * from data_locksG *************************** 1. row *************************** ... LOCK_TYPE: TABLE LOCK_MODE: IX LOCK_STATUS: GRANTED LOCK_DATA: NULL *************************** 2. row *************************** ... LOCK_TYPE: RECORD Table DATA LOCKS 50
  • 88. • Maps lock waits with granted locks Table DATA LOCK WAITS 51
  • 89. • Maps lock waits with granted locks • Only granted blocking other transactions p_s> select ENGINE, ... from data_lock_waitsG *************************** 1. row *************************** ENGINE: INNODB REQUESTING_ENGINE_LOCK_ID: 2409:0:393:2 REQUESTING_ENGINE_TRANSACTION_ID: 2409 REQUESTING_THREAD_ID: 36 BLOCKING_ENGINE_LOCK_ID: 2408:0:393:2 BLOCKING_ENGINE_TRANSACTION_ID: 2408 BLOCKING_THREAD_ID: 34 1 row in set (0,01 sec) Table DATA LOCK WAITS 51
  • 90. • Partition • Subpartition • Lock data • Requesting and blocking thread id New Information 52
  • 91. • View innodb lock waits In sys Schema 53
  • 92. • View innodb lock waits • Takes additional information from INFORMATION SCHEMA.INNODB TRX In sys Schema 53
  • 93. • View innodb lock waits sys> select locked_table, ... -> from innodb_lock_waitsG *************************** 1. row *************************** locked_table: ‘test‘.‘t‘ blocking_pid: 4 locked_index: PRIMARY blocking_query: NULL locked_type: RECORD blocking_trx_rows_locked: 1 waiting_trx_rows_locked: 1 blocking_trx_rows_modified: 1 waiting_trx_rows_modified: 0 sql_kill_blocking_query: KILL QUERY 4 waiting_pid: 6 sql_kill_blocking_connection: KILL 4 waiting_query: UPDATE t SET f=’bar’ WHERE id=12345 In sys Schema 53
  • 96. • Instruments mysql> select name from setup_instruments where name like ’memory%’; +-----------------------------------------------------+ | name | +-----------------------------------------------------+ ... | memory/sql/Gtid_state::group_commit_sidno_locks | | memory/sql/Mutex_cond_array::Mutex_cond | | memory/sql/TABLE_RULE_ENT | | memory/sql/Rpl_info_table | | memory/sql/Rpl_info_file::buffer | | memory/sql/db_worker_hash_entry | | memory/sql/rpl_slave::check_temp_dir | | memory/sql/rpl_slave::command_buffer | | memory/sql/binlog_ver_1_event | | memory/sql/SLAVE_INFO | | memory/sql/binlog_pos | ... Memory: configuration 56
  • 97. • Instruments • Consumers • Digest tables in Performance Schema • Views in sys schema Memory: configuration 56
  • 98. • Memory, used by internal mysqld structures Memory Diagnostic 57
  • 99. • Memory, used by internal mysqld structures • Aggregated by • Global • Thread • Account • Host • User Memory Diagnostic 57
  • 100. • Memory, used by internal mysqld structures • Aggregated by • Global • Thread • Account • Host • User • Nice views in sys schema Memory Diagnostic 57
  • 101. mysql> select thread_id tid, user, current_allocated ca, total_allocated -> from sys.memory_by_thread_by_current_bytes; +-----+-------------------------+-------------+-----------------+ | tid | user | ca | total_allocated | +-----+-------------------------+-------------+-----------------+ | 1 | sql/main | 2.53 GiB | 2.69 GiB | | 150 | root@127.0.0.1 | 4.06 MiB | 32.17 MiB | | 146 | sql/slave_sql | 1.31 MiB | 1.44 MiB | | 145 | sql/slave_io | 1.08 MiB | 2.79 MiB | ... | 60 | innodb/io_read_thread | 0 bytes | 384 bytes | | 139 | innodb/srv_purge_thread | -328 bytes | 754.21 KiB | | 69 | innodb/io_write_thread | -1008 bytes | 34.28 KiB | | 68 | innodb/io_write_thread | -1440 bytes | 298.05 KiB | | 74 | innodb/io_write_thread | -1656 bytes | 103.55 KiB | | 4 | innodb/io_log_thread | -2880 bytes | 132.38 KiB | | 72 | innodb/io_write_thread | -7632 bytes | 1.10 MiB | +-----+-------------------------+-------------+-----------------+ 145 rows in set (2.65 sec) Memory Usage by Thread 58
  • 102. mysql> select * from sys.memory_by_thread_by_current_bytes -> order by current_allocated descG *************************** 1. row *************************** thread_id: 152 user: lj@127.0.0.1 current_count_used: 325 current_allocated: 36.00 GiB current_avg_alloc: 113.43 MiB current_max_alloc: 36.00 GiB total_allocated: 37.95 GiB ... • Find threads, eating memory, in a second! Threads Statistics 59
  • 103. • memory summary by account by event name • memory summary by host by event name • memory summary by thread by event name • memory summary by user by event name • memory summary global by event name RAW Performance Schema tables 60
  • 104. • memory summary by account by event name • memory summary by host by event name • memory summary by thread by event name • memory summary by user by event name • memory summary global by event name • You must enable memory instrumentation! RAW Performance Schema tables 60
  • 105. • memory summary by account by event name • memory summary by host by event name • memory summary by thread by event name • memory summary by user by event name • memory summary global by event name • You must enable memory instrumentation! • sys schema includes user name RAW Performance Schema tables 60
  • 106. • NAME@HOST - regular user Users in sys.memory * tables 61
  • 107. • NAME@HOST - regular user • System users • sql/main • innodb/* • ... Users in sys.memory * tables 61
  • 108. • NAME@HOST - regular user • System users • sql/main • innodb/* • ... • Data comes from table THREADS Users in sys.memory * tables 61
  • 111. • Data from SHOW SLAVE STATUS available in replication * tables Major Improvements 64
  • 112. • Data from SHOW SLAVE STATUS available in replication * tables • Support of Replication Channels (Multi-master slave) Major Improvements 64
  • 113. • Data from SHOW SLAVE STATUS available in replication * tables • Support of Replication Channels (Multi-master slave) • More instruments for GTID Major Improvements 64
  • 114. • No need to parse SHOW output SLAVE STATUS 65
  • 115. • No need to parse SHOW output • Configuration • replication connection configuration • replication applier configuration SLAVE STATUS 65
  • 116. • No need to parse SHOW output • Configuration • IO thread • replication connection status SLAVE STATUS 65
  • 117. • No need to parse SHOW output • Configuration • IO thread • SQL thread • replication applier status • replication applier status by coordinator - MTS only • replication applier status by worker • replication applier global filters • replication applier filters SLAVE STATUS 65
  • 118. • No need to parse SHOW output • Configuration • IO thread • SQL thread • Group replication • replication group members • replication group member stats SLAVE STATUS 65
  • 119. • Configuration mysql> select * from replication_connection_configuration -> join replication_applier_configuration using(channel_name)G *************************** 1. row *************************** CHANNEL_NAME: HOST: 127.0.0.1 PORT: 13000 USER: root NETWORK_INTERFACE: AUTO_POSITION: 1 SSL_ALLOWED: NO SSL_CA_FILE: ... CHANNEL_NAME: DESIRED_DELAY: 0 SLAVE STATUS 66
  • 120. • State of IO Thread mysql> select * from replication_connection_statusG *************************** 1. row *************************** CHANNEL_NAME: GROUP_NAME: SOURCE_UUID: d0753e78-14ec-11e5-b3fb-28b2bd7442fd THREAD_ID: 21 SERVICE_STATE: ON COUNT_RECEIVED_HEARTBEATS: 17 LAST_HEARTBEAT_TIMESTAMP: 2015-06-17 15:49:08 RECEIVED_TRANSACTION_SET: LAST_ERROR_NUMBER: 0 LAST_ERROR_MESSAGE: LAST_ERROR_TIMESTAMP: 0000-00-00 00:00:00 1 row in set (0.00 sec) SLAVE STATUS 67
  • 121. • Coordinator thread for multiple workers mysql> select * from replication_applier_status join -> replication_applier_status_by_coordinator using(channel_name)G *************************** 1. row *************************** CHANNEL_NAME: SERVICE_STATE: ON REMAINING_DELAY: NULL COUNT_TRANSACTIONS_RETRIES: 0 THREAD_ID: 76 SERVICE_STATE: ON LAST_ERROR_NUMBER: 0 LAST_ERROR_MESSAGE: LAST_ERROR_TIMESTAMP: 0000-00-00 00:00:00.000000 LAST_PROCESSED_TRANSACTION: c634ce2d-cbb3-11e8-9532-0242cedce297:6 LAST_PROCESSED_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP: 2018-10-09 14:59:05.281818 ... Performance Schema: State of SQL Thread 68
  • 122. • Coordinator thread for multiple workers • Multi-source slave mysql> select * from replication_applier_status join -> replication_applier_status_by_worker using(channel_name)G *************************** 1. row *************************** CHANNEL_NAME: master-01 SERVICE_STATE: ON REMAINING_DELAY: NULL ... LAST_APPLIED_TRANSACTION: c634ce2d-cbb3-11e8-9532-0242cedce297:7 LAST_APPLIED_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP: 2018-10-09 15:12:56.285995 ... Performance Schema: State of SQL Thread 68
  • 123. • Coordinator thread for multiple workers • Multi-source slave *************************** 2. row *************************** CHANNEL_NAME: m-03 SERVICE_STATE: OFF ... LAST_ERROR_NUMBER: 1050 LAST_ERROR_MESSAGE: Worker 1 failed executing transaction ... LAST_ERROR_TIMESTAMP: 2018-10-09 15:15:14.306672 LAST_APPLIED_TRANSACTION: c63ae70c-cbb3-11e8-b634-0242cedce297:2 ... LAST_APPLIED_TRANSACTION_END_APPLY_TIMESTAMP: 2018-10-09 15:13:33.770744 APPLYING_TRANSACTION: c63ae70c-cbb3-11e8-b634-0242cedce297:3 ... Performance Schema: State of SQL Thread 68
  • 124. • RECEIVED TRANSACTION SET in table replication connection status GTID Diagnostics 69
  • 125. • RECEIVED TRANSACTION SET in table replication connection status • LAST SEEN TRANSACTION in replication applier status by worker GTID Diagnostics 69
  • 126. • Single-threaded slave mysql> select cs.CHANNEL_NAME, cs.SOURCE_UUID, cs.RECEIVED_TRANSACTION_SET, -> asw.LAST_APPLIED_TRANSACTION, aps.SERVICE_STATE from -> replication_connection_status cs join replication_applier_status_by_worker -> asw using(channel_name) join replication_applier_status aps -> using(channel_name) G *************************** 1. row *************************** CHANNEL_NAME: SOURCE_UUID: 9038967d-7164-11e6-8c88-30b5c2208a0f RECEIVED_TRANSACTION_SET: 9038967d-7164-11e6-8c88-30b5c2208a0f:1-2 LAST_APPLIED_TRANSACTION: 9038967d-7164-11e6-8c88-30b5c2208a0f:2 SERVICE_STATE: ON 1 row in set (0,00 sec) GTID: All in One Place 70
  • 127. • Single-threaded slave • Multi-threaded *************************** 1. row *************************** THREAD_ID: 30 SERVICE_STATE: ON RECEIVED_TRANSACTION_SET: 9038967d-7164-11e6-8c88-30b5c2208a0f:1-3 LAST_APPLIED_TRANSACTION: ... *************************** 8. row *************************** THREAD_ID: 37 SERVICE_STATE: ON RECEIVED_TRANSACTION_SET: 9038967d-7164-11e6-8c88-30b5c2208a0f:1-3 LAST_APPLIED_TRANSACTION: 9038967d-7164-11e6-8c88-30b5c2208a0f:3 8 rows in set (0,00 sec) GTID: All in One Place 70
  • 128. • Global mysql> select * from replication_applier_global_filtersG *************************** 1. row *************************** FILTER_NAME: REPLICATE_IGNORE_TABLE FILTER_RULE: test.test CONFIGURED_BY: CHANGE_REPLICATION_FILTER ACTIVE_SINCE: 2018-10-09 16:54:45.733490 1 row in set (0.00 sec) Replication Filters 71
  • 129. • Global • Worker’s mysql> select * from replication_applier_filtersG *************************** 1. row *************************** CHANNEL_NAME: m-01 FILTER_NAME: REPLICATE_IGNORE_TABLE FILTER_RULE: test.test CONFIGURED_BY: CHANGE_REPLICATION_FILTER ACTIVE_SINCE: 2018-10-09 16:54:45.733490 COUNTER: 0 *************************** 2. row *************************** CHANNEL_NAME: m-03 FILTER_NAME: REPLICATE_IGNORE_TABLE FILTER_RULE: test.t1 CONFIGURED_BY: CHANGE_REPLICATION_FILTER_FOR_CHANNEL ACTIVE_SINCE: 2018-10-09 16:54:53.881195 COUNTER: 0 Replication Filters 71
  • 130. • replication group members mysql> SELECT * FROM performance_schema.replication_group_membersG *************************** 1. row *************************** CHANNEL_NAME: group_replication_applier MEMBER_ID: c26fc705-cbcc-11e8-b5b8-0242cedce297 MEMBER_HOST: delly MEMBER_PORT: 24801 MEMBER_STATE: ONLINE MEMBER_ROLE: PRIMARY MEMBER_VERSION: 8.0.12 *************************** 2. row *************************** CHANNEL_NAME: group_replication_applier MEMBER_ID: f3d2feda-cbcc-11e8-9eb9-0242cedce297 MEMBER_HOST: delly MEMBER_PORT: 24802 MEMBER_STATE: RECOVERING MEMBER_ROLE: PRIMARY MEMBER_VERSION: 8.0.12 2 rows in set (0.00 sec) Group Replication 72
  • 131. • replication group members • replication group member stats mysql> SELECT * FROM performance_schema.replication_group_member_statsG *************************** 1. row *************************** CHANNEL_NAME: group_replication_applier VIEW_ID: 15390963914656312:3 MEMBER_ID: 1dfa4dee-cbcd-11e8-bad1-0242cedce297 COUNT_TRANSACTIONS_IN_QUEUE: 0 COUNT_TRANSACTIONS_CHECKED: 1 COUNT_CONFLICTS_DETECTED: 0 COUNT_TRANSACTIONS_ROWS_VALIDATING: 8 TRANSACTIONS_COMMITTED_ALL_MEMBERS: aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa:1-21 LAST_CONFLICT_FREE_TRANSACTION: aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa:21 COUNT_TRANSACTIONS_REMOTE_IN_APPLIER_QUEUE: 0 COUNT_TRANSACTIONS_REMOTE_APPLIED: 0 COUNT_TRANSACTIONS_LOCAL_PROPOSED: 1 COUNT_TRANSACTIONS_LOCAL_ROLLBACK: 0 Group Replication 72
  • 132. • Tables in mysql schema • slave master info • slave relay log info • slave worker info • Join with Performance Schema tables More Diagnostic 73
  • 133. • Tables in mysql schema • slave master info • slave relay log info • slave worker info • Join with Performance Schema tables • New instruments • memory • wait • stage More Diagnostic 73
  • 134. • Not only replication mysql> select * from log_statusG *************************** 1. row *************************** SERVER_UUID: c634ce2c-cbb3-11e8-8900-0242cedce297 LOCAL: {"gtid_executed": "c634ce2d-cbb3-11e8-9532-0242cedce297:1-2", "binary_log_file": "binlog.000001", "binary_log_position": 620} REPLICATION: {"channels": [{"channel_name": "", "relay_log_file": "delly-relay-bin.000002", "relay_log_position": 819, "relay_master_log_file": "binlog.000001", "exec_master_log_position": 611}]} STORAGE_ENGINES: {"InnoDB": {"LSN": 19177930, "LSN_checkpoint": 19177930}} 1 row in set (0.01 sec) Table log status 74
  • 135. • Not only replication • Currently only InnoDB supported! Table log status 74
  • 138. • Variables • global variables • session variables • user variables by thread • variables by thread Variables Instrumentation 77
  • 139. • Variables • Status variables • global status • session status • status by [account|host|thread|user] Variables Instrumentation 77
  • 140. • Variables • Status variables • show compatibility 56 = 0 Variables Instrumentation 77
  • 141. • Same information which is in • SHOW [GLOBAL] STATUS• I S.GLOBAL VARIABLES Deprecated in 5.7 Removed in 8.0.1 • I S.SESSION VARIABLES Deprecated in 5.7 Removed in 8.0.1 Global and Session Variables 78
  • 142. • Same information which is in • SHOW [GLOBAL] STATUS• I S.GLOBAL VARIABLES Deprecated in 5.7 Removed in 8.0.1 • I S.SESSION VARIABLES Deprecated in 5.7 Removed in 8.0.1 • Helps to watch session variables changes Global and Session Variables 78
  • 143. • Same information which is in • SHOW [GLOBAL] STATUS• I S.GLOBAL STATUS Deprecated in 5.7 Removed in 8.0.1 • I S.SESSION STATUS Deprecated in 5.7 Removed in 8.0.1 Status Variables 79
  • 144. mysql> SELECT ss.variable_name, ss.variable_value FROM session_status ss -> LEFT JOIN global_status gs USING(variable_name) -> WHERE ss.variable_value != gs.variable_value OR gs.variable_value IS NULL;; +----------------------------+----------------+ | variable_name | variable_value | +----------------------------+----------------+ | Bytes_sent | 197774 | | Handler_commit | 0 | | Handler_external_lock | 44 | | Handler_read_first | 3 | | Handler_read_key | 523 | | Handler_read_next | 0 | | Handler_read_rnd_next | 7241 | | Opened_table_definitions | 0 | ... Status Variables 80
  • 145. • variables by thread • status by • account • host • thread • user Possible to Group 81
  • 146. • variables by thread mysql> select * from variables_by_thread where variable_name=’tx_isolation’; +-----------+---------------+-----------------+ | THREAD_ID | VARIABLE_NAME | VARIABLE_VALUE | +-----------+---------------+-----------------+ | 71 | tx_isolation | REPEATABLE-READ | | 83 | tx_isolation | REPEATABLE-READ | | 84 | tx_isolation | SERIALIZABLE | +-----------+---------------+-----------------+ 3 rows in set, 3 warnings (0.00 sec) Possible to Group 81
  • 147. • variables by thread • status by mysql> select * from status_by_thread where variable_name=’Handler_write’; +-----------+---------------+----------------+ | THREAD_ID | VARIABLE_NAME | VARIABLE_VALUE | +-----------+---------------+----------------+ | 71 | Handler_write | 94 | | 83 | Handler_write | 477 | -- Most writes | 84 | Handler_write | 101 | +-----------+---------------+----------------+ 3 rows in set (0.00 sec) Possible to Group 81
  • 148. • Grouped by connection • Sometimes can help to find tricky bugs with persistent connections mysql> select * from user_variables_by_thread; +-----------+---------------+----------------+ | THREAD_ID | VARIABLE_NAME | VARIABLE_VALUE | +-----------+---------------+----------------+ | 71 | baz | boo | | 84 | foo | bar | +-----------+---------------+----------------+ 2 rows in set (0.00 sec) User Variables 82
  • 149. • VARIABLES INFO • Source of variable COMPILED EXPLICIT COMMAND LINE DYNAMIC • Path of option file if specified • Minimum and maximum values 8.0+: Variables Info 83
  • 150. • VARIABLES INFO mysql> select * from variables_info where set_user is not nullG *************************** 1. row *************************** VARIABLE_NAME: innodb_file_per_table VARIABLE_SOURCE: DYNAMIC VARIABLE_PATH: MIN_VALUE: 0 MAX_VALUE: 0 SET_TIME: 2018-10-09 22:17:34.638459 SET_USER: root SET_HOST: localhost *************************** 2. row *************************** VARIABLE_NAME: max_allowed_packet VARIABLE_SOURCE: DYNAMIC VARIABLE_PATH: MIN_VALUE: 1024 MAX_VALUE: 1073741824 SET_TIME: 2018-10-09 22:17:47.269913 ... 8.0+: Variables Info 83
  • 151. • VARIABLES INFO • Source of variable COMPILED EXPLICIT COMMAND LINE DYNAMIC • Path of option file if specified • Minimum and maximum values • No variable values in this table! 8.0+: Variables Info 83
  • 154. • Traditionally aggregated • events errors summary by account by error • events errors summary by host by error • events errors summary by thread by error • events errors summary by user by error • events errors summary global by error Errors Summary Tables 86
  • 155. • Traditionally aggregated • All tables have similar structure mysql> DESC events_errors_summary_global_by_error; +-------------------+---------------------+------+-----+---------------------+ | Field | Type | Null | Key | Default | +-------------------+---------------------+------+-----+---------------------+ | ERROR_NUMBER | int(11) | YES | UNI | NULL | | ERROR_NAME | varchar(64) | YES | | NULL | | SQL_STATE | varchar(5) | YES | | NULL | | SUM_ERROR_RAISED | bigint(20) unsigned | NO | | NULL | | SUM_ERROR_HANDLED | bigint(20) unsigned | NO | | NULL | | FIRST_SEEN | timestamp | YES | | 0000-00-00 00:00:00 | | LAST_SEEN | timestamp | YES | | 0000-00-00 00:00:00 | +-------------------+---------------------+------+-----+ 7 rows in set (0,03 sec) Errors Summary Tables 86
  • 156. mysql> select * from events_errors_summary_by_account_by_error -> where SUM_ERROR_RAISED > 100G *************** 1. row *************** USER: root HOST: localhost ERROR_NUMBER: 1213 ERROR_NAME: ER_LOCK_DEADLOCK SQL_STATE: 40001 SUM_ERROR_RAISED: 221 SUM_ERROR_HANDLED: 0 FIRST_SEEN: 2016-09-28 01:45:09 LAST_SEEN: 2016-09-28 01:47:02 *************** 2. row *************** USER: root HOST: localhost ERROR_NUMBER: 1287 ERROR_NAME: ER_WARN_DEPRECATED_SYNTAX SQL_STATE: HY000 SUM_ERROR_RAISED: 279 SUM_ERROR_HANDLED: 0 FIRST_SEEN: 2016-09-27 23:59:49 LAST_SEEN: 2016-09-28 01:47:05 Errors Summary: Which Accounts Raise More Errors? 87
  • 158. Nickolay Ihalainen for practice setup idea and 5.7 examples Alexander Rubin for EC2 setup and replication example Practice Examples Repository Special thanks 89
  • 159. Blog of MySQL developers team Mark Leith: author of sys schema Official reference manual Webinar ”Performance Schema for MySQL Troubleshooting” More information 90