SQL Server Architecnología (explicada)
MS SQL Server es una arquitectura cliente-servidor. El proceso de MS SQL Server comienza cuando la aplicación cliente envía una solicitud. SQL Server acepta, procesa y responde a la solicitud con datos procesados. Analicemos en detalle toda la arquitectura que se muestra a continuación:
Como muestra el siguiente diagrama, hay tres componentes principales en SQL Server Architectura:
- Capa de protocolo
- Motor relacional
- Motor de almacenamiento
Capa de protocolo – SNI
LA CAPA DE PROTOCOLO DEL SERVIDOR MS SQL admite 3 tipos de servidor cliente Architectura. comenzaremos con “Tres tipos de servidor cliente Architectura” que admite MS SQL Server.
Memoria compartida
Reconsideremos un escenario de conversación temprano en la mañana.
MAMÁ y TOM – Aquí Tom y su mamá estaban en el mismo lugar lógico, es decir, en su casa. Tom pudo pedir café y mamá pudo servirlo caliente.
SERVIDOR MS SQL – Aquí MS SQL el servidor proporciona PROTOCOLO DE MEMORIA COMPARTIDA. aquí CLIENTE y MS SQL El servidor se ejecuta en la misma máquina. Ambos pueden comunicarse mediante el protocolo de memoria compartida.
Analogía: Vamos a mapear entidades en los dos escenarios anteriores. Podemos asignar fácilmente Tom al Cliente, Mamá al servidor SQL, Hogar a la Máquina y Comunicación Verbal al Protocolo de Memoria Compartida.
Desde el escritorio de configuración e instalación:
Para conexión a base de datos local: en SQL Management Studio, La opción “Nombre del servidor” podría ser
"."
"host local"
"127.0.0.1"
“Máquina\Instancia”
TCP / IP
Ahora considere que por la noche, Tom está de humor para la fiesta. Quiere pedir un café en una cafetería conocida. La cafetería se encuentra a 10 km de su casa.
Aquí Tom y Starbuck están en una ubicación física diferente. Tom en casa y Starbucks en el concurrido mercado. Se están comunicando a través de la red celular. De manera similar, MS SQL SERVER proporciona la capacidad de interactuar a través de Protocolo TCP / IP, donde el CLIENTE y MS SQL Server son remotos entre sí y están instalados en una máquina separada.
Analogía: Vamos a mapear entidades en los dos escenarios anteriores. Podemos asignar fácilmente Tom al Cliente, Starbuck al servidor SQL, el hogar/mercado a la ubicación remota y finalmente la red celular al protocolo TCP/IP.
Notas del escritorio de Configuración/instalación:
- En SQL Management Studio: para la conexión a través de TCP\IP, la opción "Nombre del servidor" debe ser "Máquina\Instancia del servidor".
- El servidor SQL utiliza el puerto 1433 en TCP/IP.
Tubos con nombre
Ahora, finalmente en la noche, Tom quería tomar un té verde claro que su vecina Sierra prepara muy bien.
Aquí tom y su Vecino, Sierra, están en el mismo los libros físicos ubicación, siendo prójimos unos de otros. Se están comunicando a través de Intrared. De manera similar, los SERVIDOR MS SQL proporciona la capacidad de interactuar a través de Pipa con nombre protocolo. Aquí el CLIENTE y SERVIDOR MS SQL están en conexión a través de LAN.
Analogía: Vamos a mapear entidades en los dos escenarios anteriores. Podemos asignar fácilmente Tom al Cliente, Sierra al servidor SQL, Vecino a la LAN y finalmente la red intra al Protocolo de canalización con nombre.
Notas del escritorio de Configuración/instalación:
- Para conexión a través de tubería con nombre. Esta opción está deshabilitada de forma predeterminada y debe habilitarla el Administrador de configuración de SQL.
¿Qué es el TDS?
Ahora que sabemos que existen tres tipos de Cliente-Servidor Architecture, echemos un vistazo a TDS:
- TDS significa flujo de datos tabulares.
- Los 3 protocolos utilizan paquetes TDS. TDS está encapsulado en paquetes de red. Esto permite la transferencia de datos desde la máquina cliente a la máquina servidor.
- TDS fue desarrollado por primera vez por Sybase y ahora es propiedad de Microsoft
Motor relacional
El motor relacional también se conoce como procesador de consultas. tiene el SQL Server componentes que determinan qué debe hacer exactamente una consulta y cómo se puede hacer mejor. Es responsable de la ejecución de las consultas de los usuarios solicitando datos del motor de almacenamiento y procesando los resultados que se devuelven.
Como se muestra en el ArchiDiagrama estructural hay 3 componentes principales del Motor Relacional. Estudiemos los componentes en detalle:
Analizador CMD
Los datos una vez recibidos de la capa de protocolo se pasan al motor relacional. “Analizador CMD” es el primer componente del motor relacional que recibe los datos de la consulta. El trabajo principal de CMD Parser es verificar la consulta para Error sintáctico y semántico. Finalmente, es genera un árbol de consultas. Analicemos en detalle.
Verificación sintáctica:
- Como cualquier otro lenguaje de programación, MS SQL también tiene un conjunto predefinido de palabras clave. Además, SQL Server tiene su propia gramática que SQL Server entiende.
- SELECCIONAR, INSERTAR, ACTUALIZAR y muchos otros pertenecen a listas de palabras clave predefinidas de MS SQL.
- CMD Parser realiza comprobaciones sintácticas. Si las entradas de los usuarios no siguen estas reglas gramaticales o de sintaxis del lenguaje, devuelve un error.
Ejemplo: Digamos que un ruso fue a un restaurante japonés. Pide comida rápida en ruso. Desafortunadamente, el camarero sólo entiende japonés. ¿Cuál sería el resultado más obvio?
La respuesta es: el camarero no puede procesar más el pedido.
No debe haber ninguna desviación en la gramática o el lenguaje que acepta el servidor SQL. Si los hay, el servidor SQL no puede procesarlos y, por lo tanto, devolverá un mensaje de error.
Aprenderemos más sobre las consultas de MS SQL en los próximos tutoriales. Sin embargo, considere a continuación la sintaxis de consulta más básica como
SELECT * from <TABLE_NAME>;
Ahora, para tener una idea de lo que hace la sintáctica, digamos si el usuario ejecuta la consulta básica como se muestra a continuación:
SELECR * from <TABLE_NAME>
Tenga en cuenta que en lugar de "SELECCIONAR", el usuario escribió "SELECR".
Resultado: EL CMD Parser analizará esta declaración y arrojará el mensaje de error. Como "SELECR" no sigue el nombre y la gramática de la palabra clave predefinidos. Aquí CMD Parser esperaba "SELECCIONAR".
Verificación semántica:
- Esto es realizado por Normalizador.
- En su forma más simple, verifica si el nombre de la columna y el nombre de la tabla que se consulta existen en el esquema. Y si existe, vincúlelo a Consulta. Esto también se conoce como Encuadernación.
- La complejidad aumenta cuando las consultas de usuario contienen VIEW. Normalizer realiza el reemplazo con la definición de vista almacenada internamente y mucho más.
Entendamos esto con la ayuda del siguiente ejemplo:
SELECT * from USER_ID
Resultado: EL CMD Parser analizará esta declaración para realizar una verificación semántica. El analizador arrojará un mensaje de error ya que el Normalizador no encontrará la tabla solicitada (USER_ID) porque no existe.
Crear árbol de consultas:
- Este paso genera un árbol de ejecución diferente en el que se puede ejecutar la consulta.
- Tenga en cuenta que todos los árboles diferentes tienen el mismo resultado deseado.
Optimizador
El trabajo del optimizador es crear un plan de ejecución para la consulta del usuario. Este es el plan que determinará cómo se ejecutará la consulta del usuario.
Tenga en cuenta que no todas las consultas están optimizadas. La optimización se realiza para comandos DML (lenguaje de modificación de datos) como SELECCIONAR, INSERTAR, ELIMINAR y ACTUALIZAR. Estas consultas primero se marcan y luego se envían al optimizador. Los comandos DDL como CREATE y ALTER no están optimizados, sino que se compilan en un formato interno. El costo de la consulta se calcula en función de factores como el uso de CPU, el uso de memoria y las necesidades de entrada/salida.
La función del optimizador es encontrar el plan de ejecución más barato, no el mejor y rentable.
Antes de entrar en más detalles técnicos del Optimizador, considere el siguiente ejemplo de la vida real:
Ejemplo:
Digamos que desea abrir una cuenta bancaria en línea. Ya conoce un banco que tarda un máximo de 2 días en abrir una cuenta. Pero también tienes una lista de otros 20 bancos, lo que puede tardar o no menos de 2 días. Puede comenzar a interactuar con estos bancos para determinar cuáles tardan menos de 2 días. Ahora, es posible que no encuentre un banco que tarde menos de 2 días y se pierda tiempo adicional debido a la actividad de búsqueda en sí. Hubiera sido mejor abrir una cuenta en el primer banco.
Conclusión: Es más importante elegir sabiamente. Para ser precisos, elija cuál La opción es la mejor, no la más barata.
De manera similar, la EM SQL Optimizer funciona con algoritmos exhaustivos/heurísticos integrados. El objetivo es minimizar el tiempo de ejecución de las consultas. Todos los algoritmos del Optimizador son propiedad de Microsoft y un secreto. Aunque, A continuación se detallan los pasos de alto nivel realizados por MS SQL Optimizer. Las búsquedas de optimización siguen tres fases como se muestra en el siguiente diagrama:
Fase 0: Búsqueda de Plan Trivial:
- Esto también se conoce como Etapa de preoptimización.
- En algunos casos, puede que solo exista un plan práctico y viable, conocido como plan trivial. No es necesario crear un plan optimizado. La razón es que, si se busca más, se encontraría el mismo plan de ejecución en tiempo de ejecución. Y eso también con el costo adicional de buscar un plan optimizado que no era necesario en absoluto.
- Si no se encontró ningún plan Trivial, entonces 1st Comienza la fase.
Fase 1: Búsqueda de planes de procesamiento de transacciones
- Esto incluye la búsqueda de Plan simple y complejo.
- Búsqueda de plan simple: los datos anteriores de la columna y el índice involucrados en la consulta se utilizarán para el análisis estadístico. Esto generalmente consiste, entre otros, en un índice por tabla.
- De todas formas, si no se encuentra el plan simple, se busca un plan más complejo, que implica varios índices por tabla.
Fase 2: Procesamiento Paralelo y Optimización.
- Si ninguna de las estrategias anteriores funciona, Optimizer busca posibilidades de procesamiento paralelo. Esto depende de las capacidades de procesamiento y la configuración de la máquina.
- Si esto todavía no es posible, entonces comienza la fase final de optimización. Ahora, el objetivo final de la optimización es encontrar todas las demás opciones posibles para ejecutar la consulta de la mejor manera. Fase final de optimización Algorithms están Microsoft Propiedad.
Ejecutor de consultas
Llamadas al ejecutor de consultas Método de acceso. Proporciona un plan de ejecución para la lógica de recuperación de datos necesaria para la ejecución. Una vez que se reciben los datos de Storage Engine, el resultado se publica en la capa de protocolo. Finalmente, los datos se envían al usuario final.
Motor de almacenamiento
El trabajo del motor de almacenamiento es almacenar datos en un sistema de almacenamiento como disco o SAN y recuperar los datos cuando sea necesario. Antes de profundizar en el motor de almacenamiento, echemos un vistazo a cómo se almacenan los datos en Database y tipo de archivos disponibles.
Archivo de datos y extensión:
Archivo de datos, almacena físicamente datos en forma de páginas de datos, y cada página de datos tiene un tamaño de 8 KB, lo que forma la unidad de almacenamiento más pequeña de SQL Server. Estas páginas de datos están agrupadas lógicamente para formar extensiones. A ningún objeto se le asigna una página en SQL Server.
El mantenimiento del objeto se realiza mediante extensiones. La página tiene una sección llamada Encabezado de página con un tamaño de 96 bytes, que contiene información de metadatos sobre la página, como tipo de página, número de página, tamaño del espacio utilizado, tamaño del espacio libre y puntero a la página siguiente y a la anterior. , etc.
Tipos de archivo
- archivo primario
- Cada base de datos contiene un archivo primario.
- Esto almacena todos los datos importantes relacionados con tablas, vistas, activadores, etc.
- La extensión es .mdf normalmente pero puede tener cualquier extensión.
- archivo secundario
- La base de datos puede contener o no varios archivos secundarios.
- Esto es opcional y contiene datos específicos del usuario.
- La extensión es .ndf normalmente pero puede tener cualquier extensión.
- Archivo de registro
- También conocido como registros de escritura anticipada.
- La extensión es .Ldf
- Utilizado para la gestión de transacciones.
- Esto se utiliza para recuperarse de cualquier instancia no deseada. Realice la importante tarea de revertir transacciones no comprometidas.
Storage Engine tiene 3 componentes; Veámoslos en detalle.
Método de acceso
Actúa como una interfaz entre el ejecutor de consultas y Buffer Administrador/Registros de transacciones.
El método de acceso en sí no realiza ninguna ejecución.
La primera acción es determinar si la consulta es:
- Declaración de selección (DDL)
- Declaración no selectiva (DDL y DML)
Dependiendo del resultado, el método de acceso realiza los siguientes pasos:
- Si la consulta es DDL, instrucción SELECT, la consulta se pasa al Buffer Manager para su posterior procesamiento.
- Y si consulta si DDL, declaración NO SELECT, la consulta se pasa al Administrador de transacciones. Esto incluye principalmente la declaración ACTUALIZAR.
Buffer Manager
Buffer manager gestiona las funciones principales de los módulos siguientes:
- Planificar caché
- Análisis de datos: Buffer caché y almacenamiento de datos
- Página sucia
Aprenderemos a planificar, Buffer y Caché de datos en esta sección. Cubriremos las páginas sucias en la sección Transacción.
Planificar caché
- Plan de consulta existente: El administrador de búfer verifica si el plan de ejecución se encuentra en la caché de planes almacenada. Si es así, se utilizan la caché de planes de consulta y su caché de datos asociada.
- Plan de caché por primera vez: ¿De dónde proviene la caché de Plane existente? Si se ejecuta el plan de ejecución de la consulta por primera vez y es complejo, tiene sentido almacenarlo en la caché de Plane. Esto garantizará una disponibilidad más rápida la próxima vez que SQL Server reciba la misma consulta. Por lo tanto, no es nada más que la consulta en sí la que se almacena en la ejecución del Plan si se ejecuta por primera vez.
Análisis de datos: Buffer caché y almacenamiento de datos
Buffer El administrador proporciona acceso a los datos requeridos. A continuación se presentan dos enfoques posibles dependiendo de si existen datos en la caché de datos o no:
Buffer Caché – Análisis suave:
Buffer El administrador busca datos en Buffer en caché de datos. Si están presentes, estos datos son utilizados por Query Executor. Esto mejora el rendimiento ya que la cantidad de operaciones de E/S se reduce al recuperar datos del caché en comparación con recuperar datos del almacenamiento de datos.
Almacenamiento de datos – Análisis duro:
Si los datos no están presentes en Buffer Administrador de los datos requeridos se busca en Almacenamiento de datos. También almacena datos en la caché de datos para uso futuro.
Página sucia
Se almacena como una lógica de procesamiento de Transaction Manager. Lo aprenderemos en detalle en la sección Administrador de transacciones.
Gerente de transacciones
El Administrador de transacciones se invoca cuando el método de acceso determina que la consulta es una declaración sin selección.
Administrador de registro
- Log Manager realiza un seguimiento de todas las actualizaciones realizadas en el sistema a través de registros en Registros de transacciones.
- Los registros tienen Número de secuencia de registros con el ID de transacción y el registro de modificación de datos.
- Esto se utiliza para realizar un seguimiento de Transacción comprometida y reversión de transacción.
Administrador de bloqueo
- Durante la transacción, los datos asociados en el almacenamiento de datos están en estado de bloqueo. Este proceso lo maneja Lock Manager.
- Este proceso asegura consistencia y aislamiento de datos. También conocidas como propiedades ÁCIDAS.
Proceso de ejecución
- Log Manager inicia el registro y Lock Manager bloquea los datos asociados.
- La copia de los datos se mantiene en el Buffer cache.
- Una copia de los datos que se supone deben actualizarse se mantiene en el búfer de registro y todos los datos de actualización de eventos se encuentran en el búfer de datos.
- Las páginas que almacenan los datos también se conocen como Páginas sucias.
- Registro de punto de control y escritura anticipada: Este proceso se ejecuta y marca todas las páginas desde Páginas sucias al disco, pero la página permanece en el caché. La frecuencia es de aproximadamente 1 ejecución por minuto. Pero la página primero se envía a la página de datos del archivo de registro desde Buffer registro. Esto se conoce como Registro de escritura anticipada.
- Escritor perezoso: La página sucia puede permanecer en la memoria. Cuando el servidor SQL observa una carga enorme y Buffer Se necesita memoria para una nueva transacción, libera páginas sucias del caché. Opera en LRU – Algoritmo menos utilizado recientemente para limpiar páginas del grupo de búferes al disco.
Resum
- Tres tipos de servidor cliente ArchiExisten tecturas: 1) Memoria compartida 2) TCP/IP 3) Canalizaciones con nombre
- TDS, desarrollado por Sybase y ahora propiedad de Microsoft, es un paquete que está encapsulado en paquetes de red para la transferencia de datos desde la máquina cliente a la máquina servidor.
- El motor relacional contiene tres componentes principales:Analizador CMD: Esto es responsable de los errores sintácticos y semánticos y finalmente genera un árbol de consultas.Optimizador: La función del optimizador es encontrar el plan de ejecución más barato, no el mejor y rentable.
Ejecutor de consultas: El ejecutor de consultas llama al método de acceso y proporciona un plan de ejecución para la lógica de recuperación de datos necesaria para la ejecución.
- Existen tres tipos de archivos: archivo primario, archivo secundario y archivos de registro.
- Motor de almacenamiento: tiene los siguientes componentes importantesMétodo de acceso: Este componente determina si la consulta es una declaración de selección o de no selección. invoca Buffer y Transfer Manager en consecuencia.Buffer Manager: Buffer manager gestiona las funciones principales para Plan Cache, Data Parsing y Dirty Page.
Gerente de transacciones: Gestiona transacciones no seleccionadas con la ayuda de administradores de registro y bloqueo. Además, facilita una implementación importante del registro Write Ahead y de los escritores diferidos.