Sunteți pe pagina 1din 9

Performance SQL

Optimización

Versión 1.0
Performance SQL

Optimización Versión: 1.0


Sector: Tecnología - Documentación Vigencia: 22/08/2017
Documento: GSA_DOC_GU_TEC_Optimización_Performance.docx Autor: GL

El contenido de este documento ha sido elaborado y se ofrece solamente con carácter informativo y para uso exclusivo de los usuarios de los productos
de Softland Inversiones S.L. (en adelante Softland) en Latinoamérica, España y/u otros países.
El presente documento podrá ser revisado, modificado, editado o incluso remplazado o eliminado por Softland en cualquier momento, a su exclusivo
criterio y sin necesidad de previo aviso. Es responsabilidad del usuario revisar periódicamente si ha habido alguna actualización o modificación.
Softland no asume ninguna responsabilidad por cualquier error o imprecisión que pueden aparecer en dicho documento.
Dado que las condiciones bajo las cuales pueda ser usado el producto al que se refiere este documento están más allá del control de Softland, la
información provista no implica ninguna garantía de performance del producto final, así como Softland tampoco asume ninguna responsabilidad
respecto al uso del producto.
Ninguna información contenida en el documento constituye una oferta, solicitud o recomendación para comprar, o vender, o efectuar transacciones,
o servicios de ningún tipo, y/o a llevar a cabo ningún acto de ninguna índole o naturaleza. El contenido tampoco es parte de un contrato o de una
relación comercial. Los usuarios asumen a su costa y responsabilidad todos los riesgos asociados al uso del producto a que se refiere este documento.
En ningún caso, Softland, sus directores, funcionarios, empleados o agentes serán responsables frente al usuario por pérdidas directas o indirectas,
responsabilidades, reclamaciones, gastos o daños de cualquier tipo, ni contractual ni extracontractualmente, incluidos los casos de negligencia, que
sean consecuencia o deriven de alguna otra manera del uso de todas o de parte de la información contenida en este documento, o en relación con
ellas, aun cuando se no haya advertido de ello.
© Softland Inversiones S.L. Todos los derechos reservados. No se permite la reproducción total o parcial de este documento, ni su traducción, ni su
incorporación a un sistema informático, ni su locación, ni su transmisión, en cualquier forma o por cualquier medio, incluido, pero no limitado a medios
electrónicos, mecánicos, grabaciones y sistemas de recuperación, sin el permiso previo y escrito de Softland.

Template: TP_TEC_[TEMA].dotx Versión: 1.4 Vigencia : 26/08/2016

Fecha Impresión: 22/08/17 Softland Inversiones S.L., 2017 Pág.: 1 / 8


Performance SQL

Optimización Versión: 1.0


Sector: Tecnología - Documentación Vigencia: 22/08/2017
Documento: GSA_DOC_GU_TEC_Optimización_Performance.docx Autor: GL

Historial de Versiones

Aprobación /
Revisión
Vigencia
Fecha Versión Descripción Autor
Fecha Revisó Fecha Aprobó

13/01/2017 1.0 Versión original S/Parte PP 1007 GL 18/08/2017 PE 22/08/2017 EP

Template: TP_TEC_[TEMA].dotx Versión: 1.4 Vigencia : 26/08/2016

Fecha Impresión: 22/08/17 Softland Inversiones S.L., 2017 Pág.: 2 / 8


Performance SQL

Optimización Versión: 1.0


Sector: Tecnología - Documentación Vigencia: 22/08/2017
Documento: GSA_DOC_GU_TEC_Optimización_Performance.docx Autor: GL

Tabla de contenido

1. CONFIGURACIÓN DE WINDOWS ............................................................................................................................. 4


2. CONFIGURACIÓN DE HARDWARE............................................................................................................................ 4
3. SQL SERVER ..................................................................................................................................................... 4
3.1 Configuración de SQL Server....................................................................................................................................... 4
4. CONFIGURACIÓN DE BASE DE DATOS ...................................................................................................................... 5
5. PLANES DE MANTENIMIENTO ................................................................................................................................ 6
6. CAPTURA DE ACTIVIDAD ...................................................................................................................................... 6
7. SOFTLAND LOGIC................................................................................................................................................ 6
8. CONSULTAS ÚTILES ............................................................................................................................................. 7
8.1 Verificar tiempos de respuesta y contención de los Storage de datos. ...................................................................... 7
8.2 Consultar latencias de escritura y lectura en los distintos dispositivos físicos del servidor........................................ 7
8.3 Consultar tamaño y cantidad de registro de Tablas e Índices..................................................................................... 8

