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.