26
The Need For Speed leads to PostgreSQL Dimitri Fontaine [email protected] 28 Mars 2013 Dimitri Fontaine [email protected] The Need For Speed 28 Mars 2013 1 / 23

The Need For Speed - tapoueh.org · Premature optimization is the root of all evil ... Premature optimization is the root of all evil Jamais trop t^ot Avant qu’il ne soit trop tard

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: The Need For Speed - tapoueh.org · Premature optimization is the root of all evil ... Premature optimization is the root of all evil Jamais trop t^ot Avant qu’il ne soit trop tard

The Need For Speedleads to PostgreSQL

Dimitri Fontaine [email protected]

28 Mars 2013

Dimitri Fontaine [email protected] The Need For Speed 28 Mars 2013 1 / 23

Page 2: The Need For Speed - tapoueh.org · Premature optimization is the root of all evil ... Premature optimization is the root of all evil Jamais trop t^ot Avant qu’il ne soit trop tard

Dimitri Fontaine

2ndQuadrant FrancePostgreSQL Major Contributor

pgloader, prefix, skytools, debian, . . .

CREATE EXTENSION

CREATE EVENT TRIGGER

Bi-Directional Replication

Partitionnement

Dimitri Fontaine [email protected] The Need For Speed 28 Mars 2013 2 / 23

Page 3: The Need For Speed - tapoueh.org · Premature optimization is the root of all evil ... Premature optimization is the root of all evil Jamais trop t^ot Avant qu’il ne soit trop tard

Performances

Dimitri Fontaine [email protected] The Need For Speed 28 Mars 2013 3 / 23

Page 4: The Need For Speed - tapoueh.org · Premature optimization is the root of all evil ... Premature optimization is the root of all evil Jamais trop t^ot Avant qu’il ne soit trop tard

Dimitri Fontaine [email protected] The Need For Speed 28 Mars 2013 4 / 23

Page 5: The Need For Speed - tapoueh.org · Premature optimization is the root of all evil ... Premature optimization is the root of all evil Jamais trop t^ot Avant qu’il ne soit trop tard

Dimitri Fontaine [email protected] The Need For Speed 28 Mars 2013 5 / 23

Page 6: The Need For Speed - tapoueh.org · Premature optimization is the root of all evil ... Premature optimization is the root of all evil Jamais trop t^ot Avant qu’il ne soit trop tard

Optimisation SQL

Quelques experiences d’optimisations

Optimisation de requetes

Migration Oracle, de 1h30 a 5mins

prefix, GiST indexing

pgloader

preprepare

Dimitri Fontaine [email protected] The Need For Speed 28 Mars 2013 6 / 23

Page 7: The Need For Speed - tapoueh.org · Premature optimization is the root of all evil ... Premature optimization is the root of all evil Jamais trop t^ot Avant qu’il ne soit trop tard

Extract Month From date, THE HORROR

Certaines requetes SQL sont assez faciles a optimiser.

select f1, f2, f3, d

from t

where extract(’month’ from t.d)

= extract(’month’ from now())

Dimitri Fontaine [email protected] The Need For Speed 28 Mars 2013 7 / 23

Page 8: The Need For Speed - tapoueh.org · Premature optimization is the root of all evil ... Premature optimization is the root of all evil Jamais trop t^ot Avant qu’il ne soit trop tard

Extract Month From date, THE HORROR

Ah, tiens, un index !

select f1, f2, f3, d

from t

where t.d >= date_trunc(’month’, now())

and t.d < date_trunc(’month’, now())

+ interval ’1 month’

Dimitri Fontaine [email protected] The Need For Speed 28 Mars 2013 8 / 23

Page 9: The Need For Speed - tapoueh.org · Premature optimization is the root of all evil ... Premature optimization is the root of all evil Jamais trop t^ot Avant qu’il ne soit trop tard

Performance Club

http://fetter.org/optimization.html

1 The first rule of Optimization is, you do not talkabout Optimization.

2 The second rule of Optimization is, you DO NOTtalk about Optimization.

3 If your app is running faster than the underlyingtransport protocol, the optimization is over.

4 One factor at a time.

5 No marketroids, no marketroid schedules.

6 Testing will go on as long as it has to.

