Mejoras del lenguaje T-SQL 2012 (parte 2)
Enrique Catalá Bañuls
REL300003
Mentor – Relational engine
MAP 2012 – Microsoft ...
Mejoras del lenguaje T-SQL 2012 (parte 2)
Rendimiento de nuevas funciones escalares
Sugerencias para el optimizador de c...
DEMODEMO
Rendimiento de las nuevas funciones escalares
 Introducido en SQL 2008 R2 SP1
 Especifica que el query optimizer use solo operaciones index
seek
 En SQL 2012 se pued...
 Nuevo hint introducido en SQL 2008R2 SP1
 Complementa a FORCESEEK para forzar a la query a solo
utilizar indexscan
 Út...
DEMODEMO
Sugerencias para el optimizador de consultas
Mejoras del lenguaje T-SQL 2012 (parte 2)
Rendimiento de nuevas funciones escalares
Sugerencias para el optimizador de c...
 Sirven para crear valores de clave en inserciones
 Permiten incluso almacenar dicho valor en variable
 NEXT VALUE FOR
...
 Mejora el rendimiento pre-obteniendo valores en memoria
 Se evita escritura en disco para gestión del contador
 Por de...
 Si quedan valores libres (por ejemplo, nos toca el 5)
 Se calcula el siguiente valor de memoria
 Se obtiene el siguien...
 Facilitan escenarios parcialmente conectados con
sp_sequence_get_range
 Aplicación práctica vista en la sesión de “buen...
DEMODEMO
Rendimiento de secuencias
 Se recomienda caché
de 40 elementos
 En SQL 2012 RTM
 Identity utiliza cacheo
de 10
 Se puede modificar el
cacheo e i...
Mejoras del lenguaje T-SQL 2012 (parte 2)
Rendimiento de nuevas funciones escalares
Sugerencias para el optimizador de c...
 SQL Server 2012 está casi cerca de ofrecernos la
implementación completa de window funtions
 SQL Serve 2012 introduce:
...
Window functions
Conceptos clave: Todos juntos
Partition
UNBOUNDED
FOLLOWING
UNBOUNDED
PRECEDING
CURRENT
ROW
Window functions
Sintaxis
Partitioning
Ordering
Slicing/framing
 Directamente afectado por el Window Spool Operator
 Utilizado para almacenar datos del frame
 Dos tipos de ejecución
...
 Crea un índice por la columna de particionado y
luego por las columnas de ordenación (en su
mismo orden)
 Incluye el re...
DEMODEMO
Rendimiento de window functions
Mejoras del lenguaje T-SQL 2012 (parte 2)
Rendimiento de nuevas funciones escalares
Sugerencias para el optimizador de c...
Si quieres disfrutar de las mejores sesiones de
nuestros mentores de España y Latino América,
ésta es tu oportunidad.
http...
Upcoming SlideShare
Loading in …5
×

Mejoras del lenguaje T-SQL 2012 (parte 2) | SolidQ Summit 2012

384
-1

Published on

