1. Comentarios - 2097 Lecturas - 1.77 Millones
Todo el mundo es un DBA (I) Arquitectura SQL Server
Al comprender la base de datos de SQL Server, primero puede observar desde la
arquitectura de la base de datos. La arquitectura de SQL Server consta de 4
componentes principales:
Capa de protocolo (Protocolos)
Motor relacional , también conocido como procesador de consultas
Motor de almacenamiento
SqlOS
Capa de protocolo (Protocolos)
Cuando una aplicación se comunica con una base de datos de SQL Server, primero
debe seleccionar un protocolo para establecer una conexión de comunicación a través
de la interfaz de red SNI (interfaz de red de SQL Server). Se pueden utilizar los
siguientes protocolos:
TCP/IP : el protocolo más utilizado;
Canalizaciones con nombre : solo proporciona servicios para la red de
área local (LAN);
Memoria compartida : solo se admite en la misma máquina;
2. VIA (Adaptador de interfaz virtual): solo admite hardware VIA de alto
rendimiento; (este protocolo está obsoleto)
SQL Server se puede configurar para admitir múltiples protocolos
simultáneamente. Varios protocolos tienen diferentes rendimientos en diferentes
entornos, y es necesario seleccionar los protocolos apropiados de acuerdo con los
requisitos de rendimiento. Si el cliente no especifica qué protocolo usar, se puede
configurar para probar cada protocolo uno por uno.
Una vez establecida la conexión, la aplicación puede comunicarse directamente con la
base de datos. Cuando la aplicación está lista para usar la declaración T-SQL "select *
from TableA" para consultar datos de la base de datos, la solicitud de consulta se
traduce primero a un paquete de protocolo TDS (TDS: Tabular Data Stream) en el lado
de la aplicación y luego pasado a través El canal de protocolo de comunicación
conectado se envía al lado de la base de datos.
La capa de protocolo de SQL Server recibe la solicitud y la convierte en un formulario
que el motor relacional puede procesar.
Motor relacional
El motor relacional (Relational Engine), también conocido como procesador de
consultas (Query Processor), consta principalmente de 3 partes:
Analizador de comandos
Optimizador de consultas
Ejecutor de consultas
La capa de protocolo analiza el mensaje TDS recibido en una declaración T-SQL, que
primero se pasa al analizador de comandos.
Command Parser verifica la corrección de la sintaxis de T-SQL y convierte la
declaración de T-SQL en un formato interno que se puede manipular, el árbol de
consulta.
Query Tree es la representación interna de Structured Query Language
(SQL).
Lenguaje de manipulación de datos DML (lenguaje de manipulación de
datos) es un subconjunto del lenguaje SQL, que incluye INSERTAR,
ACTUALIZAR, ELIMINAR tres instrucciones principales.
El lenguaje de definición de datos (DDL) administra estructuras de índices
y tablas, incluidos CREATE, DROP, ALTER, TRUNCATE y otros
comandos.
Lenguaje de control de datos DCL (lenguaje de control de datos) es
responsable de autorizar a los usuarios a acceder y procesar datos,
incluidos nombres como GRANT y REVOKE.
3. T-SQL o Transact-SQL amplía las funciones de los lenguajes de
programación de procedimientos sobre la base de SQL, como el control
de procesos.
SQLCLR (SQL Server Common Language Runtime) utiliza ensamblados
.NET para ampliar la funcionalidad.
El Optimizador de consultas obtiene el árbol de consulta del analizador de
comandos, determina si el árbol de consulta se puede optimizar y, a continuación,
determina la mejor manera de optimizar el árbol de consulta entre muchas formas
posibles.
Las declaraciones que no se pueden optimizar, incluido el flujo de control
y DDL, etc., se compilan en su forma interna.
Las declaraciones optimizables, como DML, etc., se marcarán para
optimización.
El paso de optimización comienza con Normalizar consulta, que puede descomponer
una sola consulta en varias consultas detalladas y optimizar la consulta detallada, lo
que significa que determinará el plan para ejecutar la consulta, por lo que el resultado
del optimizador de consultas es para generar un plan de ejecución (Execution Plan).
La optimización de consultas se basa en costos, es decir, en elegir el plan más
rentable. El optimizador de consultas debe elegir el plan menos costoso en función de
las métricas de rendimiento registradas internamente. Estas métricas de rendimiento
internas incluyen: demanda de memoria, uso de CPU y número de operaciones de
E/S. Al mismo tiempo, la optimización de consultas también utiliza heurísticas (Pruning
Heuristics) para garantizar que la evaluación de optimizaciones y consultas no lleve
más tiempo que la ejecución directa de una consulta no optimizada.
Una vez completada la normalización y optimización de la consulta, los resultados de
estos procesos se compilan en una estructura de datos del Plan de Ejecución. El plan
de ejecución incluye información como qué tabla consultar, qué índice usar, qué
seguridad verificar y qué condiciones valorar.
Query Executor ejecuta el plan de ejecución producido por Query Optimizer, actúa
como programador para todos los comandos en el plan de ejecución y realiza un
seguimiento del progreso de cada ejecución de comando. La mayoría de los comandos
requieren interacción con el motor de almacenamiento para recuperar o modificar
datos, etc.
4. Motor de almacenamiento
El motor de almacenamiento de SQL Server contiene componentes responsables de
acceder a los datos y administrarlos, incluidos:
Métodos de acceso
Administrador de bloqueo
Servicios de transacciones
Utilidades (Utilidades de Control)
Los métodos de acceso incluyen operaciones específicas para crear, actualizar y
consultar datos. Algunos de los tipos de métodos de acceso se enumeran a
continuación:
Operaciones de filas e índices: responsable de operar y mantener
estructuras de datos en el disco, es decir, filas de datos e índices de árbol
B.
Operaciones de asignación de páginas: cada base de datos es una
colección de páginas de disco de 8 KB distribuidas en varios archivos
físicos. SQL Server utiliza 13 estructuras de páginas de disco, incluidas
páginas de datos, páginas de índice, etc.
5. Operaciones de control de versiones: versiones utilizadas para mantener
los cambios de fila para admitir funciones de aislamiento de instantáneas,
etc.
El método de acceso no recupera la página directamente, envía una solicitud al
Administrador de búfer, que escanea la página en el caché que administra, o lee la
página del disco en el caché. Cuando comienza la exploración, el mecanismo de
anticipación se utiliza para validar las filas o los índices de la página.
El administrador de bloqueos se usa para controlar el bloqueo de tablas, páginas,
filas y datos del sistema, y es responsable de resolver conflictos en un entorno de
múltiples usuarios, administrar la compatibilidad de diferentes tipos de bloqueos,
resolver bloqueos y escalar bloqueos según sea necesario. (Escalar bloqueos).
Transaction Services se utiliza para proporcionar soporte de propiedad ACID para
transacciones. Las propiedades de ACID incluyen:
Atomicidad
Consistencia
Aislamiento
Durabilidad
La función de registro de escritura anticipada garantiza que los registros siempre se
escriban en el disco antes de que las páginas de datos cambiantes se escriban en el
disco, lo que hace posible revertir las tareas. La escritura en el registro de
transacciones es síncrona, es decir, SQL Server debe esperar a que se complete. Sin
embargo, la escritura de páginas de datos puede ser asíncrona, por lo que las páginas
de datos que deben escribirse pueden organizarse en la memoria caché para escritura
por lotes para mejorar el rendimiento de escritura.
SQL Server admite dos modelos de concurrencia para garantizar las propiedades ACID
de las transacciones:
La simultaneidad pesimista supone que siempre se producirán conflictos
y bloquea los datos para garantizar la corrección y la simultaneidad.
Simultaneidad optimista asume que no habrá conflictos y los maneja
cuando se encuentran.
6. En el modelo de concurrencia optimista, los usuarios no bloquean los datos al
leerlos. Al realizar una actualización, el sistema verifica si los datos han cambiado
desde que otro usuario los leyó. Si otro usuario cambia los datos, se genera un error y
el usuario que recibe el mensaje de error revertirá la transacción. Este modelo se usa
principalmente en entornos con poca contención de datos y cuando el costo de
bloquear los datos supera el costo de revertir la transacción.
SQL Server proporciona 5 niveles de aislamiento (Nivel de aislamiento), que pueden
admitir diferentes modelos de simultaneidad cuando se trata de simultaneidad de
múltiples usuarios.
Read Uncommitted: solo admite simultaneidad pesimista;
Lectura repetible: solo admite simultaneidad pesimista;
Serializable: solo admite concurrencia pesimista;
Instantánea: Admite simultaneidad optimista;
Lectura comprometida: el nivel de aislamiento predeterminado, que
admite tanto la simultaneidad pesimista como la simultaneidad optimista
según la configuración.
Utilities (Controlling Utilities) contiene herramientas para controlar el motor de
almacenamiento, como carga masiva (Bulk-load), comandos DBCC, administración de
índices de texto completo (Administración de índices de texto completo), comandos de
copia de seguridad y restauración.
SqlOS
SQLOS es una capa de aplicación separada, la capa más baja del motor de SQL
Server. Las características clave de SQLOS incluyen:
Planificación
Gestión de la memoria
Sincronización: Proporciona mecanismos de bloqueo como Spinlock,
Mutex, ReaderWriterLock, etc.
Agente de memoria: proporciona distribución de memoria en lugar de
asignación de memoria.
Manejo de excepciones
Detección de interbloqueo
Eventos extendidos
E/S asíncrona (IO asíncrona)