Você está na página 1de 42

Las controversias alrededor de las

mejores practicas - "Best Practices" - de


SQL Server en Windows
Michelle Gutzait

gutzait@pythian.com
mgutzait@gmail.com

www.pythian.com
Organiza

http://tinyurl.com/ComunidadWindows
Patrocinadores del SQL Saturday
Platinum Sponsor

Gold Sponsor

Bronze Sponsor
El perfecto SQL Server…
Niveles de las Mejores Practicas

Hardware & Network

Virtual Machine (VM)

Operating System

Instance

Database
DB code
Application
Versiones y patches - general
 Ultima version
 Ultimo patch
 Ultimo firmware
 Ultima version de drivers
Seguridad - general
 No incluido…
Alta Disponibilidad y Disaster Recovery

 No incluido…
Diseño de base de datos y código
 No incluido…
Hardware, Red y OS
 Servidor dedicado a SQL
 Almacenamiento (Storage)
 Red (Network)
 Memoria
 CPU
 Antivirus!
 Otros programas y aplicaciones
Almacenamiento
https://technet.microsoft.com/en-
us/library/dd758814(v=sql.100).aspx
 Niveles de Raid
 Raid 1+0 / Raid 5 / Raid 1
 Alienación del disco y “block size”
 64k NTFS block size
 SSD, iSCSI, etc.
Pero….
Recomendaciones:
 Diferentes vendedores y diferentes
practicas
 Chequee el rendimiento:
 <20ms /read  0.02 sec/read
 <20ms /write  0.02 sec/write
 Use DiskSpd (supersedente de
SQLIO) para chequear diferentes
cargas de trabajo (workloads)
Red (Network)
 https://www.visualstudio.com/en-us/docs/work/reference/configure-
network-adapter-automatically-adjust-speed
 Adaptadores de red (Network adapters) y “switch
ports” configurado a modo ”Full-duplex”
 https://support.microsoft.com/en-us/help/2032911/you-may-encounter-
problems-when-installing-sql-server-on-a-domain-controller
 “Domain Controller” separado
 https://technet.microsoft.com/en-us/library/gg162709(v=WS.10).aspx
 “TCP Chimney Offload” desactivada
 Pasa el procesimiento del TCP trafico desde el CPU del
servidor al adaptador de la red
Pero…
TCP Chimney Offloading
 This feature is not suitable for all applications.
Microsoft says (at http://technet.microsoft.com/en-
us/library/gg162709%28v=WS.10%29.aspx):
 “Because of the overhead associated with moving TCP/IP
processing to the network adapter, TCP Chimney Offload
offers the most benefit to applications that have long-
lived connections and transfer large amounts of data.
Servers that perform database replication, function as file
servers, or perform backup functions are examples of
computers that may benefit when you enable TCP Chimney
Offload.”
Memoria
 Lo mas – lo mejor para SQL Server
 Dejar >2GB por OS y otros procesos
 Asegurar que el paging file no esta utilizado
 “Lock pages in memory” activado
 System properties > Advanced setting
 Memory usage: Seleccionar "Programs“
 https://docs.microsoft.com/en-us/sql/relational-
databases/databases/database-instant-file-initialization
 “Instant File Initialization” activado
Pero…
“Lock Pages in Memory”:
 https://www.simple-talk.com/sql/database-
administration/great-sql-server-debates-
lock-pages-in-memory/
 SQL Server 2005 sobre Windows Server 2003– YES
 Nuevas versiones – NO
 Especialmente NO con Machinas virtuales

 Use con caución


CPU & scheduling
 Use NUMA nodes por escabilidad
 Varios buses de systema, cada uno sirviendo un
pequeno grupo de procesores, con deidcada
memoria y a veces dedicado canal de IO
 Hyperthreading por proceso paralelo
 System properties > Advanced setting
 Processor scheduling: "Background services“
 Opcion “Power Saving” necesita ser “High
Performance” (y no “Balanced”)
Antivirus
 Recomendado: NO ANTIVIRUS
 OR:
 Exclusiones de archivos– data, T-logs, backups
 Carpetas de SQL
 SQL Server binarios
 Sqlsrvr.exe
 https://support.microsoft.com/en-us/help/309422/how-
to-choose-antivirus-software-to-run-on-computers-that-
are-running-sql-server
Pero…
 “Nueva Generación” de Antiviruses
Otros programas
 Le quitan recursos importantes a SQL Server!
Macinas Virtuales (Virtual Machine)
http://www.vmware.com/content/dam/digitalmarketing/vmwa
re/en/pdf/solutions/sql-server-on-vmware-best-practices-
guide.pdf
 BIOS and Firmware
 Physical, Virtual, and Logical CPUs and Cores
 Hyperthreading
 NUMA configuration
 CPU Hot Plug
 CPU affinity
 Memory sizing, reservation and provisioning
 Ballooning
 Storage configuration and Virtual Storage
 Network configuration
