Quelles bonnes ressources existent pour comprendre le réglage de la base de données sur les principaux moteurs et faire progresser vos connaissances dans ce domaine?
L'idée de cette question est de collecter la charge de ressources qui existe invariablement, afin que les gens puissent avoir un magasin de connaissances "à guichet unique" des bonnes ressources approuvées par les pairs.
SQL général
PostgreSQL ( wiki ) ( PGsearch )
MySQL
Oracle
MS SQL Server
Sybase SQL Anywhere
[~ # ~] jdbc [~ # ~]
Tom Kyte, le propriétaire d'Oracle, possède un référentiel fantastique sur tous les types de problèmes de performances imaginables sur http://asktom.Oracle.com . Il prend généralement le temps de recréer des problèmes spécifiques et donne des explications très détaillées.
La réponse de ce type à une enquête différente n'est probablement pas un bon début.
Et quelque chose pour PostgreSQL: "Optimisation des performances" sur le site officiel wiki .
Si vous utilisez une base de données Oracle, ce guide peut également vous aider. http://download.Oracle.com/docs/cd/B28359_01/server.111/b28274/toc.htm
Pour MySQL, le réglage de la performance 'Bible' est High Performance MySQL
Optimisation PostgreSQL rapide (optimisation des requêtes)
Courte lecture, explique bien des choses et "fonctionne" un vrai exemple qui est agréable pour ceux d'entre nous qui apprennent mieux de cette façon.
Après avoir vu le lien wiki vers PostgreSQL, je me suis dit que j'éditerais ce message avec des liens pour les documents mysql / Oracle , pas vraiment un guide d'optimisation spécifiquement mais les deux sont de bonnes ressources, en particulier celui de mysql. Pour l'optimisation et toutes les autres fonctionnalités de réglage.
SO en a un bon ici: Comment interprétez-vous le plan d'explication d'une requête?
J'ajouterais qu'en plus d'avoir votre base de données théoriquement réglée, vous devez profiler votre application en utilisant un profileur qui suit les appels SQL.
Malgré vos meilleures intentions, quelques mauvais appels se faufileront dans votre application et causeront souvent 90% de vos problèmes de performances.
Beaucoup de bons conseils spécifiques à MySQL peuvent être trouvés sur http://www.mysqlperformanceblog.com/
SQL Server Performance Site décent pour des informations spécifiques à MSSQL.
Si vous recherchez des références d'optimisation des performances spécifiques à SQL Server, il existe une charge absolue de ressources de qualité disponibles en ligne, allant de livres blancs sur la mise en œuvre de technologies spécifiques telles que le partitionnement, à d'excellents blogs qui détaillent des instructions étape par étape sur la façon d'optimiser les performances d'un plate-forme de serveur SQL.
La fiche sans vergogne suit: Vous pouvez commencer votre recherche en examinant la zone de réglage des performances de mon blog personnel, ou pour toute exigence/problème spécifique à SQL Server, n'hésitez pas à me renvoyer un e-mail.
Comment identifier les requêtes à exécution lente avec SQL Profiler est un bon didacticiel sur la façon d'identifier les requêtes à exécution lente. Cela permettra de concentrer son attention là où elle est le plus nécessaire.
Le chapitre Conseils de performance dans les documents PostgreSQL mérite d'être lu.
Pour SQL Server, j'utilise principalement:
Xaprb est un blog incontournable pour les administrateurs de bases de données MySQL. L'auteur a écrit un livre sur MySQL haute performance
Pour les quelques heureux qui travaillent avec Sybase SQL Anywhere, je ne peux que recommander le blog de Breck Carter et son Guide du développeur SQL Anywhere Studio 9
Voici un autre livre très apprécié qui est neutre sur la plateforme:
Dan Tow's SQL Tuning: Génération de plans d'exécution optimaux
Contient des exemples spécifiques pour Oracle, MS SQL et IBM DB2, mais les techniques impliquées devraient également s'appliquer à d'autres plates-formes.
"Optimisation des performances SQL" http://books.google.com/books?id=3H9CC54qYeEC&dq=sql+performance+tuning&printsec=frontcover&source=bn&hl=en&ei=1dDoSYmjMOrlnQfX-bSYBw&sa=X&oi=book_ result & resnum = 4 couvre la plupart des principaux SGBD - comment écrire des requêtes SQL multiplateformes hautement performantes, etc.
J'étais assez content quand j'ai vu cette façon de voir rapidement ce qui s'est passé avec une instruction SQL que vous réglez sous Oracle. Remplacez la première instruction SQL ci-dessous par votre instruction SELECT et conservez cet indice là-dedans.
SELECT /*+ GATHER_PLAN_STATISTICS */ * FROM DUAL;
SELECT * FROM TABLE(dbms_xplan.display_cursor( NULL, NULL, 'RUNSTATS_LAST'))
;
PLAN_TABLE_OUTPUT
-----------------------------------------------------
SQL_ID 5z36y0tq909a8, child number 0
-------------------------------------
SELECT /*+ GATHER_PLAN_STATISTICS */ * FROM DUAL
Plan hash value: 272002086
---------------------------------------------------------------------------------------------
| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers | Reads |
---------------------------------------------------------------------------------------------
| 1 | TABLE ACCESS FULL| DUAL | 1 | 1 | 1 |00:00:00.02 | 3 | 2 |
---------------------------------------------------------------------------------------------
12 rows selected.
Où:
Lorsque le plan estimé varie de l'exécution réelle par ordre de grandeur, vous savez que vous rencontrez des problèmes.
Parfois, vous devez savoir comment résoudre le problème une fois qu'il est identifié. Cela montrera comment remplacer un curseur mal performant par une opération basée sur un ensemble: http://wiki.lessthandot.com/index.php/Cursors_and_How_to_Avoid_Them
Il était spécifique à SQL Server, mais de nombreuses techniques pouvaient également être transposées dans d'autres dbs.
Pour l'optimisation des performances de SQL Server, Itzik Ben-Gan est une légende.
Vous pouvez trouver ses nombreux livres détaillés ici, tous avec son style habituel de mesure empirique pour prouver son cas: http://tsql.solidq.com/books/index.htm
Si vous recherchez la solution la plus rapide à un problème t-sql, ajoutez le mot "itzik" à votre terme de recherche google.
Itzik Ben-Gan a été mentionné plus de 600 fois ici sur stackoverflow , mais je ne pouvais pas croire qu'il ne trouve pas une seule mention de lui ici sur cette question de réglage des performances.
En tant que ressource supplémentaire, vous pouvez également trouver des vidéos de Itzik parlant de choses liées aux performances ici sur youtube .
Pour Oracle, Oracle basé sur les coûts: principes fondamentaux par Jonathan Lewis .
Je commencerais par comprendre comment la base de données fonctionne à un niveau fondamental. Comment les données sont-elles stockées sur le disque, à quoi sert la création d'un index, comment fonctionne l'optimisation du plan de requête, comment les plans sont-ils mis en cache, quand expirer les plans mis en cache?.
Si vous pouvez enregistrer tout cela en mémoire, la plupart des conseils sur le réglage semblent évidents.
Voici un excellent livre pour MSSQL
Pour Microsoft SQL, je recommanderais les livres de Kalen Delaney (et al) appelés "Inside SQL Server". Ils offrent un bon aperçu des composants internes de SQL Server, permettant ainsi aux lecteurs de se renseigner sur les raisons pour lesquelles des instructions particulières peuvent être plus rapides que d'autres.
à l'intérieur de SQL Server 7.
dans SQL Server 20
dans Microsoft SQL Server 2005
Microsoft SQL Server 2008 Internals
Il existe également un livre dédié à l'optimisation des performances des requêtes SQL Server 2008: SQL Server Performance Tuning Distilled
J'aime aussi les blogs de Paul Randal et Kimberly Tripp sur SQLSkills.com. Ils regorgent de conseils SQL solides:
Pour les personnes travaillant avec Oracle, je recommande ce lien .............
http://download.Oracle.com/docs/cd/B19306_01/server.102/b14200/toc.htm
D'après mes expériences avec le développement de bases de données Oracle, j'ai découvert que l'acquisition d'une connaissance de l'utilisation de SQL, de son fonctionnement et de la connaissance de ce qui est disponible (fonctions fournies, clauses dont vous ignoriez l'existence ou améliorées depuis la dernière version) signifie Je passe beaucoup moins de temps à régler sql.
Sites Oracle
Livres Oracle