Top tips my_sql_performance

16
Tips for MySQL Performance in 30mn AFUP 20 Janvier 2015 Olivier Zemrag MySQL Architect

Transcript of Top tips my_sql_performance

Tips for MySQL Performancein 30mn

AFUP

20 Janvier 2015

Olivier ZemragMySQL Architect

About me

Wonderful 18 Years of IT Technology

More than 10 Years with MySQL family Worked with startups large compagnie such as L’OREAL, ALCATEL,ORANGE, ...

MySQL & open source user since 2000

MySQL Consultant in 2006 at ANASKA

MySQL consultant at SUN in 2008

6 years member of MySQL Oracle Team

Now MySQL Architect

Agenda

IntroductionConfiguration

HardwareDesign

MySQL popularity performancehttp://db-engines.com

Find the 'next' Bottleneck Bench your work load

Test test test Monitor monitor monitor

Think cost / effortChange one thing at a time

Test test testMonitor monitor monitor

Configuration

● Buffer pool

● Log file size

● Other variables

Use large Buffer Pool

● The most important variable with InnoDB

Example : for 32G use 20G forinnodb_buffer_pool_size (or even more)

● Be aware off swaping  and other settings !!

Tunne Innodb Log files

For .write heavy workloads use bigInnodb_log_file_size

Be aware of time of restart process

Take caution when you change it

Other variables

● innodb_file_per_table=1

● innodb_stat_on_metadata=OFF

● Check :

– Innodb_flush_at_trx_commit (Durability)

– innodb_flush_method (O_DIRECT)

– skip_name_resolved

● Leave all other variables to default unless youknow what you do or change per session only

hardware

● RAM

● CPU

● Storage

CPU

● Faster is better for query response time

● More cores for more concurrency

MEMORY

● Size of the frequently used data (working set)

● Check response time and throughput

Storage

● RAID10

● SSD

● Fusion IO

● SAN

● Mix :– HDD : log-bin, log-files

– SSD : datadir, innodb_undo_directory, tmpdir

Design

● Optmize, purge, archive data

● Proper Indexation

● Proper usage of temporary tables

– Example of usage of performance_schema to findqueries creating temporary tables (version 5.6)

SELECT * FROMevents_statements_summary_by_digest

WHERE SUM_CREATED_TMP_TABLES > 0

Other Tips & Futures

● Optimize your OS, Optimize your Network

● NoSQL with memcached & InnoDB

● NDB (MySQL Cluster) for high write workloads

● Mix & match InnoDB, memcacehd, NDB Cluster

● MySQL Fabric for sharding

Merci

Questions ?

Olivier Zemrag

http://ozemrag.blogspot.fr/