jeudi 24 mars 2016

“SQL Performance explained” (« SQL : au cœur des performances ») de Markus Winand : indexer sa base de données

(Si vous ne savez pas et ne voulez pas savoir ce que sont le SQL, les bases de données et les index, ce qui suit ne vous intéressera pas.)

MarkusWinand_SQLPerformanceExplained.jpgJ’ai beaucoup apprécié ce livre, mais je commencerai par un reproche courant sur son titre : il ment ! Markus Winand ne parle pas des performances des requêtes SQL à proprement parler, mais se concentre quasi-exclusivement sur les index. Son principe : une bonne indexation est la clé des performances. C’est parfaitement vrai, mais ceux qui s’intéressent aussi à la répartition de la mémoire entre SGA et PGA sous Oracle, à la fragmentation de leurs tablespaces, à la distribution des fichiers sur des disques de rapidité différente, à l’utilité des clusters, au maniement des T-SQL et PL/SQL... seront frustrés.

Un autre principe de Winand : le développeur est celui qui sait comment les données sont utilisées. Il est à la fois le premier utilisateur des index et celui qui doit savoir pointer ceux qui manquent. (Et je confirme qu’à part certaines évidences ou contraintes techniques, il est difficile de savoir comment optimiser une base quand on n’a aucune idée de la manière dont elle sera utilisée, des critères primordiaux des utilisateurs, de la fréquence d’utilisation de telle ou telle donnée. Quant aux DBAs j’ai constaté qu’hors problème sérieux ils étaient assez peu proactifs. De plus, si certains étaient ouverts à l’ajout d’index quand on le justifiait, d’autres voyaient ça avec une franche hostilité [1].)

Le bien

Bref, il y a là-dedans tout ce que j'aurais voulu savoir quand je tapais du SQL au kilomètre. À cette époque (et après) j’ai acquis pas mal de réflexes pour obliger Oracle à choisir tel chemin et pas un autre. Mais il est toujours agréable et instructif de voir réexprimés proprement des concepts appris sur le tas, expliqué des habitudes prises par imitation et validé des réflexes. En général, je me suis retrouvé conforté dans mes habitudes, et encouragé à creuser un peu plus l’existant ou le juste-effleuré (index couvrants notamment).

Contrairement à nombre de livres sur les bases de données, il ne se spécialise pas sur une seule, mais parle des quatre principales : Oracle, SQL Server, PostgreSQL, MySQL. J’aurais bien aimé en voir d’autres (comme SQLite, même s’il est limité, ou Sybase) mais on ne peut pas tout avoir. Les différences entre les bases sont une part importante de la culture informatique. MySQL apparaît souvent comme le mauvais élève.

Le livre se concentre presque exclusivement sur les index B-tree classiques, de loin les plus courants. Il part des bases puis dissèque les méthodes d’utilisation (hash, merge...), ou leur utilisation dans différents contextes, dont les résultats partiels, ou ou encore l’impact sur les tris. La nécessité et les limites des bind dans les requêtes répétées sont abordés, tout comme les dégâts que peuvent faire des ORM comme Hibernate.

Le moins bien

Il y a juste une mention des index bitmaps pour dire qu’il sont réservés aux datawarehouses à cause de leur coût élevé en mise à jour [2]. Winand ne dit pas du bien des tables organisées en index comme cela semble courant sous SQL Server (les autres index seraient plombés par cette structure) mais un commentateur sur Amazon lève une objection (mais il travaille chez Microsoft, à moins que ce soit un homonyme).

Les requêtes d’exemple sont assez simples pour la compréhension, mais finalement je me demande encore quelle politique adopter pour optimiser des requêtes de dix tables, en décisionnel ou pas — il n’y a sans doute pas de recette miracle, il faut voir ce que pond l’optimiseur.

Le livre en allemand (la VO ?), anglais (que j’ai lue) ou français est disponible sur Amazon, et hélas uniquement là, sous forme papier du moins : l’essentiel semble accessible depuis le site.

Notes

[1] Mais sous SAP R/3 la logique normale n’a pas cours, voir ma vieille série sur le sujet, , et , commentaires compris.

[2] Et, ajouterai-je, du coût de la licence Oracle Enterprise nécessaire.

