108
MySQL and SSD Vadim Tkachenko Percona Inc, co-founder, CTO www.percona.com www.SSDPerformanceBlog.com [email protected]

My sql ssd-mysqluc-2012

Embed Size (px)

DESCRIPTION

SSD introduction and it's usage with mysql

Citation preview

Page 1: My sql ssd-mysqluc-2012

MySQL and SSD

Vadim Tkachenko

Percona Inc, co-founder, CTO

www.percona.com

www.SSDPerformanceBlog.com

[email protected]

Page 2: My sql ssd-mysqluc-2012

This talk online

•PowerPoint

•http://bit.ly/MySQL-SSD-2012

•PDF

•http://bit.ly/MySQL-SSD-2012-PDF

•Contacts

[email protected]

•Twitter @VadimTk

MySQL and SSD

Page 3: My sql ssd-mysqluc-2012

World is spinning

MySQL and SSD

Page 4: My sql ssd-mysqluc-2012

Physical limits

MySQL and SSD

Page 5: My sql ssd-mysqluc-2012

Rotate faster

7200 RPM

10000 RPM

15000 RPM

Kaboom

MySQL and SSD

Page 6: My sql ssd-mysqluc-2012

milliseconds

Access time

MySQL and SSD

Page 7: My sql ssd-mysqluc-2012

More spindles

MySQL and SSD

Page 8: My sql ssd-mysqluc-2012

Still milliseconds

MySQL and SSD

Page 9: My sql ssd-mysqluc-2012

Access time

MySQL and SSD

Page 10: My sql ssd-mysqluc-2012

MySQL and SSD

Data fits into

memory

Page 11: My sql ssd-mysqluc-2012

10% data growth

70% throughput drop

MySQL and SSD

Page 12: My sql ssd-mysqluc-2012

Flash Access time

MySQL and SSD

Page 13: My sql ssd-mysqluc-2012

MySQL throughput with Flash

MySQL and SSD

Page 14: My sql ssd-mysqluc-2012

Flash

MySQL and SSD

Page 15: My sql ssd-mysqluc-2012

MySQL and SSD

Page 16: My sql ssd-mysqluc-2012

Erase size

MySQL and SSD

Page 17: My sql ssd-mysqluc-2012

Write once

MySQL and SSD

Page 18: My sql ssd-mysqluc-2012

Write Erase

•slow

MySQL and SSD

Page 19: My sql ssd-mysqluc-2012

No rewrites

MySQL and SSD

Page 20: My sql ssd-mysqluc-2012

MySQL and SSD

Page 21: My sql ssd-mysqluc-2012

Garbage collector

MySQL and SSD

Page 22: My sql ssd-mysqluc-2012

Write amplification

Flash writes more than application

MySQL and SSD

Page 23: My sql ssd-mysqluc-2012

Software matters

MySQL and SSD

Page 24: My sql ssd-mysqluc-2012

Hardware is less important

MySQL and SSD

Page 25: My sql ssd-mysqluc-2012

MySQL and SSD

Page 26: My sql ssd-mysqluc-2012

Flash quality is defined by software

Log-structured file system

Wear leveling

Garbage collector

MySQL and SSD

Page 27: My sql ssd-mysqluc-2012

Flash types

SLC MLC

MySQL and SSD

Page 28: My sql ssd-mysqluc-2012

Single Level Cell – 1bit

Erase

0

1

MySQL and SSD

Page 29: My sql ssd-mysqluc-2012

Multi Level Cell – 2 bit

Erase

00

01

10

11

MySQL and SSD

Page 30: My sql ssd-mysqluc-2012

Multi Level Cell – 3 bit

Erase

000

001

010

011

100

101

110

111

MySQL and SSD

Page 31: My sql ssd-mysqluc-2012

SLC vs MLC

MySQL and SSD

Page 32: My sql ssd-mysqluc-2012

Erase cycles

MySQL and SSD

• SLC 100.000 cycles

• MLC 10.000 cycles

• 25nm MLC 5.000 cycles

Page 33: My sql ssd-mysqluc-2012

SLC

Benefits

• Reliability

• Performance

Drawbacks

• Up to 800GB

• Expensive

• 30-50$/GB

MySQL and SSD

Page 34: My sql ssd-mysqluc-2012

MLC

•Over 1TB

•10-15$/GB

•Life time

•Reliability

MySQL and SSD

Page 35: My sql ssd-mysqluc-2012

Space provisioning – Virident FlashMax 1400

MySQL and SSD

User space

1.4TB

Internal Space

0.6TB

Page 36: My sql ssd-mysqluc-2012

SATA vs PCI Express

MySQL and SSD

Page 37: My sql ssd-mysqluc-2012

SATA SSD

MySQL and SSD

Page 38: My sql ssd-mysqluc-2012

My benchmarks story

2 Intel 320 SSD cards

MySQL and SSD

Page 39: My sql ssd-mysqluc-2012

How do I install it?

MySQL and SSD

Page 40: My sql ssd-mysqluc-2012

