Date post: | 05-Dec-2014 |
Category: |
Data & Analytics |
Upload: | ted-wennmark |
View: | 105 times |
Download: | 4 times |
Copyright © 2014, Oracle and/or its affiliates. All
rights reserved. Copyright © 2014, Oracle and/or its affiliates. All
rights reserved.
Insert Information Protection Policy
Classification from Slide 12 1
Copyright © 2014, Oracle and/or its affiliates. All
rights reserved.
Insert Information Protection Policy
Classification from Slide 12
2
Performance Schema & SYS schema
Ted Wennmark, principal system consultant and MySQL
cluster specialist, EMEA
Copyright © 2014, Oracle and/or its affiliates. All
rights reserved.
3
Program Agenda
What is Performance Schema?
Profiling Examples
Improvements made to date in MySQL 5.7
The MySQL SYS Schema
Easy to Use with MySQL Workbench
Copyright © 2014, Oracle and/or its affiliates. All
rights reserved.
Insert Information Protection Policy
Classification from Slide 12 4
What is Performance Schema?
Copyright © 2014, Oracle and/or its affiliates. All
rights reserved.
5
What is Performance Schema?
A storage engine, built for recording instrumentation
– PERFORMANCE_SCHEMA
A database schema to expose the instrumentation
– performance_schema
Records latency of events that happen within the server
All latency exposed to picosecond
Also tracks other information as appropriate
- Bytes, source position, object metadata, etc.
Copyright © 2014, Oracle and/or its affiliates. All
rights reserved.
6
Performance Schema in MySQL 5.5
17 Tables
222 Instruments
Instrument Event Class
File IO wait/io/file/%
Mutexes wait/synch/mutex/%
Read/Write Locks wait/synch/rwlock/%
Conditions wait/synch/cond/%
Copyright © 2014, Oracle and/or its affiliates. All
rights reserved.
7
Wait Events
Event Context
Event type and origin
Timing (~1 ms)
Database object info
Object type
Whether the event was nested
Further info as appropriate
mysql > select * from events_waits_current\G
THREAD_ID: 3
EVENT_ID: 216
END_EVENT_ID: 216
EVENT_NAME:
wait/io/file/innodb/innodb_log_file
SOURCE: fil0fil.cc:5886
TIMER_START: 8676267009310268
TIMER_END: 8676268029825193
TIMER_WAIT: 1020514925
SPINS: NULL
OBJECT_SCHEMA: NULL
OBJECT_NAME:
/home/ted/sandboxes/msb_5_6_21/data/ib_logfile1
INDEX_NAME: NULL
OBJECT_TYPE: FILE
OBJECT_INSTANCE_BEGIN: 139847142992128
NESTING_EVENT_ID: NULL
NESTING_EVENT_TYPE: NULL
OPERATION: sync
NUMBER_OF_BYTES: NULL
FLAGS: NULL
Copyright © 2014, Oracle and/or its affiliates. All
rights reserved.
8
Wait Events
SOURCE: fil0fil.cc:5886 -> File:storage/innobase/fil/fil0fil.cc
fil_flush(...)
{
...
os_file_flush(file); row #5886
...
}
File: storage/innobase/include/os0file.h
# define os_file_flush(file ...)
pfs_os_file_flush_func(file ...)
File: storage/innobase/include/os0file.ic
pfs_os_file_flush_func(...)
{
...
register_pfs_file_io_begin(...);
result = os_file_flush_func(file);
register_pfs_file_io_end(...);
return(result);
}
t_end – t_begin = Latency
Copyright © 2014, Oracle and/or its affiliates. All
rights reserved.
9
Performance Schema in MySQL 5.6
52 Tables (+35)
545 Instruments (+323)
Instrument Type Event Class
Statements statement/%
Stages stage/%
Table IO wait/io/table/%
Table Locks wait/lock/table/%
Network IO wait/io/socket/%
Idle Timing idle
Copyright © 2014, Oracle and/or its affiliates. All
rights reserved.
10
Statement Events
mysql> select * from events_statements_history_long limit 2\G
*************************** 1. row ***************************
THREAD_ID: 61
EVENT_ID: 1829116
END_EVENT_ID: 1829145
EVENT_NAME: statement/sql/select
SOURCE: mysqld.cc:957
TIMER_START: 12709482562961000
TIMER_END: 12709482692808000
TIMER_WAIT: 129847000
LOCK_TIME: 54000000
SQL_TEXT: SELECT intcol1,charcol1 FROM t1 WHERE id =
'fe85c640-5229-11e4-a018-7c7a9103'
DIGEST: d87e45e397f6958a419bfe32f1b958fd
DIGEST_TEXT: SELECT intcol1 , charcol1 FROM t1 WHERE id = ?
CURRENT_SCHEMA: mysqlslap
OBJECT_TYPE: NULL
OBJECT_SCHEMA: NULL
OBJECT_NAME: NULL
OBJECT_INSTANCE_BEGIN: NULL
MYSQL_ERRNO: 0
RETURNED_SQLSTATE: NULL
MESSAGE_TEXT: NULL
ERRORS: 0
WARNINGS: 0
ROWS_AFFECTED: 0
ROWS_SENT: 1
ROWS_EXAMINED: 1
CREATED_TMP_DISK_TABLES: 0
CREATED_TMP_TABLES: 0
SELECT_FULL_JOIN: 0
SELECT_FULL_RANGE_JOIN: 0
SELECT_RANGE: 0
SELECT_RANGE_CHECK: 0
SELECT_SCAN: 0
SORT_MERGE_PASSES: 0
SORT_RANGE: 0
SORT_ROWS: 0
SORT_SCAN: 0
NO_INDEX_USED: 0
NO_GOOD_INDEX_USED: 0
NESTING_EVENT_ID: NULL
NESTING_EVENT_TYPE: NULL
Copyright © 2014, Oracle and/or its affiliates. All
rights reserved.
Stored Programs
Transactions
11
Nested Events
Statements
Stages
Waits MySQL 5.5
MySQL 5.6
MySQL 5.7
mysql> select * from events_waits_history_long
******************** 1. row ********************
...
EVENT_NAME: wait/io/table/sql/handler
...
NESTING_EVENT_ID: 3603
NESTING_EVENT_TYPE: STAGE
Copyright © 2014, Oracle and/or its affiliates. All
rights reserved. 1
2
Performance Schema Table Types
Setup Tables
Used to define certain
configuration
dynamically
Can perform DML
against these tables
mysql> select table_name
-> from information_schema.tables
-> where table_schema like 'perf%'
-> and table_name like 'setup%';
+-------------------+
| table_name |
+-------------------+
| setup_actors |
| setup_consumers |
| setup_instruments |
| setup_objects |
| setup_timers |
+-------------------+
Copyright © 2014, Oracle and/or its affiliates. All
rights reserved. 1
3
Performance Schema Table Types
Raw Data Tables
Expose events, objects, or
instances of instruments in
a raw manner
Allow seeing a (brief)
history of raw event
metrics as well
+-------------------------------------------+
| table_name |
+-------------------------------------------+
| accounts |
| cond_instances |
| events_stages_current |
| events_stages_history |
| events_stages_history_long |
| events_statements_current |
| events_statements_history |
| events_statements_history_long |
| events_waits_current |
| events_waits_history |
| events_waits_history_long |
| file_instances |
| host_cache |
| hosts |
| mutex_instances |
| performance_timers |
| rwlock_instances |
| session_account_connect_attrs |
| session_connect_attrs |
| socket_instances |
| threads |
| users |
+-------------------------------------------+
Copyright © 2014, Oracle and/or its affiliates. All
rights reserved. 1
4
Performance Schema Table Types
Summary Tables
Summarise event
information over
multiple dimensions
Useful for longer term
monitoring of activity
+------------------------------------------------------+
| table_name |
+------------------------------------------------------+
| events_stages_summary_by_account_by_event_name |
| events_stages_summary_by_host_by_event_name |
| events_stages_summary_by_thread_by_event_name |
| events_stages_summary_by_user_by_event_name |
| events_stages_summary_global_by_event_name |
| events_statements_summary_by_account_by_event_name |
| events_statements_summary_by_digest |
| events_statements_summary_by_host_by_event_name |
| events_statements_summary_by_program |
| events_statements_summary_by_thread_by_event_name |
| events_statements_summary_by_user_by_event_name |
| events_statements_summary_global_by_event_name |
| events_waits_summary_by_account_by_event_name |
| events_waits_summary_by_host_by_event_name |
| events_waits_summary_by_instance |
| events_waits_summary_by_thread_by_event_name |
| events_waits_summary_by_user_by_event_name |
| events_waits_summary_global_by_event_name |
| file_summary_by_event_name |
| file_summary_by_instance |
| objects_summary_global_by_type |
| socket_summary_by_event_name |
| socket_summary_by_instance |
| table_io_waits_summary_by_index_usage |
| table_io_waits_summary_by_table |
| table_lock_waits_summary_by_table |
+------------------------------------------------------+
Copyright © 2014, Oracle and/or its affiliates. All
rights reserved.
15
Performance Schema Configuration
Configure Description
Variables like “perf%” Fixed RAM allocation, fixed size
Status like “perf%lost” Lost events due to too low buffers
Table “setup_instruments” Turn on/off individual instruments
Table “setup_consumers” Configure history / summary tables
Table “setup_objects” Filter events by table/schema
Table “setup_actors” Filter events by user/host
Copyright © 2014, Oracle and/or its affiliates. All
rights reserved.
Insert Information Protection Policy
Classification from Slide 12 1
6
Profiling Examples
Copyright © 2014, Oracle and/or its affiliates. All
rights reserved.
17
Analyzing Global Waits
Some mutex events that can affect global concurrency (if high in list):
wait/synch/mutex/innodb/buf_pool_mutex
Increase innodb_buffer_pool_instances
wait/synch/mutex/sql/Query_cache::structure_guard_mutex
Look in to disabling the Query Cache
wait/synch/mutex/myisam/MYISAM_SHARE::intern_lock
Use Innodb …
Copyright © 2014, Oracle and/or its affiliates. All
rights reserved.
18
Analyzing Global Waits
Some File IO events to watch for (if high in list):
wait/io/file/sql/FRM
Tune table_open_cache / table_definition_cache
wait/io/file/sql/file_parser (view definition parsing)
If high on 5.5, upgrade to 5.6, (which can cache these tables)
wait/io/file/sql/query_log and wait/io/file/sql/slow_log
Disable the general
Disable or tune what is logged to the slow log (long_query_time)
Copyright © 2014, Oracle and/or its affiliates. All
rights reserved.
19
Slave SQL Load Average
Watch wait/synch/cond/sql/MYSQL_RELAY_LOG::update_cond http://www.markleith.co.uk/2012/07/24/a-mysql-replication-load-average-with-performance-schema/
Copyright © 2014, Oracle and/or its affiliates. All
rights reserved.
20
Currently Executing Statements
SELECT_FULL_JOIN: 0
SELECT_FULL_RANGE_JOIN: 0
SELECT_RANGE: 1
SELECT_RANGE_CHECK: 0
SELECT_SCAN: 0
SORT_MERGE_PASSES: 0
SORT_RANGE: 0
SORT_ROWS: 0
SORT_SCAN: 0
NO_INDEX_USED: 0
NO_GOOD_INDEX_USED: 0
NESTING_EVENT_ID: NULL
NESTING_EVENT_TYPE: NULL
NESTING_EVENT_LEVEL: 0
mysql> select * from events_statements_current where timer_end is null\G
*************************** 8. row ***************************
THREAD_ID: 156945
EVENT_ID: 15312
END_EVENT_ID: NULL
EVENT_NAME: statement/sql/select
SOURCE: socket_connection.cc:94
TIMER_START: 99343994725205000
TIMER_END: NULL
TIMER_WAIT: NULL
LOCK_TIME: 145000000
SQL_TEXT: /* mem dbpool.ui */ select normalized0_.round_robin_bin as round1_1256_, /* ..snip .. */
DIGEST: NULL
DIGEST_TEXT: NULL
CURRENT_SCHEMA: mem
OBJECT_TYPE: NULL
OBJECT_SCHEMA: NULL
OBJECT_NAME: NULL
OBJECT_INSTANCE_BEGIN: NULL
MYSQL_ERRNO: 0
RETURNED_SQLSTATE: NULL
MESSAGE_TEXT: NULL
ERRORS: 0
WARNINGS: 0
ROWS_AFFECTED: 0
ROWS_SENT: 27
ROWS_EXAMINED: 0
CREATED_TMP_DISK_TABLES: 0
CREATED_TMP_TABLES: 0
All counters are live, and increment whilst
the statements execute
Copyright © 2014, Oracle and/or its affiliates. All
rights reserved.
Insert Information Protection Policy
Classification from Slide 12 2
1
Improvements made to date in MySQL 5.7
Copyright © 2014, Oracle and/or its affiliates. All
rights reserved. Copyright © 2014, Oracle and/or its affiliates. All
rights reserved.
Insert Information Protection Policy
Classification from Slide 12
Insert Picture Here
22
Memory Usage
Metadata Locking
Replication Configuration & Status
Prepared Statements
Transactions
Stored Programs
Copyright © 2014, Oracle and/or its affiliates. All
rights reserved.
Insert Information Protection Policy
Classification from Slide 12 2
4
The MySQL SYS Schema
Copyright © 2014, Oracle and/or its affiliates. All
rights reserved.
25
MySQL SYS Schema Overview
Originally called “ps_helper”
Started as a collection of views, procedures and functions,
designed to make reading raw Performance Schema data easier
Implements many of the common DBA and Developer use cases,
including many of those shown already
Now bundled within MySQL Workbench 6.1
Available on GitHub
https://github.com/MarkLeith/mysql-sys
Copyright © 2014, Oracle and/or its affiliates. All
rights reserved.
Insert Information Protection Policy
Classification from Slide 12 3
2
MySQL Workbench DEMO
Copyright © 2014, Oracle and/or its affiliates. All
rights reserved.
MySQL Workbench Overview Design, Develop, Administer, Migrate
And now adding – Performance • MySQL Database IDE
• Millions of Users
• Millions of Downloads
• Windows, OS X, Linux
Copyright © 2014, Oracle and/or its affiliates. All
rights reserved.
Performance Schema Reports
• Connect
• (DB Click or Open and Connect)
• Go to Management Tab
• If needed (Bottom Left)
• Go to Performance Reports
• New Performance Section
Copyright © 2014, Oracle and/or its affiliates. All
rights reserved.
New Screen – Performance Schema Setup
YES – its on NO – its off Advanced – for power users
Copyright © 2014, Oracle and/or its affiliates. All
rights reserved.
Open Settings
Before Running Performance Reports
Copyright © 2014, Oracle and/or its affiliates. All
rights reserved.
First Run – Install SYS Schema
Copyright © 2014, Oracle and/or its affiliates. All
rights reserved.
SYS now Added
• No Tables
• Only
• Views
• SPs
• Functions
• Operates on
• Performance Schema
• Information Schema
Copyright © 2014, Oracle and/or its affiliates. All
rights reserved.
sys.<table> versus sys.x$<table>
• Providing 2 options
• One is easy
• To read in a query
• Other (x$) is easier
• To compare
• To Export to spreadsheet
• To Graph
• To consume in code
Copyright © 2014, Oracle and/or its affiliates. All
rights reserved.
SYS - SPs and Functions
SPs Used to
simplify management
FUNCTIONS
Used for Formatting
and Simple Checks
Copyright © 2014, Oracle and/or its affiliates. All
rights reserved.
Many WB Performance Reports
• WB wrappers many SYS views
• If we’ve missed a needed report or
view
• Let us know
• Happy to add more
• Even if not performance related
• Could go in an Inspector
Copyright © 2014, Oracle and/or its affiliates. All
rights reserved.
General Lay Out - Header
Title and Brief Description
Sortable Columns
Column Labels indicate Units
Copyright © 2014, Oracle and/or its affiliates. All
rights reserved.
General Lay Out – Footer
Copyright © 2014, Oracle and/or its affiliates. All
rights reserved.
Reports #1: IO Reports
For
Files, Event Categories, User/Thread
Quickly
View, Sort
By #, Time, Reads, Writes, Percentages
Look for Hot Spots
Use to determine system requirements, tuning, etc.
Copyright © 2014, Oracle and/or its affiliates. All
rights reserved.
Reports #2: High Cost SQL Statements
Look at query statements and statistics
Look for Full Table Scans
Frequency of execution
Errors, Warnings
Long Runtimes – Total, Max, Ave
Large numbers of Rows – Total, Max, Ave
Usage of Temp Tables
Copyright © 2014, Oracle and/or its affiliates. All
rights reserved.
Reports #3: Database Schema Statistics
Quickly Review Various Stats
Counts
Rows
Timing
Paging
Buffering
IOs
Easily find Full Scans
Spot Unused Indexes
Also See Schema/Table Inspectors
Table, Column, Index,… Statis
Copyright © 2014, Oracle and/or its affiliates. All
rights reserved.
Reports #5: Wait Event Times (For Experts)
Wait Event Analysis is Complex
However for power expert users
These reports show collected data
Show the queries used to collect
Provides Statistics
Breaks out events by Users and Classes
Copyright © 2014, Oracle and/or its affiliates. All
rights reserved.
Reports #6: InnoDB Statistics
Quick views
Aggregated
By Schema
By Table
Easy to sort by
Allocation, Data,
Pages, Pages hashed, Old Pages
Rows cached
Copyright © 2014, Oracle and/or its affiliates. All
rights reserved.
Quick Links
Download:
http://dev.mysql.com/downloads/tools/workbench/
Bugs:
http://bugs.mysql.com
Forums:
http://forums.mysql.com/index.php?151
Copyright © 2014, Oracle and/or its affiliates. All
rights reserved.
Supporting Resources
Oracle and MySQL
MySQL
MySQL Workbench
Team Blog
https://blogs.oracle.com/mysqlworkbench/
MySQL Community Edition
MySQL Enterprise Edition
MySQL Blog, Twitter, Facebook
Optimizer Blog
http://oysteing.blogspot.co.uk/
Copyright © 2014, Oracle and/or its affiliates. All
rights reserved.
Insert Information Protection Policy
Classification from Slide 12
51