Template: TP_TEC_[TEMA].dotx Versión: 1.4 Vigencia : 26/08/2016

Fecha Impresión: 22/08/17 Softland Inversiones S.L., 2017 Pág.: 3 / 8


Performance SQL

Optimización Versión: 1.0


Sector: Tecnología - Documentación Vigencia: 22/08/2017
Documento: GSA_DOC_GU_TEC_Optimización_Performance.docx Autor: GL

Performance SQL

1. CONFIGURACIÓN DE WINDOWS
 Versiones Soportadas: Windows Server 2008 a Windows Server 2016―siempre con la última versión
del Service Pack correspondiente―.
 Plataformas x64 o x86.
 Ediciones Standard, Enterprise, Datacenter.
 En las opciones de Sistema se debe seleccionar «Optimizar para aplicaciones en segundo plano»
(Sistema->Avanzado->Performance->Avanzado).
 En memoria virtual asignar espacio al menos la misma cantidad de memoria física que la asignada al
servidor.

2. CONFIGURACIÓN DE HARDWARE
 Al menos procesadores de cuatro núcleos
 Al menos 8 GB de RAM
 Al menos discos rígidos separados para base de datos, log y boot de Windows.
 Al menos placa de red Ethernet de Gigabit

3. SQL SERVER
 Versiones Soportadas: SQL Server 2008 a SQL Server 2016―siempre con la última versión de Service
Pack instalado―.
o Para verificar la versión: SELECT @@VERSION
 Idiomas: inglés y español
 Servidores CLUSTER requieren configuraciones especiales. Consultar.

3.1 Configuración de SQL Server


 Memoria: asignar el 85% de la memoria física (configuración de SQL Server).
 Procesadores: seleccionar todos los procesadores o automático. Es necesario seleccionar la opción
de «incrementar prioridad de SQL Server»
 Collation Default : SQL_LATIN1_GENERAL_CP1_CI_AS
 Modo de autenticación: «SQL Server and Windows Authentication Mode»
 Auditoria de seguridad: colocar en «Ninguno» o en «Failed Logins Only»
 No habilitar el C2 audit tracing
 No habilitar el Cross database ownership chaining.
 Habilitar el «Permitir conexiones remotas»

Template: TP_TEC_[TEMA].dotx Versión: 1.4 Vigencia : 26/08/2016

Fecha Impresión: 22/08/17 Softland Inversiones S.L., 2017 Pág.: 4 / 8


Performance SQL

Optimización Versión: 1.0


Sector: Tecnología - Documentación Vigencia: 22/08/2017
Documento: GSA_DOC_GU_TEC_Optimización_Performance.docx Autor: GL

 Verificar la existencia de excepciones en el Firewall de Windows―o en el que corresponda―para los


puertos de TCP/IP correspondientes (1433 por defecto).
 En la configuración de cliente deshabilitar las conexiones por shared memory y named pipes, solo
dejar habilitado TCP/IP.
 Deshabilitar servicios que no se utilicen―SQL Server Reporting Services, SQL Server Analysis Services
y SQL Server Integration Services―.
 Verificar la existencia de instancias innecesarias de SQL Server, las que pueden observarse en la
utilidad de configuración.
 Base de datos Temporal: se recomienda crear tantos archivos como procesadores existan.
o Establecer un tamaño de al menos igual a la memoria asignada a SQL Server (sumando todos
los archivos).
o Establecer criterios de crecimiento de al menos 250 MB para la base y el TransactionLog.
o Es recomendable que la base de datos temporal se encuentre en un dispositivo separado del
directorio de la base de datos.
 Verificar que el login de SQL Server que se utilice para el sistema sea el que se encuentra mapeado a
un usuario de base de datos, que posea la asignación en forma predeterminada al esquema de datos
default y que además, pertenezca al grupo de DB_OWNER de la base de datos.

4. CONFIGURACIÓN DE BASE DE DATOS


 Asignar espacio suficiente en la base de datos. Evitar la dependencia del auto incremento de