I need

Space Power

Controller +cables

MySQL and SSD

Page 41: My sql ssd-mysqluc-2012

Initial setup

MySQL and SSD

Page 42: My sql ssd-mysqluc-2012

Polished setup - AccuSTOR AS108X

MySQL and SSD

Page 43: My sql ssd-mysqluc-2012

RAID controllers

LSI 9260 LSI 9211

MySQL and SSD

Page 44: My sql ssd-mysqluc-2012

Last component - cable

LSI - SFF8087

Enclosure - SFF8088

MySQL and SSD

Page 45: My sql ssd-mysqluc-2012

PCIe is different

MySQL and SSD

Page 46: My sql ssd-mysqluc-2012

PCIe

MySQL and SSD

Page 47: My sql ssd-mysqluc-2012

Just plug into a PCIe slot

But SATA is hot-swap

MySQL and SSD

Page 48: My sql ssd-mysqluc-2012

Benchmarks lie

MySQL and SSD

Page 49: My sql ssd-mysqluc-2012

Benchmark challenge: internal state

MySQL and SSD

Page 50: My sql ssd-mysqluc-2012

Benchmark challenge: capacity

MySQL and SSD

Page 51: My sql ssd-mysqluc-2012

Unrepeatable results

MySQL and SSD

Page 52: My sql ssd-mysqluc-2012

Benchmark challenge: filesystems

Ext3/4 – synchronous IO

“bug” in O_DIRECT

MySQL and SSD

Page 53: My sql ssd-mysqluc-2012

Benchmark challenge: filesystems

xfs - asynchronous

“bug” - serialization

MySQL and SSD

Page 54: My sql ssd-mysqluc-2012

Xfs already fixed bug in source

code

4x improvement

MySQL and SSD

Page 55: My sql ssd-mysqluc-2012

Benchmark challenge: filesystems

btrfs – not ready yet

MySQL and SSD

Page 56: My sql ssd-mysqluc-2012

To add to confusion: in MySQL

Reads - sync Writes –

async

Readahead reads - async

MySQL and SSD

Page 57: My sql ssd-mysqluc-2012

Ext4 vs xfs – your choice

MySQL and SSD

Page 58: My sql ssd-mysqluc-2012

Comparing apples

• 2.5” 15K RPM HP Smart Array

8xHDD RAID10

• SATA SLC

STEC MACH16 200GB

• RAID10 – LSI 9211-4i

4xSTEC MACH16

• SATA MLC

Intel 320 SSD 160GB

• PCIe MLC

Virident FlashMax 1400

MySQL and SSD

Page 59: My sql ssd-mysqluc-2012

Flash vendors

~50 on market

MySQL and SSD

Page 60: My sql ssd-mysqluc-2012

Random 16KiB reads

MySQL and SSD

50

222

417

195

1300

0

200

400

600

800

1000

1200

1400

MiB

/ s

ec

8 HDD

STEC

4 STEC

Intel

Virident

Page 61: My sql ssd-mysqluc-2012

Random 16KiB writes

MySQL and SSD

35

135

223

92

520

0

100

200

300

400

500

600

MiB

/ s

ec

8 HDD

STEC

4 STEC

Intel

Virident

Page 62: My sql ssd-mysqluc-2012

Price

MySQL and SSD

24001500

6000

270

18000

0

2000

4000

6000

8000

10000

12000

14000

16000

18000

20000

Pri

ce, $

8 HDD

STEC

4 STEC

Intel

Virident

Page 63: My sql ssd-mysqluc-2012

PCIe vs SATA

Which one to choose?

MySQL and SSD

Page 64: My sql ssd-mysqluc-2012

PCIe for absolute performance

I use it because I have free samples

MySQL and SSD

Page 65: My sql ssd-mysqluc-2012

SATA for performance per $

I would use it if I had to buy…

MySQL and SSD

Page 66: My sql ssd-mysqluc-2012

When should I use flash?

MySQL and SSD

Page 67: My sql ssd-mysqluc-2012

Very good for random reads

Both SLC and MLC

MySQL and SSD

Page 68: My sql ssd-mysqluc-2012

Random Writes

Maybe challenge for MLC

MySQL and SSD

Page 69: My sql ssd-mysqluc-2012

SLC lifetime

20 years?

MySQL and SSD

Page 70: My sql ssd-mysqluc-2012

MLC lifetime

8PB 15PB

MySQL and SSD

Page 71: My sql ssd-mysqluc-2012

Write amplification

Flash writes more than application

MySQL and SSD

Page 72: My sql ssd-mysqluc-2012

Experiment – tpcc-mysql

Virident FlashMAX 1400

Write amplification: 1.143

1125.65 GiB writes per hour

Lifetime: 1.52 years

MySQL and SSD

Page 73: My sql ssd-mysqluc-2012

Flash for MySQL

MySQL and SSD

Page 74: My sql ssd-mysqluc-2012

When Flash helps

Low-latency requirement

Joins, large tables, mixed workloads, replication

High throughput workloads

