2010-05-21 19 views
15

Siempre me ha interesado cómo puede arrojar algo de SQL en la base de datos, y devuelve casi instantáneamente los resultados de una manera ordenada sin pensar en ello como otra cosa que una caja negra.¿Cómo funcionan las bases de datos relacionales bajo la capucha?

¿Qué está pasando realmente?

Estoy bastante seguro de que tiene algo que ver con la forma en que los valores se presentan regularmente en la memoria, de forma similar a una matriz; pero aparte de eso, no sé mucho más.

¿Cómo se analiza SQL de una manera que facilita todo esto?

+0

Vea también: http://stackoverflow.com/questions/751236/relational-databases-there-has-to-be-more-right –

Respuesta

12

El motor crea un llamado plan de consulta.

Es un conjunto de algoritmos utilizados para devolver los conjuntos que describió lógicamente con una consulta SQL.

Casi cada motor le permite ver qué plan de consulta creará para una determinada consulta.

  • En MySQL y PostgreSQL, antepones la consulta con la palabra EXPLAIN

  • En SQL Server, se corre SET SHOWPLAN_TEXT ON antes de ejecutar la consulta o simplemente pulsa Ctrl-L en el estudio de la gerencia

  • En Oracle , antepone la consulta al EXPLAIN PLAN FOR y luego a la SELECT * FROM (dbms_xplan.display)

que puede resultar interesante este artículo en mi blog:

que aborda la misma cuestión.

+2

Preferido su blog, y simplemente imprimió su artículo para leer en el tren de vuelta casa; ¡Gracias! – Pierreten

2

Usted puede leer estos libros:

[1] H. García-Molina, Implementación del Sistema de Base de Datos, Prentice Hall, 2000

[2] R. Elmasri, SB Navathe, Fundamentos de los sistemas de bases de datos, The Benjamin/Cummings Publ. Comp, Inc, 1994

5

En un sentido básico, para muchos RDBMS:.

a) La etapa de análisis de sintaxis toma de entrada de la configuración del servidor (tomas de corriente, lo que sea) y convierte este SQL en un AST válida u otra forma intermedia.
b) Luego pasa esta información a un motor de almacenamiento que convierte esta descripción de consulta en un conjunto de búsquedas en índices, tablas, particiones, datos duplicados y otros elementos que conforman la semántica de almacenamiento del esquema
c) El motor luego devuelve un conjunto de datos que luego se proporcionan al cliente en cualquier forma (XML, CSV, específico del cliente).

Pero no hay una respuesta verdadera. Encontrará similitudes en los algoritmos de indexación, algoritmos de distribución, almacenamiento en caché, bloqueo y otras cosas ...pero las similitudes principales son la interfaz de lenguaje del lenguaje SQL en sí. Más allá de eso, pueden implementarse de la forma que deseen ... siempre que sus resultados cumplan con la semántica esperada de la consulta de entrada.

Realmente RDBMs contienen todo tipo de estructuras de ciencias de la computación ... y cada uno tiene métodos altamente desarrollados y especializados para convertir la semántica implícita de SQL en almacenamiento concreto.

Piense en qué tan diferentes son MySQL y Oracle ... o PostgreSQL y Microsoft SQL. Todos ellos intentan para cumplir con algún tipo de especificación similar a SQL común ... pero cómo se cumple esa especificación es diversa.

Los motores incorporan todo tipo de exóticos, índices especializados para encontrar la ubicación física de los datos, sistemas de almacenamiento en caché y más.

Hay toneladas de código abierto bases de datos tales como MySQL, PostgreSQL y búsqueda de sistemas tales como Sphinx se puede echar un vistazo a su aplicación. ¡El código abierto es para aprender tanto como cualquier cosa! Intenta encontrar un "mentor" que te guíe a través de la fuente.

3

Estoy bastante seguro de que tiene algo que ver con cómo los valores se presentan regularmente en la memoria, de forma similar a una matriz; pero aparte de eso, no sé mucho más.

Es posible que también desee buscar artículos en B+ Trees. Esa es la estructura de datos que usan las principales bases de datos relacionales.

Cuestiones relacionadas