+ All Categories
Home > Technology > Optimize MySQL performance for developers

Optimize MySQL performance for developers

Date post: 15-Jan-2015
Category:
Upload: jackbillow
View: 1,243 times
Download: 1 times
Share this document with a friend
Description:
Optimize MySQL performance for developers
Popular Tags:
27
Optimize MySQL For Developers QCon Beijing 2011 YangHaichao Senior MySQL DBA@SINA http://weibo.com/jackbillow
Transcript
Page 1: Optimize MySQL performance for developers

Optimize MySQL For Developers

QCon Beijing 2011

YangHaichao

Senior MySQL DBA@SINA

http://weibo.com/jackbillow

Page 2: Optimize MySQL performance for developers

Agenda

• Architecture of Database-related

• Scaling your Database

• Schema Design

• Optimize Access

Page 3: Optimize MySQL performance for developers

Performance vs Architecture

Page 4: Optimize MySQL performance for developers

Datastore

• Relational Databases• MySQL

• Non Relational Databases• Memcached

• Redis

• MongoDB

• RD and NRD is Friends or Foes?

• MySQL + Memcached

• MySQL + Redis

Page 5: Optimize MySQL performance for developers

Caching

• Put a cache in front of your database• Distribute

• Write-through for scaling reads

• Write-back for scaling reads and writes

• Cache tier

Page 6: Optimize MySQL performance for developers

Principles

• Nothing’s perfect but some solutions are

good enough for a while

• Scalability involve partitioning, indexing and

replication

• All data for real-time queries MUST be in

memory. Disk is for writes only

Page 7: Optimize MySQL performance for developers

Scaling your database

Page 8: Optimize MySQL performance for developers

Replication

• Master - Slave• Only scaling reads

• Master - Master• Scaling reads and writes but many limits

Page 9: Optimize MySQL performance for developers

Functional Segmentation

Segment databases into functional areas

• User

• Feed

• Comment

• Attention

• Fans

• …

Page 10: Optimize MySQL performance for developers

Horizontal Split

• Hash

• Range

• Lookup table

• Middle layer

Page 11: Optimize MySQL performance for developers

Minimize Database

• No business logic

• No distributed transactions

• No joins and sorting

Page 12: Optimize MySQL performance for developers

Schema Design

Page 13: Optimize MySQL performance for developers

CAP & BASE

Consistency:ACID

Transactions

Availability

(Total

Redundancy)

Partition

Tolerance:

Infinite scaleout

Oracle

RAC

NO

GO

NoSQL

DB

Page 14: Optimize MySQL performance for developers

The Schema

• Best stage for optimize performance

• Improve performance is bigest

• Divide and conquer

• Normalize & de-normalize

Page 15: Optimize MySQL performance for developers

Data type

• Small is usually better

• Use INT UNSIGNED for IPv4 addresses

• Use TEXT or BLOB sparingly• Consider separate tables

Page 16: Optimize MySQL performance for developers

Index

• Over indexing can be an overhead

• On multiple column indexes the order fields

within the index definition is important

• Poor indexes are same as not having any

indexes

• Good selectivity on index fields

Page 17: Optimize MySQL performance for developers

Storage Engine

• Understanding benefits and drawbacks of

each storage engine

• Different storage engine has different index

capability

Page 18: Optimize MySQL performance for developers

Optimization Access

Page 19: Optimize MySQL performance for developers

Thinking in Access

• Any interaction with the database are the

high cost

• Decrease data access is better than SQL

tuning

Page 20: Optimize MySQL performance for developers

SQL is not C or C++

Page 21: Optimize MySQL performance for developers

Reduce Access to data

• Must specity column in select

• Only use index in query

• Assumsing success

Page 22: Optimize MySQL performance for developers

Reduce the Number of Interactions

• Pushing control structures into SQL

• Combining statements

• Fetching all you need at once

Page 23: Optimize MySQL performance for developers

Reduce the Number of Interactions

• INSERT ... ON DUPLICATE KEY UPDATE

• REPLACE

• INSERT IGNORE

Page 24: Optimize MySQL performance for developers

Reduce CPU computing

• Extensive use of prepared statements and

bind variables

• Column not calculate as far as possible

• Move cpu-intensive work to application

Page 25: Optimize MySQL performance for developers

Parallelism

• Reorganizing processing

• Isolating hot spots

• Shortening critical sections

• Dealing with multiple queues

Page 26: Optimize MySQL performance for developers

Last, but not least…

• Architecture and design is in the best stages

of improving performance

• Develop huge application you mush keep

scaling data in mind at first

• Perform SQL in very few data accesses is

increasingly important

• Performance tuning is an trade-off and

iterative process

Page 27: Optimize MySQL performance for developers

Thank you for coming

Q & A

@jackbillow


Recommended