High concurrency workloads

MySQL and SSD

Page 75: My sql ssd-mysqluc-2012

Most important decision

MySQL version

MySQL and SSD

Page 76: My sql ssd-mysqluc-2012

MySQL 5.1 with builtin InnoDB

Not good

MySQL and SSD

Page 77: My sql ssd-mysqluc-2012

You need

Multiple IO threads

Async

MySQL and SSD

Page 78: My sql ssd-mysqluc-2012

Choices

Percona Server 5.5

MySQL 5.5

Percona Server 5.1

MySQL and SSD

Page 79: My sql ssd-mysqluc-2012

Benchmarks again

MySQL and SSD

Page 80: My sql ssd-mysqluc-2012

Percona Server 5.5

4x STEC MACH16 RAID10

• LSI 9211

• LSI 9260 – with cache

Sysbench oltp

• 100GB database, 50GB memory

MySQL and SSD

Page 81: My sql ssd-mysqluc-2012

STEC SSD vs HDD: 8x gain

MySQL and SSD

750

90

0

100

200

300

400

500

600

700

800

SSD HDD

tps

Page 82: My sql ssd-mysqluc-2012

STEC innodb_flush_log_at_trx_commit

MySQL and SSD

750

490

0

100

200

300

400

500

600

700

800

trx_commit=2 trx_commit=1

tps

Page 83: My sql ssd-mysqluc-2012

MySQL IO workloads

MySQL

InnoDB data

InnoDB redo logs

Binary logs

InnoDB system tablespace

MySQL and SSD

Page 84: My sql ssd-mysqluc-2012

innodb_flush_log_at_trx_commit=1

Location matters

SSD

RAID with cache

MySQL and SSD

Page 85: My sql ssd-mysqluc-2012

STEC: InnoDB log location

MySQL and SSD

740

490

0

100

200

300

400

500

600

700

800

logs on RAID with cache logs on SSD

tps

Page 86: My sql ssd-mysqluc-2012

STEC – RAID card

MySQL and SSD

750810

0

100

200

300

400

500

600

700

800

900

LSI 9211 (no cache) LSI 9260 (with cache)

tps

Page 87: My sql ssd-mysqluc-2012

Log size matters

MySQL and SSD

Page 88: My sql ssd-mysqluc-2012

Big log file 8GB (Percona Server)

MySQL and SSD

Page 89: My sql ssd-mysqluc-2012

Flushing algorithm is important

MySQL and SSD

Page 90: My sql ssd-mysqluc-2012

Innodb_adaptive_checkpoint=keep_average

(Percona Server)

MySQL and SSD

Page 91: My sql ssd-mysqluc-2012

DoubleWrite area is important

MySQL and SSD

Page 92: My sql ssd-mysqluc-2012

DoubleWrite is a protection

MySQL and SSD

Page 93: My sql ssd-mysqluc-2012

DoubleWrite is rewriting the same area

MySQL and SSD

Page 94: My sql ssd-mysqluc-2012

Rewrites of the same area

MySQL and SSD

Page 95: My sql ssd-mysqluc-2012

Consider moving doublewrite

• Innodb_doublewrite_file =

• Percona Server

• ibdata1

• For general MySQL

MySQL and SSD

Page 96: My sql ssd-mysqluc-2012

Fusion-io to support atomic

writes

1.5x performance improvement

MySQL and SSD

Page 97: My sql ssd-mysqluc-2012

Misc

innodb_flush_neighbor_pages= ON | OFF

innodb_log_block_size = 512 | 4096

MySQL and SSD

Page 98: My sql ssd-mysqluc-2012

Misc filesystem

Mkfs.xfs –s size=4096

Mount –o nobarrier

MySQL and SSD

Page 99: My sql ssd-mysqluc-2012

Is Flash expensive?

MySQL and SSD

Page 100: My sql ssd-mysqluc-2012

Consolidation

MySQL and SSD

Page 101: My sql ssd-mysqluc-2012

Power savings

MySQL and SSD

Page 102: My sql ssd-mysqluc-2012

New Relic

MySQL and SSD

Dell PowerEdge R610

Dell PowerVault MD1220

Page 103: My sql ssd-mysqluc-2012

MySQL and SSD

Perc H800 RAID5

11 Intel 320 SSD 600GB

Page 104: My sql ssd-mysqluc-2012

MySQL and SSD

Page 105: My sql ssd-mysqluc-2012

Scale Up, not Scale Out

MySQL and SSD

Page 106: My sql ssd-mysqluc-2012

“Flash made everything faster,

but more confusing”

MySQL and SSD

Page 107: My sql ssd-mysqluc-2012

Pictures credits

• http://www.sunrainet.com/hdd-vs-ssd-speed-test-video-

windows-7-boot-up.html

• http://blog.familytreemagazine.com/insider/content/binary/datace

nter-2.jpg

MySQL and SSD

Page 108: My sql ssd-mysqluc-2012

Thank you!

Questions ?

Flash is exciting!

[email protected]

MySQL and SSD