MySQL and InnoDB
Performance
Baron Schwartz | OSDC 2010
MySQL Architecture
MySQL Server
Storage Engines
Parser, Optimizer
Executor, Caches
InnoDB Storage Engine
• Transactional, ACID compliant
• Reliable, Stable
• Complex, Flexible
• A History of Poor Scalability
Thinking About Performance
Response Time
Is Everything
Response Time
R = W + S
Utilization
ResponseTime
S
W
Response Time
R = W + S
Utilization
ResponseTime
S
W
MySQL & InnoDB In Context
MySQL & InnoDB In Context
Operating Environment
MySQL Server
InnoDB
Operating Environment
RAM
CPU
I/O
Network
Operating Environment
RAM
CPU
I/O
Network
• Fast
• Up to 24 Cores
• Up to 100's of GB
• RAID + BBU
• Fast SAS Disks
• SSD / FusionIO
• XFS Filesystem
• Deadline Scheduler
• High Bandwidth
• Low Latency
MySQL Performance
Nested-Loop Joins and Subqueries
MySQL Performance
Cache Scalability
InnoDB's Single “Main Thread”
• Too Much Work! Purging, Flushing
• Main Thread Cannot Keep Up
Special-Purpose Threads
• Main Thread
• Purge Thread
• Multiple Read/Write IO Threads
InnoDB Mutex Contention
Buffer Pool
Splitting the Buffer Pool Mutex
Buffer Pool Flush List LRU Hash Free
Current InnoDB Bottlenecks
• Adaptive Hash Search Mutex
• Index Lock Mutex
• After These Are Solved, ???
How To Improve Performance
Measure Carefully
Proper diagnosis is 95% of the work
Use Good Tools
• New Relic
• MySQL Enterprise Monitor
• Cacti
– http://code.google.com/p/mysql-cacti-templates/
• Maatkit
• GDB, strace, oprofile
Instrumentation is Key
• The best performance data is INSIDE MySQL
Percona Server with XtraDB
MySQL Server
Storage Engines
Parser, Optimizer
Executor, Caches
Tunability
Instrumentation
Diagnostics
Current Benchmarks
InnoDB -vs- XtraDB
http://tinyurl.com/xtradb-fusionio-jan-2010
XtraDB is much better than InnoDB in MySQL 5.1.
MySQL 5.5 -vs- Percona Server
http://tinyurl.com/xtradb-mysql5-5-ap2010
High performance is no use without stability.
Other Technologies
• Cloud Computing
– 2 of the 4 critical resources are uncontrollable
• “NoSQL” Databases
– It's too soon to be sure
Summary
• The operating environment is important
• MySQL & InnoDB are getting much faster
• The cloud is not a performance solution
• You are the key to better performance
Where Do You Go Next?
• Become a performance practitioner
– Read High Performance MySQL 2nd
Edition
– Read Optimizing Oracle Performance
– Read The Art Of Capacity Planning
– Read http://www.percona.com/about-us/white-papers/
• Contribute!
– Sponsor features you need or want
– Help improve tools

MySQL 和 InnoDB 性能