http://summit.solidq.com/madrid/2012
En esta sesión, se parte de las nociones básicas impartidas en la sesión de Mejoras del lenguaje T-SQL 2012 (parte 1) y se profundiza más en detalles importantes como por ejemplo…¿por qué son mas eficientes?, ¿cuándo podemos hacer un uso de las mismas en problemas reales?, ¿Cómo podemos integrarlas en soluciones actuales?

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
384
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
15
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Mejoras del lenguaje T-SQL 2012 (parte 2) | SolidQ Summit 2012

  1. 1. Mejoras del lenguaje T-SQL 2012 (parte 2) Enrique Catalá Bañuls REL300003 Mentor – Relational engine MAP 2012 – Microsoft Technical Ranger – Microsoft Certified Trainer ecatala@solidq.com
  2. 2. Mejoras del lenguaje T-SQL 2012 (parte 2) Rendimiento de nuevas funciones escalares Sugerencias para el optimizador de consultas Secuencias Window functions
  3. 3. DEMODEMO Rendimiento de las nuevas funciones escalares
  4. 4.  Introducido en SQL 2008 R2 SP1  Especifica que el query optimizer use solo operaciones index seek  En SQL 2012 se puede especificar el índice y sus columnas para controlar mejor el acceso al índice PRECAUCIÓN: Limitar con FORCESEEK puede dar lugar a que no se encuentre ningún plan de ejecución y se devuelva error 8622 Sugerencias para optimizador de consultas FORCESEEK Syntax Example Description Without an index or INDEX hint FROM dbo.MyTable WITH (FORCESEEK) The query optimizer considers only index seek operations to access the table or view through any relevant index. Combined with an INDEX hint FROM dbo.MyTable WITH (FORCESEEK, INDEX (MyIndex)) The query optimizer considers only index seek operations to access the table or view through the specified index. Parameterized by specifying an index and index columns FROM dbo.MyTable WITH (FORCESEEK (MyIndex (col1, col2, col3))) The query optimizer considers only index seek operations to access the table or view through the specified index using at least the specified index columns.
  5. 5.  Nuevo hint introducido en SQL 2008R2 SP1  Complementa a FORCESEEK para forzar a la query a solo utilizar indexscan  Útil para escenarios donde el optimizador infraestima el nº de filas devuelto  Soporta el nuevo INDEX hint al igual que FORCESEEK  No se puede usar en combinación con FORCESEEK Sugerencias para optimizador de consultas FORCESCAN
  6. 6. DEMODEMO Sugerencias para el optimizador de consultas
  7. 7. Mejoras del lenguaje T-SQL 2012 (parte 2) Rendimiento de nuevas funciones escalares Sugerencias para el optimizador de consultas Secuencias Window functions
  8. 8.  Sirven para crear valores de clave en inserciones  Permiten incluso almacenar dicho valor en variable  NEXT VALUE FOR  Función para obtener el siguiente valor de la secuencia  Sp_sequence_get_range  Obtiene un rango de valores de secuencia que mas tarde podremos utilizar Secuencias ¿Para qué sirven?
  9. 9.  Mejora el rendimiento pre-obteniendo valores en memoria  Se evita escritura en disco para gestión del contador  Por defecto existe cacheo  No se conoce a priori el valor  Como buena práctica siempre hay que especificar un valor  Tendremos comportamiento predecible entre dev-pre-pro environments  Microsoft se reserva el derecho de cambiar el valor de cacheo por defecto entre ediciones de SQL Server, parches y service packs  Si no especificamos un tamaño de cacheo nos arriesgamos que un parche modifique rendimiento de nuestro sistema Secuencias Caché
  10. 10.  Si quedan valores libres (por ejemplo, nos toca el 5)  Se calcula el siguiente valor de memoria  Se obtiene el siguiente valor y se actualiza en memoria  Se devuelve dicho valor al que lo solicitó  Si no quedan valores libres (nos toca el valor 16)  Se calcula el siguiente valor de memoria (16)  Se calcula el último valor de la nueva caché (30)  Se bloquea el objeto de secuencia y se guarda el valor (30)  Se devuelve dicho valor y se envía el evento extendido cache_exhausted  Si no hay cache  Parecido al primer caso, pero todo se realiza en el objeto de secuencia (I/O y bloqueos en secuencia) Secuencias Funcionamiento caché (p.ej: cache 15)
  11. 11.  Facilitan escenarios parcialmente conectados con sp_sequence_get_range  Aplicación práctica vista en la sesión de “buenas prácticas de codificación de capas de acceso a datos” Secuencias Rendimiento
  12. 12. DEMODEMO Rendimiento de secuencias
  13. 13.  Se recomienda caché de 40 elementos  En SQL 2012 RTM  Identity utiliza cacheo de 10  Se puede modificar el cacheo e incluso deshabilitar  Cuanto más caching, mas rendimiento  No linear  Posibilidad de huecos ante caídas Secuencias Caché
  14. 14. Mejoras del lenguaje T-SQL 2012 (parte 2) Rendimiento de nuevas funciones escalares Sugerencias para el optimizador de consultas Secuencias Window functions
  15. 15.  SQL Server 2012 está casi cerca de ofrecernos la implementación completa de window funtions  SQL Serve 2012 introduce:  Reimplementación de cláusula OVER  Casi completa  ORDER BY  Windows Frame  8 nuevas window functions  LAG(), LEAD()  FIRST_VALUE(), LAST_VALUE()  CUME_DIST(),PERCENT_RANK()  PERCENTILE_DISC(), PERCENTILE_COUNT() Window functions SQL 2012
  16. 16. Window functions Conceptos clave: Todos juntos Partition UNBOUNDED FOLLOWING UNBOUNDED PRECEDING CURRENT ROW
  17. 17. Window functions Sintaxis Partitioning Ordering Slicing/framing
  18. 18.  Directamente afectado por el Window Spool Operator  Utilizado para almacenar datos del frame  Dos tipos de ejecución  In-memory  disk-based worktable  In-memory worktable  El mas rápido  Prerequisitos: Frame definido usando cláusula ROWS y que dicho frame sea <10k filas  Disk-based worktable  Por defecto  Usado cuando el frame se define con cláusula RANGE  Usado cuando el frame tiene más de 10k filas Window functions Rendimiento
  19. 19.  Crea un índice por la columna de particionado y luego por las columnas de ordenación (en su mismo orden)  Incluye el resto de columnas con la cláusula INCLUDE  Una ejecución a pleno rendimiento consta de:  Scan  Segment  Window spool  Aggregate Window functions Indexing
  20. 20. DEMODEMO Rendimiento de window functions
  21. 21. Mejoras del lenguaje T-SQL 2012 (parte 2) Rendimiento de nuevas funciones escalares Sugerencias para el optimizador de consultas Secuencias Window functions
  22. 22. 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/ Síguenos:

×