samedi 19 mars 2016

Boson de Higgs et biocarburants à base d’algues : « Pour la Science » de Septembre 2012

Chouette, il ne sera pas trop tard pour celui-là. Trois ans et demi après, je m’aperçois que la planification a échoué. Bah, la bonne science reste intemporelle [1]. Comme d’hab, j’italique mes commentaires et impressions conscients, les caractères normaux n’incluant que mes biais inconscients.  […]

Lire la suite

dimanche 13 mars 2016

Acalien, Rhéno-champenois ou Néo-austrasien ? De la difficulté de nommer une région sans unité

France_714_Paul_Vidal_de_la_Blache_1912@Wikimedia.jpg

J’étais peut-être précurseur en parlant de ma « bonne ville d’Austrasie » dans un billet il y a presque dix ans. Rappel pour mon lectorat non-acalien : sur ordre de Paris, selon un processus bâclé sur lequel je ne m’étendrai pas pour rester calme, et en tout cas sans aucune initiative locale,  […]

Lire la suite

lundi 7 mars 2016

Réponses scientifiques à des questions absurdes : “What If?” de Randall Munroe

What_If_Randall_Munroe.jpg

What_If_Randall_Munroe.jpg

Lire la suite

mercredi 2 mars 2016

Planète X, perte d’audition, vaccins, conscience informatique, vie & complexité : « Pour la Science » n°461 de mars 2016

pls_461.jpg

Numéro passionnant sur plein de sujets, et en plus il devrait être en kiosque quand ceci paraîtra. La planète X La système solaire pourrait-il retrouver une neuvième planète ? Pluton a été déclassé car elle n’était qu’un des corps (et pas le plus gros) de la ceinture de Kuiper, avec Eris, Sedna et  […]

Lire la suite

dimanche 28 février 2016

Génie par accident, astronomie des neutrinos : Pour la Science n° 460 de février 2016

pls_460.jpg

J’aurais dû publier ça plus tôt. Comme le prochain est déjà lu, on va résumer en vitesse (sans me priver de commenter, comme d’hab’) : Les génies par accident Des gamin devenus dieu de la mécanique, génie de la musique ou compteur génial après une balle dans la tête ou une méningite ; des adultes  […]

Lire la suite

samedi 20 février 2016

La recherche...

Research is to see what everybody has seen and think what nobody has thought. « La recherche consiste à voir ce que tout le monde a vu, et à penser ce que personne n’a pensé. » Albert Szent-Györgyi, Bioernegetics, 1957, p.57 Citation présentée par Didier Nordon dans le dernier Pour la Science. Il  […]

Lire la suite

dimanche 31 janvier 2016

Les snipers, Shanghai 1937, les mousses de la Royal Navy, la bataille de Kosovo (« Guerres & Histoire » n°28 de décembre 2015)

Guerre_et_Histoire_28.jpg

Résumé d’un numéro avec quelques sujets peu connus (en italique mes impressions) : Les snipers L’Antiquité utilisait massivement lances et flèches, mais le Moyen-Âge devint la grande époque du combat rapproché, et depuis la frappe à distance a toujours traîné une mauvaise réputation : déloyauté,  […]

Lire la suite

mercredi 6 janvier 2016

Légendes & lasagnes culturelles : « Le Cycle du Graal » de Jean Markale

Jean_Markale_Le_Cycle_du_Graal_1.jpg

Jean Markale, dans les années 90, a entrepris une réécriture dans un style moderne de tout le Cycle du Graal : au total deux pavés de mille pages dans mon édition incluant la Table Ronde, les vies d’Arthur & Merlin, Lancelot & Guenièvre, Yvain, Gauvain, Galaad, Bohort, Viviane, Morgane,  […]

Lire la suite

samedi 2 janvier 2016

Bug de l’an 2016 strasbourgeois

Je mitonnais un papier sur le Graal pour l’année nouvelle, mais il attendra : la CTS (Compagnie des Transports Strasbourgeois) a inventé le bug de l’année 2016, et on ne peut plus valider son billet de tramway : http://www.dna.fr/actualite/2016/01.... « Les composteurs[1] sont victimes d'un problème  […]

Lire la suite

- page 1 de 21