BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos
description
Transcript of BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos
![Page 1: BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos](https://reader038.fdocuments.co/reader038/viewer/2022103016/555e0e43d8b42a9e188b4ddb/html5/thumbnails/1.jpg)
BEST_PRACTICES Buenas Prácticas para el Desarrollador de bases de datos
REL303
Javier Loria, Jesús Gil y Eladio Rincón
SQL Server MVPs
α{[email protected] || [email protected]}
Mentors
![Page 2: BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos](https://reader038.fdocuments.co/reader038/viewer/2022103016/555e0e43d8b42a9e188b4ddb/html5/thumbnails/2.jpg)
No olvideis rellenar las evaluaciones en el Portal
del Summit!
Nos encontrareis en la zona de exposición en los
siguientes horarios
Javier, Jesús y Eladio
Mentors SolidQ
![Page 3: BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos](https://reader038.fdocuments.co/reader038/viewer/2022103016/555e0e43d8b42a9e188b4ddb/html5/thumbnails/3.jpg)
Buenas Prácticas para el DBD
αCursores de cliente vs Cursores de servidor β Cuidado donde lo abres y tipo de cursor
αConsultas ad-hoc vs consultas parametrizadas vs procedimientos almacenados β Trata bien tu CPU
αCalidad del código TSQL β UDFs, Vistas
β Transacciones atómicas vs transacciones de bloque
AGENDA
![Page 4: BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos](https://reader038.fdocuments.co/reader038/viewer/2022103016/555e0e43d8b42a9e188b4ddb/html5/thumbnails/4.jpg)
Buenas Prácticas para el DBD
αHabitual en aplicaciones VB tradicional donde debías especificar tipo de cursor y donde se abre
CUIDADO CON LOS CURSORES
![Page 5: BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos](https://reader038.fdocuments.co/reader038/viewer/2022103016/555e0e43d8b42a9e188b4ddb/html5/thumbnails/5.jpg)
Investigando los Tipos de Cursores
![Page 6: BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos](https://reader038.fdocuments.co/reader038/viewer/2022103016/555e0e43d8b42a9e188b4ddb/html5/thumbnails/6.jpg)
Consultas Eficientes
αConclusión β Viajes de Ida y Vuelta
γ Keyset, estáticos, dinámicos
β Usan tempdb γ Keyset, estáticos
β Rápidos: fast_forward (server y client)
α.NET no lo sufre sin triquiñuelas ; Cuidado con APIs en las que puedes especificar tipo de cursor y ubicación
CUIDADO CON LOS CURSORES
![Page 7: BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos](https://reader038.fdocuments.co/reader038/viewer/2022103016/555e0e43d8b42a9e188b4ddb/html5/thumbnails/7.jpg)
Buenas Prácticas para el DBD
βLo habitual
βSeguridad γ Gestión basada a nivel de SP (no por objeto base)
βEncapsulación: Punto único de entrada δ poco acoplamiento, alta cohesión
βMantenimiento: unidad centralizada para: δ Mejorar proceso, optimización, gestión de bugs, …
CONSULTAS AD-HOC, PARAMETRIZADAS, SPS
¿POR QUÉ PROCEDIMIENTOS ALMACENADOS SI?
![Page 8: BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos](https://reader038.fdocuments.co/reader038/viewer/2022103016/555e0e43d8b42a9e188b4ddb/html5/thumbnails/8.jpg)
Buenas Prácticas para el DBD
βRendimiento
γCuestión de CPU y tiempo!!!
γVs. consultas ad-hoc
δParsing, validaciones, seguridad, exec plan, …
γVs. consultas preparadas
δGestión de red
γLos SPs son más cuidadosos con la memoria
δMonitoriza la gestión del buffer pool
CONSULTAS AD-HOC, PARAMETRIZADAS, SPS
¿POR QUÉ PROCEDIMIENTOS ALMACENADOS SI?
![Page 9: BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos](https://reader038.fdocuments.co/reader038/viewer/2022103016/555e0e43d8b42a9e188b4ddb/html5/thumbnails/9.jpg)
Investigando ad-hoc, params, sprocs
![Page 10: BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos](https://reader038.fdocuments.co/reader038/viewer/2022103016/555e0e43d8b42a9e188b4ddb/html5/thumbnails/10.jpg)
Buenas Prácticas para el DBD
αConclusión
β Muévete a consultas parametrizadas o procedimientos almacenados
β Si no, puedes considera: γ Parametrización forzada:
δ SQL Server trata de autoparametrizar “todo”
β En algunos escenarios: γ sp_configure ‘optimize for adhoc workloads’
CONSULTAS AD-HOC, PARAMETRIZADAS, SPS
¿POR QUÉ PROCEDIMIENTOS ALMACENADOS SI?
Las consultas parametrizadas suelen ser
suficientemente buenas
![Page 11: BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos](https://reader038.fdocuments.co/reader038/viewer/2022103016/555e0e43d8b42a9e188b4ddb/html5/thumbnails/11.jpg)
Buenas Prácticas para el DBD
αVistas
β¿Para qué usarlas? γ Simplificación
δ Más fácil de entender vw_pedidos que query de pedidos
γ Seguridad
δ Gestión de permisos mediante vistas ε No acceso a tablas base
ε Permisos para usar y manipular vista
γ Alternativa a estructuras físicas existentes
δ Vistas indexadas
δ Vistas particionadas
USO EFICIENTE DE VISTAS
![Page 12: BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos](https://reader038.fdocuments.co/reader038/viewer/2022103016/555e0e43d8b42a9e188b4ddb/html5/thumbnails/12.jpg)
Vista de vista de vista… (revisar scripts)
Vistas indexadas
![Page 13: BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos](https://reader038.fdocuments.co/reader038/viewer/2022103016/555e0e43d8b42a9e188b4ddb/html5/thumbnails/13.jpg)
Transacciones atómicas vs Transacciones de bloque
![Page 14: BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos](https://reader038.fdocuments.co/reader038/viewer/2022103016/555e0e43d8b42a9e188b4ddb/html5/thumbnails/14.jpg)
Transacciones atómicas vs transacciones en bloque
![Page 15: BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos](https://reader038.fdocuments.co/reader038/viewer/2022103016/555e0e43d8b42a9e188b4ddb/html5/thumbnails/15.jpg)
Buenas Prácticas para el DBD
αConclusión: Pásaselo a Sistemas
βDimensiona Transaction Log acorde
βVigila el tamaño de los VLFs
TRANSACCIONES ATÓMICAS
![Page 16: BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos](https://reader038.fdocuments.co/reader038/viewer/2022103016/555e0e43d8b42a9e188b4ddb/html5/thumbnails/16.jpg)
Buenas Prácticas para el DBD
αUDFs; usado para: γ Simplificación y generalización de código existente
β Tipo1: Escalares γ “Resolución de constantes”
γ Convertir un caso de uso en procedural
β Tipo2 y Tipo3: de Resultado de Tablas γ Simular “vistas parametrizadas”
γ JOINs con Tablas o UDFs (sentencia APPLY)
β ¿Qué debes evitar? γ Puedes implementar cursores!!
FUNCIONES DEFINIDAS DE USUARIO
![Page 17: BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos](https://reader038.fdocuments.co/reader038/viewer/2022103016/555e0e43d8b42a9e188b4ddb/html5/thumbnails/17.jpg)
Ejemplos de uso de UDFs SQLCLR
![Page 18: BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos](https://reader038.fdocuments.co/reader038/viewer/2022103016/555e0e43d8b42a9e188b4ddb/html5/thumbnails/18.jpg)
Buenas Prácticas para el DBD
αVigila los cursores con SQL Profiler en tus pruebas β Si eres admin, vigila el código que entra (cuidado con los filtros)
β «Me llaman Dr. House» Enrique Catalá
αMejora el tiempo de respuesta de tus consultas con codificación «pre» compilada β No hagas algo que está en tu memoria (compilación)
β «Andrés Iniesta juega de memoria» El amigo Pep
αCalidad del código TSQL; simplicidad
β «Hazlo simple, pero no más simple» El mentor de Mou
CONCLUSIONES
![Page 19: BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos](https://reader038.fdocuments.co/reader038/viewer/2022103016/555e0e43d8b42a9e188b4ddb/html5/thumbnails/19.jpg)
Si quieres disfrutar de las mejores sesiones de
nuestros mentores de España y Latino América,
ésta es tu oportunidad.
http://summit.solidq.com/madrid/