77 votes

Comment fonctionnent les bases de données en interne?

J'ai travaillé avec des bases de données pour les dernières années, et j'aime à penser que j'ai été assez compétent à leur utilisation. Cependant, je lisais récemment à propos de Joel Droit des Abstractions qui fuient et j'ai réalisé que même si je peux écrire une requête pour obtenir à peu près tout ce que je veux d'une base de données, je n'ai aucune idée de comment la base de données fait l'interprète de la requête. Personne ne sait de toute bonne des articles ou des livres qui expliquent comment les bases de données de travail à l'interne?

Certaines choses, je suis intéressé par:

  • Ce qui fait une base de données réellement faire pour trouver ce qui correspond à une instruction select?
  • Comment fonctionne une base de données d'interpréter une jointure différemment à une requête avec plusieurs "où key1 = key2" déclarations?
  • Comment fonctionne la base de données du magasin de la mémoire?
  • Comment sont les indices stockées?

81voto

Will Hartung Points 57465

Ce qui fait une base de données réellement faire pour trouver ce qui correspond à une sélection de déclaration?

Pour être franc, c'est une question de force brute. Simplement, il se lit à travers chaque candidat enregistrement dans la base de données et correspond à l'expression des champs. Donc, si vous avez "select * from table where nom = 'fred'", il tourne littéralement au travers de chaque enregistrement, saisit le champ "nom", et le compare à "fred".

Maintenant, si l' "de la table."nom de champ est indexé, puis la base de données (souvent, mais pas nécessairement) l'utilisation de l'indice d'abord localiser le candidat enregistre pour appliquer le filtre.

Cela réduit le nombre d'enregistrements candidat pour appliquer l'expression, sinon, il va juste faire ce que l'on appelle une "analyse de la table", c'est à dire lire chaque ligne.

Mais fondamentalement, toutefois, il localise les enregistrements candidat est distincte de la façon dont il applique le filtre de l'expression, et, évidemment, il y a quelques intelligent optimisations qui peut être fait.

Comment fonctionne une base de données d'interpréter une jointure différemment à une requête avec plusieurs "où key1 = key2" déclarations?

Eh bien, une jointure est utilisé pour faire un nouveau "pseudo de la table", sur laquelle le filtre est appliqué. Donc, vous avez les critères de filtre et les critères de jointure. Les critères de jointure est utilisé pour construire cette "pseudo de la table" et ensuite, le filtre est appliqué. Maintenant, lors de l'interprétation de la jointure, c'est de nouveau la même question que le filtre -- la force brute des comparaisons et des index de lit pour construire le sous-ensemble de la "pseudo de la table".

Comment fonctionne la base de données de stocker toutes ses de mémoire?

L'une des clés de la base de données est la façon dont il gère ses tampons d'e/S. Mais fondamentalement, ça correspond à la RAM blocs de blocs sur le disque. Avec les techniques modernes de la mémoire virtuelle gestionnaires, une simple base de données peut presque compter sur la machine virtuelle comme sa mémoire tampon, manager. Le haut de gamme DB, pour faire tout cela eux-mêmes.

Comment sont les indices stockées?

B+Arbres en général, vous devriez regarder. C'est un simple technique qui a été autour depuis des années. C'est l'avantage est partagé avec la plupart de l'équilibre de toute l'arbre: un accès régulier à des nœuds, ainsi que tous les nœuds feuilles sont liées, de sorte que vous pouvez facilement parcourir de nœud à nœud dans l'ordre des clés. Donc, avec un index, les lignes peuvent être considérés comme des "triés" pour des domaines spécifiques dans la base de données et la base de données peut tirer parti de ces informations pour profiter pour faire des optimisations. Elle est distincte de celle, par exemple, à l'aide d'une table de hachage pour un index, ce qui permet de l'obtenir à un enregistrement spécifique rapidement. Dans un B-Arbre, vous pouvez accéder rapidement et pas seulement à un enregistrement spécifique, mais à un point dans une liste triée.

Les mécanismes de stockage et d'indexation des lignes dans la base de données sont vraiment assez simple et bien compris. Le jeu consiste à gérer les tampons, et la conversion de SQL à l'efficacité de la requête chemins pour tirer parti de ces base de stockage des idiomes.

Ensuite, il y a l'ensemble de la multi-utilisateurs, de verrouillage, de l'enregistrement et de la complexité des transactions sur le dessus du stockage de l'idiome.

11voto

Saif Khan Points 6292

http://db.cs.berkeley.edu/papers/fntdb07-architecture.pdf et le WikiPedia. C’est un sujet un peu énorme et des modèles tels que SGBDR, FLATFILE, etc. L’analyseur est vraiment l’un des composants les plus importants.

Merci

9voto

Gulzar Nazim Points 35342

S'il s'agit d'un serveur SQL, je recommande vivement la série Inside Microsoft SQL Server 2005 (presse Microsoft), notamment le moteur de stockage et l'interrogation .. Il répond à toutes vos questions et bien plus encore.

Vous pourriez être intéressé par certains de ces blogs:

Craig Freedman

Kalen Delaney

Cela vaut également la peine de s’abonner à SQLServerCentral .

4voto

Peter Parker Points 13770
  • Ce qui fait une base de données réellement faire pour trouver ce qui correspond à une instruction select?

    DBs sont de l'utilisation d'index(voir ci-dessous)

  • Comment fonctionne une base de données d'interpréter une jointure différemment à une requête avec plusieurs "où key1 = key2" déclarations? Les Opérations de jointure peut être traduite en arbre binaire opérations par la fusion des arbres.

  • Comment fonctionne la base de données du magasin de la mémoire?

    memorymapped fichiers pour un accès plus rapide à leurs données

  • Comment sont les indices stockées?

    En interne DBs travaillent avec les B-Arbres pour l'indexation.

Cela devrait être expliqué plus en détails sur wikipedia..

http://en.wikipedia.org/wiki/B-tree

http://en.wikipedia.org/wiki/Database

1voto

Turnkey Points 5817

En plus de la lecture, il peut être utile d’utiliser les outils de la base de données pour examiner le plan d’exécution utilisé par la base de données dans vos requêtes. En plus de comprendre comment cela fonctionne, vous pouvez expérimenter des techniques permettant d'optimiser les requêtes avec une meilleure boucle de rétroaction.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X