Instancias de SQL Server
 Diseño de los discos
 Tempdb
 Red (Network)
 Configuración de Memoria
 Afinidad de CPU
 Backup compression
 “Degree of parallelism”
 Planes de mantenimiento
 Trace Flags
 SQL Server Agent jobs
Diseño del disco
 Separando archivos de Data y T-Logs
 Separando archivos de tempdb
 Files y filegroups
Pero…
 Archivos de Data y Log en el mismo drive:
 https://www.brentozar.com/archive/2009/02/when-
should-you-put-data-and-logs-on-the-same-drive/
 Ejemplos de cuando se puede dejarlos en el
mismo lugar?
 Cuando no se escibe mucho en la base de datos
 Cuando el disco es dramaticamente mas rapido que los otros
 Cuando la aplicacion usa a tempdb mas que los otros bases de
datos.
 Cuando otra aplicacion usa el disco mas intensamente que la
instancia
Tempdb
 1 a 2 archivos por processor, no mas que 8
 Todos los archivos del mismo tamano
 El mismo crecimiento (autogrowth)
 Activados Trace Flags
 T1117 (Todos los archivos en un FileGroup
crecen de igual manera)
 T1118 (Extentos Completos para aliviar
contención en el tempdb bitmap)
 https://www.sqlskills.com/blogs/paul/misconceptions-
around-tf-1118/
Pero…
 Numero de archivos de data de tempdb?
 1 por processor lógico?
 1 por processor físico?
 0.5 por processor?
 8 archivos siempre?

 Yo sigo esto:
 0.5 por processor lógico y no mas de 8 archivos
 Monitorizar contención de asignación en tempdb
 https://blogs.msdn.microsoft.com/sqlserverstorageen
gine/2009/01/11/tempdb-monitoring-and-
troubleshooting-allocation-bottleneck/
Configuración de protocolos de red

 Protocolos
Configuración de memoria
 Min memory
 Max memory
 Efectos de Min y Max Server Memory -
https://technet.microsoft.com/en-
us/library/ms180797(v=sql.105).aspx
 El buffer pool no suelta la asignación de memoria una vez
adquiriendo min server memory
Pero…
Min server memory
 Casos donde se necesita elevar?
CPU & scheduling
 Afinidad de CPU  BOL:
"Most systems
obtain optimal
performance by
letting the
operating system
schedule the
threads among
the available
CPUs. “
Degree of parallelism
 MAXDOP
 Cost threshold for parallelism
Planes de mantenimiento
(Maintenance tasks)
 Index defragmentation
 Update statistics with FULLSCAN
 Integrity Checks
 Delete history from msdb
 Recycle Errorlog
Trace Flags
http://sqlturbo.com/the-most-important-trace-
flags-for-sql-server/
 1117
 1118
 834 – On computer systems with 64 or more CPU cores, causes SQL Server to use
Microsoft Windows large-page allocations for the memory that is allocated for the
buffer pool (https://blogs.technet.microsoft.com/sql_server_isv/2010/11/30/temenos-
t24-trace-flag-834-and-when-to-use-it/)

 2371 - Changes the auto update stats threshold from 500+(20%*SizeOfTable) to a


dynamic range where the % needed to trigger auto update stats gets smaller as the
table gets larger
SQL Server Agent jobs
 Frecuencia de Ejecución
 Desactivando jobs importantes
 Activando jobs que no son importantes
 Convención de nombres
Base de datos
 Opciones del Database
 Archivos del Database
 Numero de VLF
Database options
 Recovery model
 Auto Close - NO
 Auto Shrink - NO
 Auto Update Statistics - YES
 Compatibility levels- highest
 Updatability
 Parameterization
 Page recoverability (CHECKSUM / TORN_PAGE_DETECTION) -
CHECKSUM
 Owner - sa or not a named login
Archivos de las base de datos
 Autogrowth – Por MBs
 Max Size – usualmente ilimitado
 “Instant File Initialization”
Numero VLF
http://sqlblog.com/blogs/linchi_shea/archive/2009/02/09/p
erformance-impact-a-large-number-of-virtual-log-files-
part-i.aspx
 Critico – cuando > 1000
 Muy importante- cuando > 500
 Importante - cuando 201 to 500
 Menos importante - cuando 50 to 200
 OK – cuando < 50
Las controversias - conclusion
 Seguir las mejores practicas
 Cuestionar cada una basado en el ambiente
especifico y el workload
 Probar !
 Asegurar periódicamente
PREGUNTAS Y RESPUESTAS

gutzait@pythian.com www.pythian.com

Michelle
Gutzait
https://twitter.com/
mgutzait

Você também pode gostar