Introduction To Innodb Monitoring System
Introduction To Innodb Monitoring System
Overview
Current Monitoring System in InnoDB
Performance Schema in InnoDB
Metrics Counter System in InnoDB
Summary
Overview
Monitor System is a generic term that refers to
system that collects and displays the system
state information
System Monitoring is important for server resource
configuration as well as server performance tuning
Monitoring system could target different audience,
developers, DBAs or common users
Ideally it should be light weight with minimum
performance impact
The system should have easy interfaces for further
data process and presentation
Current Monitoring System in InnoDB
InnoDB provide monitor information through
following interfaces:
SHOW ENGINE INNODB STATUS (or create table
innodb_monitor)
create specific innodb monitor tables for periodically
output
innodb_lock_monitor for extensive lock information
innodb_tablespace_monitor provides list of file segments
in the shared tablespace (Space Allocation)
innodb_table_monitor prints metadata information about
InnoDB internal data dictionary (Metadata)
Status Variables
Whats coming for Monitoring System in
InnoDB
More Monitoring: Support a variety of server status/state
Monitoring through additional Monitoring System features
Centralize: Centralize the monitor information interfaces,
provide one-stop shop for server monitoring information.
Move away from create monitor table interfaces.
Extensible: Additional monitors can be added into different
modules over the time, or on demand.
Easy Query: Monitoring Data displayed through fake
tables/views, and be able to query with SQL
Both resource monitoring and performance monitoring are
important to support.
InnoDB Metrics Table(s) can achieve this
For event monitoring, performance schema is a good
choice
What is Performance Schema
New feature in MySQL 5.5 (Peter Gulutzan,
Marc Alff)
Monitors low-level server events (mutex,
rwlock and IO etc.)
Instrumentations give you both information
about Elapsed time and counter for the
events
Expose as SQL tables for easy query, can be
aggregated, averaged, ordered etc.
Performance Schema in InnoDB
DBT2 test
32 connections
50 warehouses
2G innodb_buffer_pool_size
500 MB innodb_log_file_size
PERFSCHEMA-COMPILED-OUT 1 1 1 1 1 1
PERFSCHEMA-ENABLED-
CURRENT 0.982305 0.972789 0.966903 0.958982 0.974484 0.980018
PERFSCHEMA-ENABLED-
CURRENT-CYCLE 0.979761 0.966326 0.955422 0.947115 0.951505 0.977591
PERFSCHEMA-ENABLED-HISTORY-
CYCLE 0.922473 0.971384 0.953987 0.949171 0.951993 0.971446
PERFSCHEMA-ENABLED-
HISTORY_LONG-CYCLE 0.97025 0.958599 0.947933 0.936931 0.951456 0.97408
PERFSCHEMA-ENABLED-
BIGBANG-CYCLE 0.966434 0.956772 0.936721 0.939547 0.955408 0.975784
Performance Schema in InnoDB
Performance Schema helps us study
and quantify the low level server events
Good tool for event monitoring and
development tuning, especially for
mutex optimization
It comes a cost, but working to
minimize the cost
Introducing InnoDB Metrics Table
What is InnoDB Metrics Table
Infrastructure for Monitor counter based monitoring
system
Display through information schema tables
Light weight counters, rely on caller for
synchronization protection
Control system to turn on/off and reset the monitors.
Counter start to counting only if the counter is
turned on
Used for resource usage (capacity) as performance
counters
Important for knobs configurable options
Easy to add additional counters
No measurable performance impact
Column Defines for Monitor Table
column name data type description
metric_name string contains the name of some metric as a string
subsystem string the name or the feature the metric pertains to
value_since_start int value since start of counter
max_since_start int (nullable) max value since the start
min_since_start int (nullable) min value since the start
avg_since_start int (nullable) average since the start
value_since_reset int value since last reset
max_since_reset int (nullable) max value since last reset
min_since_reset int (nullable) min value since last reset
avg_since_reset float (nullable) avg value since last reset
start_time timestamp (nullable) Timestamp of last start
stop_time timestamp (nullable) Timestamp of last stop
whether the counter is still running or
status string
stopped
whether the counter is incremental
type string
counter or resource related
description string Description of the counter
InnoDB Metrics Monitor Table
What does the metrics table look like:
Control System:
1) Turn on the monitor:
set global innodb_monitor_counter_on
Ex. set global innodb_monitor_counter_on =
server_table_open;
2) After the sampling period, stop the monitor
counting:
set global innodb_monitor_counter_off
3) Reset the counter:
set global innodb_monitor_counter_reset
4) Reset all of the counter
set global innodb_monitor_counter_reset_all
Monitor Counters Grouped into Modules
Counters are grouped into modules:
module name
1 module_server
2 module_lock
3 module_buffer
4 module_trx
5 module_log
6 module_page
7 module_index
8 module_dml
consumer 1500000
mysql> SET GLOBAL innodb_monitor_counter_on = module_dml; district 500
Query OK, 0 rows affected (0.00 sec)
history 1500000
mysql> SELECT name, max_since_start, value_since_start, status item 100000
-> FROM information_schema.innodb_metrics
-> WHERE name LIKE "dml%"; new_order 450000
+------------------------+------------------------+-----------------------+-------------+
| name | max_since_start | value_since_start | status| order_line 14244704
+------------------------+------------------------+-----------------------+-------------+
| dml_num_reads | 0 | 0 | started | orders 1500000
| dml_num_inserts | 24295254 | 24295254 | started |
| dml_num_deletes| 0 | 0 | started | stock 5000000
| dml_updates | 0 | 0 | started | warehouse 50
+-------------------------+-----------------------+-------------------------+---------+
4 rows in set (0.00 sec)
Total 24295254
Monitor Counter Examples
Getting more information:
SET global innodb_monitor_counter_off = module_dml;
SET global innodb_monitor_counter_reset_all = all;
SET global innodb_monitor_counter_on = all;
SET global innodb_monitor_counter_off = all;
Counter Value
server_table_open 141
server_table_close 0
dml_num_reads 5571754
dml_num_inserts 87584
dml_num_deletes 5180
dml_updates 155683
log_num_checkpoint 413
log_lsn_last_flush 5978767236
trx_num_commit 14244
trx_num_abort 63
index_num_split 2538
buffer_read_ahead_evict 42
Why Metrics Monitor Table
Easy to query and aggregates with table format
Minimum performance impact.
Easy to extend. With this infrastructure, add
monitor counter is easy
Generic. Can be used for a variety of monitoring
purpose as well as statistics collection
One stop provider for all monitor info. 31 Existing
system status variables are now supported through
Metrics Counter (but will still support status
variables)
All status variable will have entry in the metrics
table
Performance Schema vs. Metrics
Counters
Performance Schema vs. Metrics Counters
They are complimentary. Performance schema
gives more information on events, mutex / rwlock.
Metrics counter is a more generic infrastructure for
resource and performance counting.
Both tried to avoid involving mutexes. And counter
value could be approximate.
For most metrics counters, upper level
synchronization protection gives it a relatively
reliable value.
No measurable performance impact from metrics
counter, designed to be generic, simple and cheap.
Summary
Metrics System/Tables are likely to be our main
interfaces for obtaining performance statistics
and resource usage information. More
performance and resource counters can be
added with ease. And it will be one-stop shop
for most performance/resource information
Performance Schema in InnoDB gives us
powerful tools to study events such as mutex,
rwlock and I/O related performance
bottlenecks. Its value will soon be proved.
References and More Information
Session: Performance Schema
Peter Gulutzan (MySQL AB)
11:55am Tuesday, 04/13/2010
Session: Mastering InnoDB Diagnostics
Harrison Fisk (Oracle Corporation)
3:05pm Wednesday, 04/14/2010
Performance Documentation
http://dev.mysql.com/doc/refman/5.5/en/performance-
schema.html
Blog on Performance Schema in InnoDB
http://blogs.innodb.com/wp/2010/04/innodb-performance-
schema
The preceding 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 Oracles products
remains at the sole discretion of Oracle.