BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos

19
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

description

Esta sesión se enfocará de forma práctica para que el asistente entienda los aspectos que deben mejorarse a la hora de hacer peticiones a un servidor de bases de datos; concretamente se enfocará en aspectos relacionados con cursores, consultas parametrizadas y calidad de la codificación TSQL​

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

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

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

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

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

Investigando los Tipos de Cursores

Page 6: BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos

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

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

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

Investigando ad-hoc, params, sprocs

Page 10: BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos

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

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

Vista de vista de vista… (revisar scripts)

Vistas indexadas

Page 13: BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos

Transacciones atómicas vs Transacciones de bloque

Page 14: BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos

Transacciones atómicas vs transacciones en bloque

Page 15: BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos

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

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

Ejemplos de uso de UDFs SQLCLR

Page 18: BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos

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

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/