Your SlideShare is downloading. ×
0
Carbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshare
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Carbura tusql sesion1_slideshare

110

Published on

Presentación de ciclo de conferencia de buenas prácticas para rendimiento en SQL Server. Para la comunidad ITPros-DC

Presentación de ciclo de conferencia de buenas prácticas para rendimiento en SQL Server. Para la comunidad ITPros-DC

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

No Downloads
Views
Total Views
110
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
1
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. • Ingeniero de Diseño & Automatización Electrónica • Especialista en Gerencia y Tecnologías de Información • MCT-MCSA-MCITP-MCTS en SQL SERVER • Synergy TPC SAS como consultor especializado en bases de datos SQL Server Julián Castiblanco Andrés Useche • Ingeniero de Sistemas • Especialista en Teleinformática • MCP SQL SERVER 2012 • Terpel como ingeniero de infraestructura IT - DBA
  • 2. Agenda General Dev Optimización de consultas Admin Optimización de Servidores SSIS Optimización de paquetes ETLs
  • 3. Agenda • Ciclo de vida de una transacción • Manejo de memoria en SQL Server • Cursores: la mejor solución para desgastar tu memoria • Subconsultas dentro de la sentencia SELECT: existe otra forma de hacerlo? • Consultas multitabla: Como puedo optimizarlas??? • Triggers: la solución más antigua para manejar auditoría • Manejo de consultas sobre campos de texto • Como medir el rendimiento de las consultas. • Problemas de contención y tablas en memoria. • Que viene en SQL Server 2014….? • Otros casos de la vida real
  • 4. Ciclo de vida de una transacción SELECT Mdf file Ldf file Motor de almacenamiento Gestorde transacción Métodode acceso Gestordel búfer Motor Relacional (procesador de consultas) optimizador Analizador desintaxis Ejecutorde consultas Capa de Protocolo SIN – SQL Server Network Interfaz Buffer Pool • Plan Caché • Caché de datos TCP/IP Shared memory Name pipes VIA TDS SQLcommand Consulta de árbol * Plan de ejecución Profesional SQL Server 2012 Internals & Troubleshooting. Wrox
  • 5. Ciclo de vida de una transacción SELECT Mdf file Ldf file Motor de almacenamiento Gestorde transacción Métodode acceso Gestordel búfer Motor Relacional (procesador de consultas) optimizador Analizador desintaxis Ejecutorde consultas Capa de Protocolo SIN – SQL Server Network Interfaz Buffer Pool • Plan Caché • Caché de datos TCP/IP Shared memory Name pipes VIA TDS Profesional SQL Server 2012 Internals & Troubleshooting. Wrox
  • 6. Ciclo de vida de una transacción UPDATE Mdf file Ldf file Motor de almacenamiento Gestorde transacción Métodode acceso Gestordel búfer Motor Relacional (procesador de consultas) optimizador Analizador de sintaxis Ejecutor de consultas Capa de Protocolo SIN – SQL Server Network Interfaz Buffer Pool • Plan Caché • Caché de datos TDS Lang. EventQTree QP Dirty Page
  • 7. Memoria del Sistema Es la memoria RAM Memoria Física • Actualmente WS2012 4TB VAS: Virtual Address Space Memoria Virtual • El SO se encarga de asignar espacios de memoria en disco que direccionan a un espacio en la RAM. Varios procesos pueden tener la misma Dirección en RAM VIRTUAL MEMORY MANAGER ARCHIVOS DE PAGINACIÓN DE WINDOWS
  • 8. Cursores: la mejor solución para desgastar tu memoria http://msdn.microsoft.com/es-es/library/ms180169.aspx Se Alojan en memoria, por lo cual pueden degradar el servicio no solo de SQL Server sino de otros procesos en el servidor. Problemas de Rendimiento. Procesar registros fila a fila es más costoso que procesar en conjunto El cursor bloquea los objetos al abrir el cursor. Lo cual puede generar WAITS y LOCKS excesivos en los objetos DECLARE vend_cursor CURSOR FOR SELECT * FROM Purchasing.Vendor OPEN vend_cursor FETCH NEXT FROM vend_cursor;
  • 9. Subconsultas dentro de la sentencia SELECT: existe otra forma de hacerlo? Es una forma rápida de mezclar agrupaciones contra valores propios de una columna Permiten traer datos como el último registro, o el más reciente de tablas históricas Genera una alta carga en el motor, porque se disparan consultas adicionales por cada fila devuelta.
  • 10. Caso de la vida real…. • Tengo que sacar en una consulta la información de todos mis clientes, con información agrupada de sus compras mensuales y adicionalmente información detallada del valor de su última compra…..
  • 11. Row_number() Puedes hacer join con una subconsulta que particiona la información de la tabla histórica
  • 12. Consultas multitabla: Como puedo optimizarlas??? hola DESPUÉSANTES
  • 13. Caso de la vida real…. • Este procedimiento se demora tanto porque debe tomar la información de los clientes, mezclando la información contra cada una del tablas sucursales. Y entregar todo esto en una misma consulta.
  • 14. Consultas multitabla: Como puedo optimizarlas??? Union All Union Cuando se está seguro que los subconjuntos de datos no están repetidos Cuando se está seguro que los subconjuntos de datos no están repetidos
  • 15. Triggers: la solución más antigua para manejar auditoría Permite insertar operaciones antes, después o al momento de ingresar información en una tabla específica Se vuelve código poco administrable y mantenible Aunque SQL Server soporta un grado de anidamiento de 32 disparadores. -- ============================================= -- Author:triggerdeprueba -- Create date: jcastiblanco -- Description:este trigger permite insertar la auditoria -- ============================================= CREATE TRIGGER dbo.tgr_pacientes2 ON dbo.pacientes2 AFTER INSERT,DELETE,UPDATE AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; INSERT INTO tablaauditoria (descripcion),('alguna cosa') -- Insert statements for trigger here END GO
  • 16. Caso de la vida real…. • Por circular 052 de la superfinanciera de Colombia necesitamos guardar los valores previos que se tenían del cliente, antes de realizar cualquier modificación sobre la información del cliente. • Necesitamos guardar en la auditoría la información de hora, usuario y terminal desde el cual se realizaron cambios.
  • 17. Triggers: la solución más antigua para manejar auditoría La modificación de la auditoría es totalmente personalizable Solo se cargan los datos en memoria una vez Es más fácil de administrar y mantener el código. INSERT INTO Sales.MyOrders(custid, empid, orderdate) OUTPUT newid(),'Sales.MyOrders',('orderid:'+cast(inser ted.orderid as varchar(50))+' custid: '+cast(inserted.custid as varchar(50))) ,SUSER_SNAME() ,APP_NAME() AS ApplicationName INTO sales.auditTable (id, tabla,cambios,usuario,aplicacion) SELECT custid, empid, orderdate FROM Sales.Orders WHERE shipcountry = N'Norway';
  • 18. Manejo de consultas sobre campos de texto Las consultas con comodines al iniciar la cadena genera un uso in adquado de los índices Son bastantes pesadas a nivel de procesador y memoria ram Es un código fácil de utilizar SELECT * FROM dbo.pacientes2 WHERE nombre LIKE '%Felipe%M%'
  • 19. Caso de la vida real…. • Mi sistema el cual es altamente transaccional hace consultas por nombre del cliente. El usuario algunas veces consulta el nombre completo, otras solo el apellidos, o nombre y apellido. Es imposible manejar la consulta sin comodines.
  • 20. Manejo de consultas sobre campos de texto Es un servicio especializado para resolver las consultas Sobrepasa la funcionlidad del like, permitiendo hacer búsquedas de texto conjugado Esta acoplado totalmente al motor por lo cual minimiza el impacto de administración. SELECT * FROM dbo.pacientes2 WHERE CONTAINS((documento,nombre),N'"Felipe*" AND "M*" ')
  • 21. Caso de la vida real…. Esta base de datos es una locura en vez de mejorar al haber incrementado el número de procesadores, ahora tenemos mayores problemas de bloqueos.
  • 22. Que viene en SQL Server 2014 Cambia el paradigma de Páginas de 8K No es lo mismo que el antiguo DBCC PINTABLE El motor de tablas en memoria está totalmente integrada al motor relacional Introducing Microsoft SQL Server 2014. Microsoft Press*
  • 23. Bibliografía y Sitios de interés • Professional SQL Server 2012 Internals and Troubleshooting • Professional SQL Server 2008 Internals and Troubleshooting • Microsoft SQL Server 2012 Internals • Diagnosing and Resolving Latch Contention on SQL Server • Pro Full-Text Search in SQL Server 2008 • Introducing Microsoft SQL Server 2014. Microsoft Press • Training Kit (Exam 70-461): Querying Microsoft SQL Server 2012
  • 24. • Correo: Juliancastiblancop@Gmail.com • Skype: Julian.castiblancop • Correo corporativo: jcastiblanco@synergytpc.com Julián Castiblanco Gracias !!!

×