tamaño.
o Considerar un mínimo de 2 GB por año de transacciones históricas.
o Considerar casos especiales como maestros de gran tamaño.
o Establecer criterios de crecimiento de al menos 250 MB para la base y el Transaction Log.
 Configurar modo de recuperación Simple.
 No habilitar el AutoClose.
 Habilitar la creación automática de estadísticas.
 Habilitar la actualización automática de estadísticas.
 No habilitar el encogimiento automático.
 Habilitar la actualización de estadísticas asincrónicas
 Verificar que se encuentre el modo de acceso en MULTI_USER.
 Verificar que lo archivos correspondientes a la base de datos y al transaction log se encuentren
ubicados en dispositivos físicos separados.
 Verificar la existencia de índices y estadísticas en las tablas criticas―registraciones―.
 Verificar la existencia de triggers de usuario que estén realizando consulta o ejecuciones de tamaño
excesivo.

Template: TP_TEC_[TEMA].dotx Versión: 1.4 Vigencia : 26/08/2016

Fecha Impresión: 22/08/17 Softland Inversiones S.L., 2017 Pág.: 5 / 8


Performance SQL

Optimización Versión: 1.0


Sector: Tecnología - Documentación Vigencia: 22/08/2017
Documento: GSA_DOC_GU_TEC_Optimización_Performance.docx Autor: GL

5. PLANES DE MANTENIMIENTO
 Verificar la existencia de planes de mantenimiento o en su ausencia, crearlos.
o Realizar diariamente backup y verificación de integridad de la base de datos.
o Realizar diariamente actualización de estadísticas con un muestro del 20%.
o Realizar semanalmente una actualización de los índices de las tablas con reorganización de
los índices cluster con un Fill Factor de 80%.

6. CAPTURA DE ACTIVIDAD
 Utilizar SQL Server Profiler para capturar las consultas de mayor duración.
o Utilizar el template “TSQL_Duration” y establecer el parámetro de duración mínima de las
consultas. Filtrar la actividad de un Host Particular.
o Realizar las operaciones que se desean optimizar.
o Exportar a archivo .trc
 Utilizar la herramienta SQL Server Database Engine Tunning advisor
o Analizar las trazas generadas con la herramienta profiler.
o Analizar las propuestas generadas por la herramienta, las que serán sobre la incorporación
de estadísticas e índices.
o Incorporarlas al sistema con el diccionario de datos o vía Script TransactSQL generado con la
herramienta―preservar los scripts para futura referencia―.

7. SOFTLAND LOGIC
 Identificar los procesos y/o reportes de peor desempeño.
 Verificar en los reportes de usuario lo siguiente:
o Que todos los campos definidos en el reporte se utilizan/muestran o representan valor para
el reporte.
o La existencia de consultas a tablas de usuario utilizando columnas no indexadas.
o La existencia de consultas de modificación de datos en reportes.
o La existencia de vistas complejas―si el reporte es sobre una vista, las complejidades de la
consulta se suman―.

Template: TP_TEC_[TEMA].dotx Versión: 1.4 Vigencia : 26/08/2016

Fecha Impresión: 22/08/17 Softland Inversiones S.L., 2017 Pág.: 6 / 8


Performance SQL

Optimización Versión: 1.0


Sector: Tecnología - Documentación Vigencia: 22/08/2017
Documento: GSA_DOC_GU_TEC_Optimización_Performance.docx Autor: GL

8. CONSULTAS ÚTILES

8.1 Verificar tiempos de respuesta y contención de los Storage de datos.


Efectuar la siguiente consulta:
SELECT DB_NAME(fs.database_id) AS [Database Name], CAST(fs.io_stall_read_ms/(1.0 +
fs.num_of_reads) AS NUMERIC(10,1)) AS [avg_read_stall_ms],
CAST(fs.io_stall_write_ms/(1.0 + fs.num_of_writes) AS NUMERIC(10,1)) AS [avg_write_stall_ms],
CAST((fs.io_stall_read_ms + fs.io_stall_write_ms)/(1.0 + fs.num_of_reads + fs.num_of_writes)
AS NUMERIC(10,1)) AS [avg_io_stall_ms],
CONVERT(DECIMAL(18,2), mf.size/128.0) AS [File Size (MB)], mf.physical_name, mf.type_desc,
fs.io_stall_read_ms, fs.num_of_reads,
fs.io_stall_write_ms, fs.num_of_writes, fs.io_stall_read_ms + fs.io_stall_write_ms AS
[io_stalls], fs.num_of_reads + fs.num_of_writes AS [total_io]
FROM sys.dm_io_virtual_file_stats(null,null) AS fs
INNER JOIN sys.master_files AS mf WITH (NOLOCK)
ON fs.database_id = mf.database_id
AND fs.[file_id] = mf.[file_id]
ORDER BY avg_io_stall_ms DESC OPTION (RECOMPILE);

