This document discusses MySQL 5.6 and its improvements to operational and diagnostic capabilities. Key enhancements include online DDL operations that do not block reads or writes, buffer pool dump and restore for faster startup, import/export of partitioned tables, and transportable tablespaces. Diagnostic tools were improved with EXPLAIN showing more details, the ability to EXPLAIN updates and deletes, optimizer tracing, and the performance schema providing detailed query level instrumentation and monitoring by default.
MySQL 5.7 NEW FEATURES, BETTER PERFORMANCE, AND THINGS THAT WILL BREAK -- Mid...Dave Stokes
MySQL is on the way and this presentation covers the new features, improved performance, and better admin that will come with 5.7. But there are some things that are changing that you need to know before you upgrade
MySQL 5.7 NEW FEATURES, BETTER PERFORMANCE, AND THINGS THAT WILL BREAK -- Mid...Dave Stokes
MySQL is on the way and this presentation covers the new features, improved performance, and better admin that will come with 5.7. But there are some things that are changing that you need to know before you upgrade
MySQL Performance Tuning. Part 1: MySQL Configuration (includes MySQL 5.7)Aurimas Mikalauskas
Is my MySQL server configured properly? Should I run Community MySQL, MariaDB, Percona or WebScaleSQL? How many innodb buffer pool instances should I run? Why should I NOT use the query cache? How do I size the innodb log file size and what IS that innodb log anyway? All answers are inside.
Aurimas Mikalauskas is a former Percona performance consultant and architect currently writing and teaching at speedemy.com. He's been involved with MySQL since 1999, scaling and optimizing MySQL backed systems since 2004 for companies such as BBC, EngineYard, famous social networks and small shops like EstanteVirtual, Pine Cove and hundreds of others.
Additional content mentioned in the presentation can be found here: http://speedemy.com/17
MySQL® 5.7 is a great release which has a lot to offer, especially in the development and replication areas. It provides a lot of new optimizer features for developers to take advantage of, a much more powerful GIS function and high performance JSON data type, allowing for a more powerful store for semi-structured data. It also features dramatically improved Performance Schema, Parallel and Multi-Source replication, allowing you to scale much further than ever before, just to give you a taste. In this webinar, we will provide an overview of the most important MySQL 5.7 features.
This webinar will be part of a 3-part series which will include MySQL 5.7 for Developers and MySQL 5.7 for DBAs.
MySQL Performance Tuning. Part 1: MySQL Configuration (includes MySQL 5.7)Aurimas Mikalauskas
Is my MySQL server configured properly? Should I run Community MySQL, MariaDB, Percona or WebScaleSQL? How many innodb buffer pool instances should I run? Why should I NOT use the query cache? How do I size the innodb log file size and what IS that innodb log anyway? All answers are inside.
Aurimas Mikalauskas is a former Percona performance consultant and architect currently writing and teaching at speedemy.com. He's been involved with MySQL since 1999, scaling and optimizing MySQL backed systems since 2004 for companies such as BBC, EngineYard, famous social networks and small shops like EstanteVirtual, Pine Cove and hundreds of others.
Additional content mentioned in the presentation can be found here: http://speedemy.com/17
MySQL® 5.7 is a great release which has a lot to offer, especially in the development and replication areas. It provides a lot of new optimizer features for developers to take advantage of, a much more powerful GIS function and high performance JSON data type, allowing for a more powerful store for semi-structured data. It also features dramatically improved Performance Schema, Parallel and Multi-Source replication, allowing you to scale much further than ever before, just to give you a taste. In this webinar, we will provide an overview of the most important MySQL 5.7 features.
This webinar will be part of a 3-part series which will include MySQL 5.7 for Developers and MySQL 5.7 for DBAs.
MySQL 5.6, news in 5.7 and our HA optionsTed Wennmark
Join us for this free MySQL Tech Tour to learn straight from the source how you can benefit from Oracle’s latest MySQL innovations. Our technical experts will help you understand how to take advantage of the wide range of new features and enhancements available in MySQL Fabric, MySQL 5.6, MySQL Cluster and other MySQL solutions. They will share tips & tricks to help you get the most of your database. You will also discover what’s coming next in MySQL 5.7.
MySQL Performance - SydPHP October 2011Graham Weldon
A talk on optimisations around MySQL on the server side, and through the use of PHP extensions to reduce disk writes to provide for more IO access for MySQL. This was presented at SydPHP in October 2011
Going thru the era of IoT that involves lots more and much bigger data, we need a faster database. MySQL 5.7 gives you 3x speed of its predecessor and able to reach 1.6m qps on our select benchmark.
Technical Introduction to PostgreSQL and PPASAshnikbiz
Let's take a look at:
PostgreSQL and buzz it has created
Architecture
Oracle Compatibility
Performance Feature
Security Features
High Availability Features
DBA Tools
User Stories
What’s coming up in v9.3
How to start adopting
Based on the popular blog series, join me in taking a deep dive and a behind the scenes look at how SQL Server 2016 “It Just Runs Faster”, focused on scalability and performance enhancements. This talk will discuss the improvements, not only for awareness, but expose design and internal change details. The beauty behind ‘It Just Runs Faster’ is your ability to just upgrade, in place, and take advantage without lengthy and costly application or infrastructure changes. If you are looking at why SQL Server 2016 makes sense for your business you won’t want to miss this session.
Ashnik EnterpriseDB PostgreSQL - A real alternative to Oracle Ashnikbiz
A Technical introduction to PostgreSQL and Postgres Plus -
Enterprise Class PostgreSQL Database from EDB - You have a ‘Real’ alternative to Oracle and other conventional proprietary Databases
Mysql User Camp : 20-June-14 : Mysql New features and NoSQL SupportMysql User Camp
This slide was presented at Mysql User Camp Event on 20-June-14 at Oracle bangalore. This presentation gives a good insight about New Features in Mysql 5.7 DMR 4 and Nosql Support in Mysql.
MySQL 5.6 - Operations and Diagnostics Improvements
1. <Insert Picture Here>
MySQL 5.6 - Online Operations and Improved Diagnostics
Morgan Tocker, MySQL Community Manager
http://www.tocker.ca/
2. Safe Harbor Statement
The
following
is
intended
to
outline
our
general
product
direction.
It
is
intended
for
information
purposes
only,
and
may
not
be
incorporated
into
any
contract.
It
is
not
a
commitment
to
deliver
any
material,
code,
or
functionality,
and
should
not
be
relied
upon
in
making
purchasing
decisions.
The
development,
release,
and
timing
of
any
features
or
functionality
described
for
Oracle’s
products
remains
at
the
sole
discretion
of
Oracle.
3. 4 Years of MySQL Innovation
MySQL Cluster 7.3
MySQL Migration Wizard
MySQL Workbench 6.0
MySQL 5.6
MySQL 5.5
Windows installer & Tools MySQL 5.7 M y S Q L
Cluster
MySQL
MySQL Enterprise Monitor 2.3 & e r
M a n a g 3.0
Applier for
Hadoop
MySQL Enterprise Backup
Security
MySQL Utilities
MySQL Workbench 5.2 & 6.0
Scalability
MySQL Cluster 7.2
HA
MySQL Enterprise
MySQL Cluster 7.1
O r a c l e C e r t i f i c a t i o n s Audit
4. Agenda for Today
• Quick Intro to MySQL 5.6
• Operational Enhancements
• Diagnostic Enhancements
6. The Path to MySQL 5.6
DMR1-
DMR2
DMR3
DMR4
DMR5
RC
April 2011
Oct 2011
Dec 2011
Aug 2012
Aug 2012
Nov 2012
Optimizer:
Optimizer:
Optimizer:
Optimizer:
InnoDB:
MRR, ICP, File
Sort
BKA, New
EXPLAIN, Traces
Sub-Queries
JSON EXPLAIN,
Sub-Queries
TT, Online DDL,
Memcached API
New Server
Defaults
InnoDB:
InnoDB:
Replication:
Replication:
Split Kernel Mutex,
MT Purge
Dump/Restore
Buffer Pool
GTIDs
Binary Log Group
Commit
Replication:
More P_S
!
Crash-Safe, MultiThread Slave,
Checksums
Memcached API
New P_S
Partitioning
Improvements
!
!
InnoDB:
Full Text Index,
Read-Only
Optimizations
Condition
Handling
Fractional
Seconds
!
TIMESTAMP &
DATESTAMP
More P_S
!
Password Mgmt
More Partitioning
!
More Partitioning
More GTID, TT
7. By Lines of Code
• “MySQL 5.6 is the largest MySQL code size increase in a MySQL
version ever. The last time we saw anything like this was with the
merging of MySQL Cluster in 4.1. At the very least, Oracle is paying
people to write lines of code to extent that nobody has before.” Stewart Smith
8. By Bugs Fixed
• 1991 Bugs Fixed in 5.6
• 3763 Bugs Fixed in Total Since MySQL 5.5 GA
9. By Major Features
•
•
•
•
•
•
•
•
•
Better Performance and Scalability
Better Transactional Throughput
Better Performance with Solid State Drives
Better Query Execution Times and Diagnostics
Better Application Availability
NoSQL Access to InnoDB
InnoDB Fulltext Search
Improved Replication and High Availability
Improved Performance Schema
10. By Actual Features / Enhancements
Scalable Read Only Transactions
Improvement to Buffer Pool Flushing
Precise spatial operations in GIS
Concurrent Innodb data file extension
Subquery Optimizations
Password hashes instead of plain passwords in Query Logs
Non-Recursive Deadlock Detection
More efficient Optimizer
SHA256 hashing with Salt for Authentication
Faster Locking Primitives
Optimized ROW Based Replication
Use obfuscated password storage for command line tools
Improved Innodb Thread Concurrency
Multi-Threaded Slave
Policy Based password validation
Multiple background Purge Threads
Global Transaction Identifiers
Plugin authentication support for Replication
Improved Purge lag control (now works)
Crash Safe Slave and Binlog
INNODB_METRICS (I_S)
Split of “Kernel Mutex”
Replication Event Checksums
Meta Data Information Tables (I_S)
Data Dictionary Cache
Time Delayed Replication
Buffer Pool Information Tables (I_S)
Improved Adaptive Flushing
Server UUID
Reduced Overhead (PS)
Page Cleaner/Separate Flush Thread
Improved Logging for Row based Replication
Simplified Configuration (PS)
Group Commit for Binary Log
Replication Utilities for Failover and Admin
Table Access instrumentation (PS)
Fight Cache Coherence and False Sharing issues
Separate Tablespaces for Innodb Undo Logs
Statements instrumentation (PS)
Reduced Innodb Memory Fragmentation
Fast Restart – Preloading Innodb Buffer Pool
Stages Instrumentation (PS)
Reduced Locking for Partitioned tables
Online DDL
Aggregations by User, Host etc (PS)
Reduced Contention for LOCK_open
Import/Export for Partitioned Tables
Network IO Instrumentation (PS)
Support for multiple table_open_cache instances
Remote Binlog Backup
Show Host Cache Contents (PS)
Large (over 4GB) redo logs support
Innodb Transportable Tablespaces
Improved File I/O Instrumentation (PS)
Index Condition pushdown (ICP)
New configuration files defaults
Explain for UPDATE/DELETE queries
Multi-Range-Read (MRR)
User Defined DATA DIRECTORY for Innodb Tables
JSON output with more information
Faster ORDER BY nidxcol LIMIT N
Connection Attributes
Optimizer Tracing
Persistent Statistics for Innodb
MemcacheD API in Innodb
Deadlock Logging
Improvements to Innodb Compression
Explicit Partition Selection in queries
GET DIAGNOSTICS
Fast Page Checksums (CRC32)
Full Text Search index for Innodb
4K and 8K Page sizes for Innodb
Microsecond TIME precision
12. InnoDB Online DDL
The beginning
All DDL requires the
table to be recreated,
along with all
indexes.
MySQL 5.1 Nov 2008
MySQL 5.5 Dec 2010
MySQL 5.6 Jan 2013
Fast ALTER
TABLE added.
Changes to
ENUM/SET
online.
Fast index
creation
added. Adding
indexes
changes to
SHARED lock,
dropping
indexes
immediate*
Online DDL.
Many changes
do not block
readers or
writers.
13. In-Place?
Copies Table?
Allows Concurrent
DML?
Allows Concurrent
Query?
CREATE INDEX,ADD INDEX
Yes*
No*
Yes
Yes
ADD FULLTEXT INDEX
MySQL 5.6 Online DDL
Operation
Yes
No*
No
Yes
DROP INDEX
Yes
No
Yes
Yes
Set default value for a column
Yes
No
Yes
Yes
Change auto-increment value for a column
Yes
No
Yes
Yes
Add a foreign key constraint
Yes*
No*
Yes
Yes
Drop a foreign key constraint
Yes
No
Yes
Yes
Rename a column
Yes*
No*
Yes*
Yes
Add a column
Yes
Yes
Yes*
Yes
Drop a column
Yes
Yes
Yes
Yes
Reorder columns
Yes
Yes
Yes
Yes
Change ROW_FORMAT property
Yes
Yes
Yes
Yes
Change KEY_BLOCK_SIZE property
Yes
Yes
Yes
Yes
Make column NULL
Yes
Yes
Yes
Yes
Make column NOT NULL
Yes*
Yes
Yes
Yes
Change data type of column
No
Yes
No
Yes
Add primary key
Yes*
Yes
Yes
Yes
Drop primary key and add another
Yes
Yes
Yes
Yes
Drop primary key
No
Yes
No
Yes
Convert character set
No
Yes
No
Yes
Specify character set
No
Yes
No
Yes
Rebuild with FORCE option
No
Yes
No
Yes
Via http://dev.mysql.com/doc/refman/5.6/en/innodb-create-index-overview.html
14. InnoDB Online DDL (cont.)
• Also supports additional syntax LOCK=NONE and
ALGORITHM=INPLACE;
mysql> ALTER TABLE a DROP PRIMARY KEY, LOCK=NONE;!
ERROR 1846 (0A000): LOCK=NONE is not supported. !
Reason: Dropping a primary key is not allowed without !
also adding a new primary key. Try LOCK=SHARED.
15. Buffer Pool Dump and Restore
• Automatic cache priming feature.
• Saves LRU contents on shutdown (or on demand)
and reloads pages into memory on startup.
• Not enabled by default:
• innodb_buffer_pool_load_at_startup = 1
• innodb_buffer_pool_dump_at_shutdown = 1
16. Import/Export Partitioned Tables
• Very helpful feature for time-series data.
• Swap partitions with regular tables:
ALTER TABLE pt
EXCHANGE PARTITION p
WITH TABLE t;
17. Transportable Tablespaces
• InnoDB data can be copied to a different server
without using mysqldump:
/* source */
FLUSH TABLES tableName FOR EXPORT;
/* destination */
ALTER TABLE tableName IMPORT TABLESPACE;
18. Important Bugs Fixed
• InnoDB not complaining when innodb_log_file_size
has changed between restarts:
2013-08-18 20:49:29 17883 [Warning] InnoDB: Resizing redo log from
2*3072 to 2*8192 pages, LSN=5980091!
2013-08-18 20:49:29 17883 [Warning] InnoDB: Starting to delete and
rewrite log files.!
2013-08-18 20:49:29 17883 [Note] InnoDB: Setting log file ./
ib_logfile101 size to 128 MB!
InnoDB: Progress in MB: 100!
2013-08-18 20:49:30 17883 [Note] InnoDB: Setting log file ./
ib_logfile1 size to 128 MB!
InnoDB: Progress in MB: 100!
2013-08-18 20:49:30 17883 [Note] InnoDB: Renaming log file ./
ib_logfile101 to ./ib_logfile0
19. Replication with GTIDs
• Binary log coordinates can now be global - rather
than per instance.
• Which means failover/topology changes are now
much easier.
20. Multi-threaded slaves!
• On a per schema basis, replication supports parallel
apply on slaves.
• In 5.7 it will be intra-schema parallel.
23. EXPLAIN UPDATE/DELETE statements
• Previously only SELECT statements could be
explained.
• Required one to rewrite UPDATE/DELETE
statement to a SELECT in order to EXPLAIN.
27. “The OLD way”
• Largely SHOW GLOBAL STATUS + SHOW
ENGINE INNODB STATUS tuning.
• Some perf tools external to MySQL provided by the
operating system.
• Barrier to entry sometimes higher.
28. Old way is not always instrumented to
a useable detail…
• With SHOW GLOBAL STATUS, you can see a ratio
of Temp tables in memory versus Temp tables on
disk.
• OK, How many rows per temp table on disk?
• If it’s a couple, it might just be logical IO.
29. Not Query-Oriented
• SHOW STATUS shows created temporary tables as
a counter, but:
• Can’t find which query created.
30. Difficult for Tooling
• InnoDB status contains a lot of magic numbers.
Tools like cacti-templates require light weight parsers
just to be able to read the information:
!
------------
!
TRANSACTIONS
------------
Trx !id counter 0 290328385
Purge done for trx's n:o < 0 290315608 undo n:o < 0 17
History list length 20
Total number of lock structs in row lock hash table 70
LIST OF TRANSACTIONS FOR EACH SESSION:
---TRANSACTION 0 0, not started, process no 3491
MySQL thread id 32, query id 4668737 localhost heikki
show innodb status!
31. The New Way - Performance Schema
• Series of views which expose internal server
performance data with timing information.
• Similar to “Oracle Wait Interface”.
32. Performance Schema
• Allows you to monitor server events/stages of
execution.
• Place “probes” at instrumentation points.
• Focus is on low overhead/fast collection.
• Uses fixed memory, designed to be able to use in
production.
33. Performance Schema in MySQL 5.5
• Instrumented features which are mainly useful to
developers:
• File I/O
• Mutexes
• RW Locks
• Did not yet include query level instrumentation :(
• Was not enabled by default.
34. Performance Schema in MySQL 5.6
•
•
•
•
Network IO, Table IO, Stages of execution time.
Brings number of instruments up to 545.
Performance_schema is now 52 tables.
Enabled by default.
36. Example
How Idle are your connections?
SELECT
user,
host,
100 * (SUM(IF(event_name = 'idle', sum_timer_wait, 0))
/ SUM(sum_timer_wait)) pct_idle,
ps_helper.format_time(
SUM(IF(event_name = 'idle', sum_timer_wait, 0))
) total_idle
FROM events_waits_summary_by_account_by_event_name
WHERE host IS NOT NULL
GROUP BY user, host;
+---------+-----------------------------+----------+---------------+
| user
| host
| pct_idle | total_idle
|
+---------+-----------------------------+----------+---------------+
| root
| localhost
| 99.9919 | 00:18:55.3054 |
| test_hc | TFARMER-MYSQL.wh.oracle.com | 100.0000 | 20.61 s
|
+---------+-----------------------------+----------+---------------+
2 rows in set (0.02 sec)
37. Example
Re-implement SHOW PROCESSLIST, but add interface
SELECT
p.*,
CASE
WHEN PORT = 0 AND IP = '' THEN 'Unix Socket'
WHEN IP REGEXP '^(::ffff:)?[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$' THEN
'IPv4'
WHEN PORT > 0 THEN 'IPv6'
ELSE 'Undetermined'
END AS interface
FROM performance_schema.socket_instances si
RIGHT JOIN performance_schema.threads t ON (t.thread_id = si.thread_id)
JOIN information_schema.processlist p ON (t.processlist_id = p.id)G
*************************** 1. row ***************************
ID: 6
USER: root
HOST: localhost:2873
DB: performance_schema
COMMAND: Query
TIME: 0
STATE: executing
INFO: SELECT /* snip */ ON (t.processlist_id = p.id)
interface: IPv6
1 row in set (0.13 sec)
38. Example
More detailed PROCESSLIST (version 2.0)
mysql> select * from processlist_full where conn_id is not nullG
...
*************************** 8. row ***************************
thd_id: 12400
conn_id: 12379
user: root@localhost
db: ps_helper
command: Query
state: Copying to tmp table
time: 0
current_statement: selectfrom processlist_full where conn_id is not null
last_statement: NULL
last_statement_latency: NULL
lock_latency: 1.00 ms
rows_examined: 0
rows_sent: 0
rows_affected: 0
tmp_tables: 1
tmp_disk_tables: 0
full_scan: YES
last_wait: wait/synch/mutex/sql/THD::LOCK_thd_data
last_wait_latency: 62.53 ns
source: sql_class.h:3843
39. Example
Which account fails to close connections?
SELECT
ess.USER,
ess.HOST,
(a.TOTAL_CONNECTIONS - a.CURRENT_CONNECTIONS) - ess.COUNT_STAR not_closed,
((a.TOTAL_CONNECTIONS - a.CURRENT_CONNECTIONS) - ess.COUNT_STAR) * 100 /
(a.TOTAL_CONNECTIONS - a.CURRENT_CONNECTIONS) pct_not_closed
FROM!
performance_schema.events_statements_summary_by_account_by_event_name ess!
JOIN performance_schema.accounts a ON (ess.USER = a.USER AND ess.HOST = a.HOST)!
WHERE
ess.EVENT_NAME = 'statement/com/Quit'
AND (a.TOTAL_CONNECTIONS - a.CURRENT_CONNECTIONS) > ess.COUNT_STAR;
+------+-----------+------------+----------------+
| USER | HOST
| not_closed | pct_not_closed |
+------+-----------+------------+----------------+
| root | localhost |
4 |
44.4444 |
| ODBC | localhost |
1 |
100.0000 |
+------+-----------+------------+----------------+!
2 rows in set (0.00 sec)
40. Example
How much time could I save in CI by using tmpfs?
mysql> SELECT
`a`.`EVENT_NAME`,
`a`.`SUM_TIMER_WAIT`/1024/1024/1024 AS `total_latency_ms`,
`b`.`SUM_NUMBER_OF_BYTES_READ` AS `total_bytes_read`,
`b`.`SUM_NUMBER_OF_BYTES_WRITE` AS `total_bytes_written`
FROM
`performance_schema`.`events_waits_summary_global_by_event_name` `a`
INNER JOIN `performance_schema`.`file_summary_by_event_name` `b` USING (event_name)
WHERE
`a`.`EVENT_NAME` like 'wait/io/file/%'
AND `a`.`COUNT_STAR` > 0;
+--------------------------------------+------------------+------------------+---------------------+
| EVENT_NAME
| total_latency_ms | total_bytes_read | total_bytes_written |
+--------------------------------------+------------------+------------------+---------------------+
| wait/io/file/sql/casetest
|
0.208953609690 |
0 |
0 |
| wait/io/file/sql/dbopt
|
1.635324865580 |
0 |
65 |
| wait/io/file/sql/ERRMSG
|
0.103571338579 |
58982 |
0 |
| wait/io/file/sql/file_parser
| 265.539358388633 |
1450 |
92321 |
| wait/io/file/sql/FRM
|
9.076319346204 |
233702 |
0 |
| wait/io/file/sql/global_ddl_log
|
0.042241489515 |
0 |
0 |
| wait/io/file/sql/misc
|
0.130650339648 |
0 |
0 |
| wait/io/file/sql/pid
|
0.297200348228 |
0 |
5 |
| wait/io/file/mysys/charset
|
0.054673913866 |
18316 |
0 |
| wait/io/file/mysys/cnf
|
0.047869719565 |
56 |
0 |
| wait/io/file/myisam/dfile
|
8.178050385788 |
53640 |
33796 |
| wait/io/file/myisam/kfile
| 15.392133934423 |
9778 |
5138 |
| wait/io/file/innodb/innodb_data_file | 15.472816837952 |
8929280 |
49152 |
| wait/io/file/innodb/innodb_log_file |
9.008877178654 |
69632 |
2560 |
+--------------------------------------+------------------+------------------+---------------------+
14 rows in set (0.03 sec)
41. Example
How much time is spend waiting where?
mysql> select * from ps_helper.wait_classes_global_by_latency;
+-------------------+--------------+---------------+-------------+-------------+-------------+
| event_class
| total_events | total_latency | min_latency | avg_latency | max_latency |
+-------------------+--------------+---------------+-------------+-------------+-------------+
| wait/io/file
|
550470 | 46.01 s
| 19.44 ns
| 83.58 µs
| 4.21 s
|
| wait/io/socket
|
228833 | 2.71 s
| 0 ps
| 11.86 µs
| 29.93 ms
|
| wait/io/table
|
64063 | 1.89 s
| 99.79 ns
| 29.43 µs
| 68.07 ms
|
| wait/lock/table
|
76029 | 47.19 ms
| 65.45 ns
| 620.74 ns
| 969.88 µs
|
| wait/synch/mutex |
635925 | 34.93 ms
| 19.44 ns
| 54.93 ns
| 107.70 µs
|
| wait/synch/rwlock |
61287 | 7.62 ms
| 21.38 ns
| 124.37 ns
| 34.65 µs
|
+-------------------+--------------+---------------+-------------+-------------+-------------+
42. Example
Index usage statistics
mysql> select * from schema_index_statistics limit 5G
*************************** 1. row ***************************
table_schema: world
table_name: city
index_name: Name
rows_selected: 31
select_latency: 37.45 s
rows_inserted: 0
insert_latency: 0 ps
rows_updated: 0
update_latency: 0 ps
rows_deleted: 0
delete_latency: 0 ps
*************************** 2. row ***************************
table_schema: world
table_name: city
index_name: PRIMARY
rows_selected: 1
select_latency: 21.05 us
rows_inserted: 0
insert_latency: 0 ps
rows_updated: 4
update_latency: 262.35 us
rows_deleted: 0
delete_latency: 0 ps
43. Example
Statement Analysis
mysql> select * from statement_analysis limit 5G
*************************** 1. row ***************************
query: UPDATE `City` SET NAME = ? WHERE NAME = ?
full_scan:
exec_count: 3
err_count: 0
warn_count: 0
total_latency: 37.44 s
max_latency: 37.44 s
avg_latency: 12.48 s
rows_sent: 0
rows_sent_avg: 0
rows_scanned: 6
digest: 0ab3971f852eb3541dc88efc2c278be0
*************************** 2. row ***************************
query: INSERT INTO `City` VALUES (...)
full_scan:
exec_count: 4079
err_count: 0
warn_count: 0
total_latency: 994.07 ms
max_latency: 866.28 us
avg_latency: 243.70 us
rows_sent: 0!
44. More context, examples:
• Mark Leith
http://www.markleith.co.uk/ps_helper/
• Todd Farmer
http://mysqlblog.fivefarmers.com
46. Concept
• Similar to Performance Schema, but designed for
static, slower changing data.
• Introduced in MySQL 5.0, but dramatically more
meta data in MySQL 5.6.
48. 5.6 Example - Estimate Working Set
• The five minute rule:
If you load a page into memory, then require it again
within 5 minutes it should stay in memory.
• Pages in memory is in information_schema!
49. Estimate Working Set (cont.)
• I have only a 128MB innodb_buffer_pool_size.
• Example shows I need 100679 pages (16K each)
= 1573MB of memory to be efficient.
mysql> call test.estimate_working_set(10, 30);!
.. lines omitted for brevity ..
+----------------------+
| pages_in_working_set |
+----------------------+
|
100679 |
+----------------------+
1 row in set (5 min 55.61 sec)
51. MySQL 5.7
• More Performance Schema
• Instrumentation for transactions and memory
allocation.
• More Online DDL
• Extend VARCHAR
• More EXPLAIN enhancements
• EXPLAIN a running query.
• Show cost information.
52. MySQL 5.7 (cont.)
• More online usability
• Online replication filter reconfiguration.
• Improved error log configuration and verbosity.
• More annoying bugs fixed.
• Warning when creating duplicate indexes.
• Control-C support in the client
56. By Actual Features / Enhancements
Scalable Read Only Transactions
Improvement to Buffer Pool Flushing
Precise spatial operations in GIS
Concurrent Innodb data file extension
Subquery Optimizations
Password hashes instead of plain passwords in Query Logs
Non-Recursive Deadlock Detection
More efficient Optimizer
SHA256 hashing with Salt for Authentication
Faster Locking Primitives
Optimized ROW Based Replication
Use obfuscated password storage for command line tools
Improved Innodb Thread Concurrency
Multi-Threaded Slave
Policy Based password validation
Multiple background Purge Threads
Global Transaction Identifiers
Plugin authentication support for Replication
Improved Purge lag control (now works)
Crash Safe Slave and Binlog
INNODB_METRICS (I_S)
Split of “Kernel Mutex”
Replication Event Checksums
Meta Data Information Tables (I_S)
Data Dictionary Cache
Time Delayed Replication
Buffer Pool Information Tables (I_S)
Improved Adaptive Flushing
Server UUID
Reduced Overhead (PS)
Page Cleaner/Separate Flush Thread
Improved Logging for Row based Replication
Simplified Configuration (PS)
Group Commit for Binary Log
Replication Utilities for Failover and Admin
Table Access instrumentation (PS)
Fight Cache Coherence and False Sharing issues
Separate Tablespaces for Innodb Undo Logs
Statements instrumentation (PS)
Reduced Innodb Memory Fragmentation
Fast Restart – Preloading Innodb Buffer Pool
Stages Instrumentation (PS)
Reduced Locking for Partitioned tables
Online DDL
Aggregations by User, Host etc (PS)
Reduced Contention for LOCK_open
Import/Export for Partitioned Tables
Network IO Instrumentation (PS)
Support for multiple table_open_cache instances
Remote Binlog Backup
Show Host Cache Contents (PS)
Large (over 4GB) redo logs support
Innodb Transportable Tablespaces
Improved File I/O Instrumentation (PS)
Index Condition pushdown (ICP)
New configuration files defaults
Explain for UPDATE/DELETE queries
Multi-Range-Read (MRR)
User Defined DATA DIRECTORY for Innodb Tables
JSON output with more information
Faster ORDER BY nidxcol LIMIT N
Connection Attributes
Optimizer Tracing
Persistent Statistics for Innodb
MemcacheD API in Innodb
Deadlock Logging
Improvements to Innodb Compression
Explicit Partition Selection in queries
GET DIAGNOSTICS
Fast Page Checksums (CRC32)
Full Text Search index for Innodb
4K and 8K Page sizes for Innodb
Microsecond TIME precision