7 If this is your first night at Optimization Club, youhave to write a test case.

Dimitri Fontaine [email protected] The Need For Speed 28 Mars 2013 9 / 23

Page 10: The Need For Speed - tapoueh.org · Premature optimization is the root of all evil ... Premature optimization is the root of all evil Jamais trop t^ot Avant qu’il ne soit trop tard

Performance Club

http://fetter.org/optimization.html

1 The first rule of Optimization is, you do not talkabout Optimization.

2 The second rule of Optimization is, you DO NOTtalk about Optimization.

3 If your app is running faster than the underlyingtransport protocol, the optimization is over.

4 One factor at a time.

5 No marketroids, no marketroid schedules.

6 Testing will go on as long as it has to.

7 If this is your first night at Optimization Club, youhave to write a test case.

Dimitri Fontaine [email protected] The Need For Speed 28 Mars 2013 9 / 23

Page 11: The Need For Speed - tapoueh.org · Premature optimization is the root of all evil ... Premature optimization is the root of all evil Jamais trop t^ot Avant qu’il ne soit trop tard

Dimitri Fontaine [email protected] The Need For Speed 28 Mars 2013 10 / 23

Page 12: The Need For Speed - tapoueh.org · Premature optimization is the root of all evil ... Premature optimization is the root of all evil Jamais trop t^ot Avant qu’il ne soit trop tard

Premature optimization is the root of all evil

Donald Knuth, Structured Programming with go to Statements

“Programmers waste enormous amounts of

time thinking about, or worrying about, thespeed of noncritical parts of their programs,and these attempts at efficiency actually havea strong negative impact when debugging andmaintenance are considered. We should forgetabout small efficiencies, say about 97% of thetime: premature optimization is the root of allevil. Yet we should not pass up ouropportunities in that critical 3%.”

Dimitri Fontaine [email protected] The Need For Speed 28 Mars 2013 11 / 23

Page 13: The Need For Speed - tapoueh.org · Premature optimization is the root of all evil ... Premature optimization is the root of all evil Jamais trop t^ot Avant qu’il ne soit trop tard

La performance : quand s’y interesser ?

Premature optimization is the root of all evil

Jamais trop tot

Avant qu’il ne soit trop tard

Preparation d’une phase de croissance

Reduction des depenses energetique

Reduction de la facture d’hebergement

Meilleur service aux utilisateurs

Dimitri Fontaine [email protected] The Need For Speed 28 Mars 2013 12 / 23

Page 14: The Need For Speed - tapoueh.org · Premature optimization is the root of all evil ... Premature optimization is the root of all evil Jamais trop t^ot Avant qu’il ne soit trop tard

Diminishing Returns

Loi des rendements decroissants

Plus tu pedales moins vite, moins plusvite tu avances

Maıtriser l’effort d’optimisation

Difficulte de savoir quand on est alleassez loin

Prendre du recul sur ce que l’on fait

Dimitri Fontaine [email protected] The Need For Speed 28 Mars 2013 13 / 23

Page 15: The Need For Speed - tapoueh.org · Premature optimization is the root of all evil ... Premature optimization is the root of all evil Jamais trop t^ot Avant qu’il ne soit trop tard

La performance dans quel but

http://www.copyblogger.com/website-speed-matters/

A one second delay in page-load can cause 7%loss in customer conversions.

If you make $1,000 a month from your site —that’s seventy bucks a month you are losing —and $840 a year. Can you afford to just throwaway $70 a month? $840 a year?

Dimitri Fontaine [email protected] The Need For Speed 28 Mars 2013 14 / 23

Page 16: The Need For Speed - tapoueh.org · Premature optimization is the root of all evil ... Premature optimization is the root of all evil Jamais trop t^ot Avant qu’il ne soit trop tard

La performance c’est quoi ?

Ameliorer les performances ne peut se faire qu’apres avoir profile

Loi d’Amdahl

profiling

metrologie

Dimitri Fontaine [email protected] The Need For Speed 28 Mars 2013 15 / 23

Page 17: The Need For Speed - tapoueh.org · Premature optimization is the root of all evil ... Premature optimization is the root of all evil Jamais trop t^ot Avant qu’il ne soit trop tard

La performance c’est quoi ?

Mesurer les performances

EXPLAIN