8.2 Consultar latencias de escritura y lectura en los distintos dispositivos físicos del servidor
Ejecutar la consulta siguiente:

SELECT [Drive],
CASE
WHEN num_of_reads = 0 THEN 0
ELSE (io_stall_read_ms/num_of_reads)
END AS [Read Latency],
CASE
WHEN io_stall_write_ms = 0 THEN 0
ELSE (io_stall_write_ms/num_of_writes)
END AS [Write Latency],
CASE
WHEN (num_of_reads = 0 AND num_of_writes = 0) THEN 0
ELSE (io_stall/(num_of_reads + num_of_writes))
END AS [Overall Latency],
CASE
WHEN num_of_reads = 0 THEN 0
ELSE (num_of_bytes_read/num_of_reads)
END AS [Avg Bytes/Read],
CASE
WHEN io_stall_write_ms = 0 THEN 0
ELSE (num_of_bytes_written/num_of_writes)
END AS [Avg Bytes/Write],
CASE
WHEN (num_of_reads = 0 AND num_of_writes = 0) THEN 0
ELSE ((num_of_bytes_read + num_of_bytes_written)/(num_of_reads + num_of_writes))
Template: TP_TEC_[TEMA].dotx Versión: 1.4 Vigencia : 26/08/2016

Fecha Impresión: 22/08/17 Softland Inversiones S.L., 2017 Pág.: 7 / 8


Performance SQL

Optimización Versión: 1.0


Sector: Tecnología - Documentación Vigencia: 22/08/2017
Documento: GSA_DOC_GU_TEC_Optimización_Performance.docx Autor: GL

END AS [Avg Bytes/Transfer]


FROM (SELECT LEFT(UPPER(mf.physical_name), 2) AS Drive, SUM(num_of_reads) AS num_of_reads,
SUM(io_stall_read_ms) AS io_stall_read_ms, SUM(num_of_writes) AS num_of_writes,
SUM(io_stall_write_ms) AS io_stall_write_ms, SUM(num_of_bytes_read) AS
num_of_bytes_read,
SUM(num_of_bytes_written) AS num_of_bytes_written, SUM(io_stall) AS io_stall
FROM sys.dm_io_virtual_file_stats(NULL, NULL) AS vfs
INNER JOIN sys.master_files AS mf WITH (NOLOCK)
ON vfs.database_id = mf.database_id AND vfs.file_id = mf.file_id
GROUP BY LEFT(UPPER(mf.physical_name), 2)) AS tab
ORDER BY [Overall Latency] OPTION (RECOMPILE);

8.3 Consultar tamaño y cantidad de registro de Tablas e Índices

SELECT
t.NAME AS TableName,
s.Name AS SchemaName,
p.rows AS RowCounts,
SUM(a.total_pages) * 8 AS TotalSpaceKB,
CAST(ROUND(((SUM(a.total_pages) * 8) / 1024.00), 2) AS NUMERIC(36, 2)) AS TotalSpaceMB,
SUM(a.used_pages) * 8 AS UsedSpaceKB,
CAST(ROUND(((SUM(a.used_pages) * 8) / 1024.00), 2) AS NUMERIC(36, 2)) AS UsedSpaceMB,
(SUM(a.total_pages) - SUM(a.used_pages)) * 8 AS UnusedSpaceKB,
CAST(ROUND(((SUM(a.total_pages) - SUM(a.used_pages)) * 8) / 1024.00, 2) AS NUMERIC(36, 2))
AS UnusedSpaceMB
FROM
sys.tables t
INNER JOIN
sys.indexes i ON t.OBJECT_ID = i.object_id
INNER JOIN
sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
INNER JOIN
sys.allocation_units a ON p.partition_id = a.container_id
LEFT OUTER JOIN
sys.schemas s ON t.schema_id = s.schema_id
WHERE
t.NAME NOT LIKE 'dt%'
AND t.is_ms_shipped = 0
AND i.OBJECT_ID > 255
GROUP BY
t.Name, s.Name, p.Rows
ORDER BY
4 DESC

Template: TP_TEC_[TEMA].dotx Versión: 1.4 Vigencia : 26/08/2016

Fecha Impresión: 22/08/17 Softland Inversiones S.L., 2017 Pág.: 8 / 8

S-ar putea să vă placă și