Peter Zaitsev - Practical MySQL Performance Optimization

31
Peter Zaitsev, CEO, Percona Los Angeles MySQL Meetup February, 20, 2014 Practical MySQL Performance Optimization

Transcript of Peter Zaitsev - Practical MySQL Performance Optimization

Page 1: Peter Zaitsev - Practical MySQL Performance Optimization

Peter Zaitsev,CEO, Percona

Los Angeles MySQL MeetupFebruary, 20, 2014

Practical MySQL Performance Optimization

Page 2: Peter Zaitsev - Practical MySQL Performance Optimization

www.percona.com2

About Presentation

Define “Performance”

Provide Practical Approach to getting Performance you need

Talk about Tools you can use

Page 3: Peter Zaitsev - Practical MySQL Performance Optimization

www.percona.com3

Focus on Thought Process

Right Approach to the problems is a key

It is hard to Google “how to approach things”

Easy to find a lot of specific advice once you know what you want to do

MySQL Performance Blog has a lot of specific information

High Performance MySQL Book

Page 4: Peter Zaitsev - Practical MySQL Performance Optimization

www.percona.com4

Speaking about Performance

•Responsive

•Efficient

•Scalable

We mean

we want

system which is

Page 5: Peter Zaitsev - Practical MySQL Performance Optimization

www.percona.com5

Good Enough

•Responsiveness

•Efficiency

•Scalability

System needs to be Good

Enoughin

Page 6: Peter Zaitsev - Practical MySQL Performance Optimization

www.percona.com6

Focus on Application

• It does only as it impacts an Application

Database Performance

Does not Matter

• … and problem are we deal with

Database is a Tool we

use

Page 7: Peter Zaitsev - Practical MySQL Performance Optimization

www.percona.com7

Things to Note

Not all Application Performance Problems come from MySQL

Not all Application Performance Problems which come from MySQL

• … are resolved on MySQL level

Page 8: Peter Zaitsev - Practical MySQL Performance Optimization

www.percona.com8

Putting it in Practice

Look at Complete System

• Start with Architecture

Do not focus on tuning database alone

Page 9: Peter Zaitsev - Practical MySQL Performance Optimization

www.percona.com9

What Databases Do ?

Databases Handle Queries

Page 10: Peter Zaitsev - Practical MySQL Performance Optimization

www.percona.com10

Queries ?

Selects

Inserts

Updates

Deletes

Others

Page 11: Peter Zaitsev - Practical MySQL Performance Optimization

www.percona.com11

What do we need from it ?

•Quickly

•Efficiently

•Reliably

To Handle

Our Queries

Page 12: Peter Zaitsev - Practical MySQL Performance Optimization

www.percona.com12

Are those Right Queries ?

One of Architecture Questions

Changing how Application Logic translates to Queries is a great optimization

Page 13: Peter Zaitsev - Practical MySQL Performance Optimization

www.percona.com13

Putting It in Practice

Look at Application Transactions

See what Queries they Use

Check out how those queries perform

Page 14: Peter Zaitsev - Practical MySQL Performance Optimization

www.percona.com14

Things to Consider

• But avoid focus on extreme outliers

Look beyond

averages

• Daily and Weekly cycle

• Growth of load and Data Size

Make sure to look at

trends over time

Page 15: Peter Zaitsev - Practical MySQL Performance Optimization

www.percona.com15

Tools to Consider

• pt-query-digest (Percona Toolkit)

• MySQL Enterprise Monitor

• Performance_Schema (MySQL 5.6+)

• Check out ps_helper

• Box Anemometer• https://github.com/box/Anemometer/wiki

• Percona Cloud Tools

• http://cloud.percona.com

Page 16: Peter Zaitsev - Practical MySQL Performance Optimization

www.percona.com16

pt-query-digest example

Page 17: Peter Zaitsev - Practical MySQL Performance Optimization

www.percona.com17

Top Queries

Page 18: Peter Zaitsev - Practical MySQL Performance Optimization

www.percona.com18

Query Details

Page 19: Peter Zaitsev - Practical MySQL Performance Optimization

www.percona.com19

More Query Details

Page 20: Peter Zaitsev - Practical MySQL Performance Optimization

www.percona.com20

Percona Cloud Tools

Page 21: Peter Zaitsev - Practical MySQL Performance Optimization

www.percona.com21

Server Profile

Page 22: Peter Zaitsev - Practical MySQL Performance Optimization

www.percona.com22

Query Details

Page 23: Peter Zaitsev - Practical MySQL Performance Optimization

www.percona.com23

Graphs!

Page 24: Peter Zaitsev - Practical MySQL Performance Optimization

www.percona.com24

Process Support

Discover New Queries in the Application

Mark them as “Needing Attention” or “Reviewed”

Tag queries with information about application or user facing function

Discuss it with the team and record changes using Comments

Page 25: Peter Zaitsev - Practical MySQL Performance Optimization

www.percona.com25

Query Performance always shows it

Workload Changes

Data Size

Changing Query Plans

Upgrading MySQL Version

Changing MySQL Settings

Hardware Changes

Page 26: Peter Zaitsev - Practical MySQL Performance Optimization

www.percona.com26

Efficiency

Right Queries

Executed Most Efficiently

Page 27: Peter Zaitsev - Practical MySQL Performance Optimization

www.percona.com27

Practical Metrics

How many rows are being scanned vs Sent ?

How much IO are we doing ?

Is there avoidable overhead ?

• Filesorts ?

• TMP Tables ? On Disk ?

Page 28: Peter Zaitsev - Practical MySQL Performance Optimization

www.percona.com28

Areas of Improvement

Architecture

Hardware http://bit.ly/1dRNtaa

Schema and Queries http://bit.ly/1l1KBLN

MySQL version (and Variant)

MySQL Configuration http://bit.ly/1ctWAN9

Page 29: Peter Zaitsev - Practical MySQL Performance Optimization

www.percona.com29

Advanced Registration Rate Ends March 2nd, 2014

Special Discount for Webinar Attendees:

Use Code PeterZ15 to receive 15% off of standard

rates (new registrations only)

http://bit.ly/MySQLUC2014

Page 30: Peter Zaitsev - Practical MySQL Performance Optimization

www.percona.com30

How Percona Can Help

Support

RemoteDBA

Consulting

Page 31: Peter Zaitsev - Practical MySQL Performance Optimization

www.percona.com31 www.percona.com

Peter Zaitsev

[email protected]

Thank You!