EXPLAIN (VERBOSE, BUFFERS, ANALYZE)

\timing

Dimitri Fontaine [email protected] The Need For Speed 28 Mars 2013 16 / 23

Page 18: The Need For Speed - tapoueh.org · Premature optimization is the root of all evil ... Premature optimization is the root of all evil Jamais trop t^ot Avant qu’il ne soit trop tard

La performance c’est quoi ?

Attention aux allers retours entre client et serveur

Round-trip

Bande passante (bandwidth)

Dimitri Fontaine [email protected] The Need For Speed 28 Mars 2013 17 / 23

Page 19: The Need For Speed - tapoueh.org · Premature optimization is the root of all evil ... Premature optimization is the root of all evil Jamais trop t^ot Avant qu’il ne soit trop tard

Comment ameliorer les performances

Premier reflexe : ne pas executer la requete !

Traitements par lots (batch)

Traitements hors lignes (asynchrone)

PGQ

LISTEN et NOTIFY

Dimitri Fontaine [email protected] The Need For Speed 28 Mars 2013 18 / 23

Page 20: The Need For Speed - tapoueh.org · Premature optimization is the root of all evil ... Premature optimization is the root of all evil Jamais trop t^ot Avant qu’il ne soit trop tard

Outils d’anlyze des performances des requetes 1/2

Analyzer les performances

EXPLAIN

(ANALYZE, VERBOSE, BUFFERS)

INSERT, DELETE, UPDATE

(ne pas oublier de ROLLBACK)

Dimitri Fontaine [email protected] The Need For Speed 28 Mars 2013 19 / 23

Page 21: The Need For Speed - tapoueh.org · Premature optimization is the root of all evil ... Premature optimization is the root of all evil Jamais trop t^ot Avant qu’il ne soit trop tard

Outils d’anlyze des performances des requetes 2/2

Analyzer les performances

Un mot sur les Nested Loops

http://explain.depesz.com/

SELECT * FROM pg locks;

pg activity

Dimitri Fontaine [email protected] The Need For Speed 28 Mars 2013 20 / 23

Page 22: The Need For Speed - tapoueh.org · Premature optimization is the root of all evil ... Premature optimization is the root of all evil Jamais trop t^ot Avant qu’il ne soit trop tard

Dimitri Fontaine [email protected] The Need For Speed 28 Mars 2013 21 / 23

Page 23: The Need For Speed - tapoueh.org · Premature optimization is the root of all evil ... Premature optimization is the root of all evil Jamais trop t^ot Avant qu’il ne soit trop tard

Optimisation

Les approches essentielles

Identifier les requetes

Reecrire les requetes

Traiter moins de donnees

Revoir les Types de donnees

Revoir l’utilisation des indexes

Utiliser des tableaux

WITH et OFFSET

Dimitri Fontaine [email protected] The Need For Speed 28 Mars 2013 22 / 23

Page 24: The Need For Speed - tapoueh.org · Premature optimization is the root of all evil ... Premature optimization is the root of all evil Jamais trop t^ot Avant qu’il ne soit trop tard

Optimisation

Les approches essentielles

Identifier les requetes

Reecrire les requetes

Traiter moins de donnees

Revoir les Types de donnees

Revoir l’utilisation des indexes

Utiliser des tableaux

WITH et OFFSET

Dimitri Fontaine [email protected] The Need For Speed 28 Mars 2013 22 / 23

Page 25: The Need For Speed - tapoueh.org · Premature optimization is the root of all evil ... Premature optimization is the root of all evil Jamais trop t^ot Avant qu’il ne soit trop tard

Optimisation

Les approches essentielles

Identifier les requetes

Reecrire les requetes

Traiter moins de donnees

Revoir les Types de donnees

Revoir l’utilisation des indexes

Utiliser des tableaux

WITH et OFFSET

Dimitri Fontaine [email protected] The Need For Speed 28 Mars 2013 22 / 23

Page 26: The Need For Speed - tapoueh.org · Premature optimization is the root of all evil ... Premature optimization is the root of all evil Jamais trop t^ot Avant qu’il ne soit trop tard

Conclusion

The Need For Speed.

Dimitri Fontaine [email protected] The Need For Speed 28 Mars 2013 23 / 23