the mysql performance schema & new sys schema

44
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

Upload: ted-wennmark

Post on 05-Dec-2014

123 views

Category:

Data & Analytics


4 download

DESCRIPTION

The MySQL Performance Schema & New SYS Schema Improve performance with a wealth of information at your fingertips

TRANSCRIPT

Page 1: The MySQL Performance Schema & New SYS Schema

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

Page 2: The MySQL Performance Schema & New SYS Schema

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

[email protected]

Page 3: The MySQL Performance Schema & New SYS Schema

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

Page 4: The MySQL Performance Schema & New SYS Schema

Copyright © 2014, Oracle and/or its affiliates. All

rights reserved.

Insert Information Protection Policy

Classification from Slide 12 4

What is Performance Schema?

Page 5: The MySQL Performance Schema & New SYS 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.

Page 6: The MySQL Performance Schema & New SYS Schema

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/%

Page 7: The MySQL Performance Schema & New SYS Schema

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

Page 8: The MySQL Performance Schema & New SYS Schema

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

Page 9: The MySQL Performance Schema & New SYS Schema

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

Page 10: The MySQL Performance Schema & New SYS Schema

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

Page 11: The MySQL Performance Schema & New SYS Schema

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

Page 12: The MySQL Performance Schema & New SYS Schema

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 |

+-------------------+

Page 13: The MySQL Performance Schema & New SYS Schema

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 |

+-------------------------------------------+

Page 14: The MySQL Performance Schema & New SYS Schema

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 |

+------------------------------------------------------+

Page 15: The MySQL Performance Schema & New SYS Schema

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

Page 16: The MySQL Performance Schema & New SYS Schema

Copyright © 2014, Oracle and/or its affiliates. All

rights reserved.

Insert Information Protection Policy

Classification from Slide 12 1

6

Profiling Examples

Page 17: The MySQL Performance Schema & New SYS Schema

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 …

Page 18: The MySQL Performance Schema & New SYS Schema

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)

Page 19: The MySQL Performance Schema & New SYS Schema

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/

Page 20: The MySQL Performance Schema & New SYS 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

Page 21: The MySQL Performance Schema & New SYS Schema

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

Page 22: The MySQL Performance Schema & New SYS Schema

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

Page 23: The MySQL Performance Schema & New SYS Schema

Copyright © 2014, Oracle and/or its affiliates. All

rights reserved.

Insert Information Protection Policy

Classification from Slide 12 2

4

The MySQL SYS Schema

Page 24: The MySQL Performance Schema & New 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

Page 25: The MySQL Performance Schema & New SYS Schema

Copyright © 2014, Oracle and/or its affiliates. All

rights reserved.

Insert Information Protection Policy

Classification from Slide 12 3

2

MySQL Workbench DEMO

Page 26: The MySQL Performance Schema & New SYS Schema

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

Page 27: The MySQL Performance Schema & New SYS Schema

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

Page 28: The MySQL Performance Schema & New SYS Schema

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

Page 29: The MySQL Performance Schema & New SYS Schema

Copyright © 2014, Oracle and/or its affiliates. All

rights reserved.

Open Settings

Before Running Performance Reports

Page 30: The MySQL Performance Schema & New SYS Schema

Copyright © 2014, Oracle and/or its affiliates. All

rights reserved.

First Run – Install SYS Schema

Page 31: The MySQL Performance Schema & New 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

Page 32: The MySQL Performance Schema & New SYS 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

Page 33: The MySQL Performance Schema & New SYS Schema

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

Page 34: The MySQL Performance Schema & New SYS Schema

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

Page 35: The MySQL Performance Schema & New SYS Schema

Copyright © 2014, Oracle and/or its affiliates. All

rights reserved.

General Lay Out - Header

Title and Brief Description

Sortable Columns

Column Labels indicate Units

Page 36: The MySQL Performance Schema & New SYS Schema

Copyright © 2014, Oracle and/or its affiliates. All

rights reserved.

General Lay Out – Footer

Page 37: The MySQL Performance Schema & New SYS Schema

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.

Page 38: The MySQL Performance Schema & New SYS Schema

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

Page 39: The MySQL Performance Schema & New SYS Schema

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

Page 40: The MySQL Performance Schema & New SYS Schema

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

Page 41: The MySQL Performance Schema & New SYS Schema

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

Page 42: The MySQL Performance Schema & New SYS Schema

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

Page 43: The MySQL Performance Schema & New SYS Schema

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/

Page 44: The MySQL Performance Schema & New SYS Schema

Copyright © 2014, Oracle and/or its affiliates. All

rights reserved.

Insert Information Protection Policy

Classification from Slide 12

51