SlideShare uma empresa Scribd logo
1 de 44
Baixar para ler offline
Build a SQL Server machine
The right way
Danilo Dominici
SolidQ
Sponsors
Organizers
Chi sono
• Consulente, Trainer, Speaker, Autore
• Uso SQL Server dalla versione 6.5
• Microsoft MVP, MCT
• Mentor @ SolidQ
• DBA SQL Server e VMWare admin @
Regione Marche
• Co-leader del PASS Global Italian
Virtual Chapter
http://globalitalian.sqlpass.org
CONSIDERAZIONI GENERALI
RAID
§  Almeno RAID 1 per tutti i dischi
§  Anche il sistema operativo
§  RAID 10 per massimizzare le performance
§  Test prima di andare in produzione
§  SQLIO
§  CrystalDiskMark
Separare i dischi
§  Utilizzare dischi separati per:
§  File dati di SQL Server (mdf, ndf)
§  Transaction logs
§  Incluso il tempdb
§  Tempdb
§  Backups
Formattazione dischi
§  Il disco C: dove risiede il sistema operativo
può usare il default (4K)
§  I dischi di SQL Server (dati, log, tempdb)
dovrebbero essere formattati con cluster size
di 64K
§  Verificare che lo storage sia allineato
§  Da Windows 2008 è automatico
§  Stesse regole se stiamo preparando una VM
Risparmio energetico
§  Il server fisico su cui gira SQL Server o la VM
che ospita SQL Server deve avere le
impostazioni per usare la massima potenza
del processore
§  Verificare che anche il Power plan di
Windows sia impostato su High Performance
§  Tool: CPU-Z
Antivirus
§  Impostare le esclusioni per
§  Directory di SQL Server
§  Estensioni dei files di SQL Server
§  Mdf, ndf, ldf, bak
§  Cataloghi full-text
§  Trace files
§  SQL Audit files
§  Extended events files
SQL Server service accounts
§  Utilizzare un account di dominio senza
privilegi elevati
§  L’account non dovrebbe essere
amministratore del server su cui è installato
SQL Server
§  Utilizzare un account di dominio separato per
SQL Server Agent
§  Più in generale un account per ogni servizio
(SSRS, SSIS, etc)
PARAMETRI DI DEFAULT
Server Max Memory
§  Che cos’è:
§  Indica a SQL Server il limite di memoria da
utilizzare
§  Default:
§  2147483647 MB
Server Max Memory (continua)
§  Perché modificarlo:
§  SQL Server tende ad occupare tutta la RAM
§  può diventare un problema se la memoria disponibile
diventa insufficiente per il S.O. o se ci sono altre
applicazioni in uso sul server (es. SSRS, SSIS)
§  Regola:
§  Se il server usa solo SQL Server, si può iniziare
con il 10% (o 2GB, dipende dal valore più grande)
§  Va ottimizzato in funzione dei programmi che
girano sul server (anche SSMS in RDP J)
Server Max Memory (continua)
§  Approfondimenti:
§  How much memory does my SQL Server actually
need?
https://goo.gl/6csFqd
§  Memory Manager Configuration changes in SQL
Server 2012
http://goo.gl/2dLJTx
Cost Threshold for Parallelism
§  Che cos’è
§  Indica il limite stimato, in secondi, oltre il quale il
Query Optimizer considera l’esecuzione di una
query in parallelo
§  Default: 5 secondi
§  E’ rimasto invariato da SQL Server 2005. Con
l’hardware attuale non ha più senso.
Cost Threshold for Parallelism (continua)
§  Perché modificarlo:
§  Per ridurre le attese (CXPACKET) dovute
all’esecuzione in parallelo
§  Alcuni dei thread eseguiti in parallelo possono
impiegare più tempo per terminare l’esecuzione e
rallentano l’intera query
§  Regola:
§  Non c’è un numero “magico”
§  Iniziare da 30 o 40 secondi ed eventualmente
tararlo misurandone l’impatto sul sistema
MAXDOP
§  Che cos’è
§  Indica il numero di processori utilizzati
nell’esecuzione delle query in parallelo
§  Default: 0
§  Vengono utilizzati TUTTI i processori (se SQL
Server decide di eseguire la query in parallelo)
MAXDOP (continua)
§  Perché modificarlo:
§  In combinazione con il parametro cost threshold
for parallelism per ridurre il valore di CXPACKET
§  Perché ce lo chiede l’applicazione (Es.
Sharepoint vuole MAXDOP=1)
§  Regola:
§  Solitamente si imposta pari al numero di core
fisici
MAXDOP (continua)
§  Casi particolari
§  Licensing errato
§  licenza SQL Server 200x Ent.Edition Server + CAL à
licenza SQL Server 2012 Ent. con 20 logical CPU
MAXDOP (continua)
§  Casi particolari
§  NUMA (Non-Uniform Memory Access)
DEMO
§  MAXDOP=0
SELECT I.CustomerID, C.FirstName , ad.City
FROM Person.Contact c
JOIN Sales.Individual i ON C.ContactID = I.ContactID
JOIN Sales.CustomerAddress ca ON CA.CustomerID = I.CustomerID
JOIN Person.Address ad ON ad.AddressID = CA.AddressID
ORDER BY i.CustomerID
DEMO
§  MAXDOP=2
SELECT I.CustomerID, C.FirstName , ad.City
FROM Person.Contact c
JOIN Sales.Individual i ON C.ContactID = I.ContactID
JOIN Sales.CustomerAddress ca ON CA.CustomerID = I.CustomerID
JOIN Person.Address ad ON ad.AddressID = CA.AddressID
ORDER BY i.CustomerID OPTION (MAXDOP 2)
Backup compression
§  Che cos’è
§  Consente (SQL 2008+) di comprimere i backup
nativamente
§  Default: non compresso
§  Perché modificarlo
§  Minor tempo e spazio necessari per il backup
§  Ha un costo in termini di maggiore utilizzo di CPU
Instant File Initialization
§  Che cos’è
§  Inizializzazione istantanea dei files dati (mdf/ndf)
§  NON funziona per il transaction log
§  Tecnicamente è un permesso di Windows
§  Default:
§  Dipende dall’account usato per l’account di
servizio di SQL Server
§  Per default solo i membri del gruppo locale
Administrators
Instant File Initialization
§  Perché modificarlo:
§  Rende praticamente istantanee le operazioni di:
§  Creazione di un nuovo database o file di database
§  Autogrowth
§  Restore di un database
§  Come si modifica
§  Assegnando all’utente di servizio di SQL Server il
permesso “Perform Volume Maintenance Tasks”
nelle Local Security Policy del server
INSTANT FILE INITIALIZATION
DEMO
Configurazione del TEMPDB
§  Default: un singolo file
§  Perché non va bene:
§  Si crea contesa di accesso sulle pagine PFS e
SGAM
§  Regola:
§  Se il numero di processori logici è <= 8 à
numero di files = numero di processori logici
§  Altrimenti iniziare con 8 files e aggiungere in
multipli di 4 se c’è ancora contesa
Configurazione del TEMPDB (continua)
§  Regola:
§  Utilizzare la stessa dimensione per tutti i data file
§  Preallocare lo spazio
Configurazione del TEMPDB (continua)
§  Approfondimenti
§  Inside The Storage Engine: GAM, SGAM, PFS
and other allocation maps
http://goo.gl/2GSohV
§  Analyzing Tempdb Contention
http://goo.gl/v5n5p1
TEMPDB CONTENTION
DEMO
Trace flags
§  1118
§  Allocazione di extent uniformi per il tempdb
§  2371
§  Modifica la soglia usata da SQL Server (2012+)
per il ricalcolo automatico delle statistiche
Configurare operatori ed avvisi
§  Per tutti i messaggi di errore con severity da
17 a 25
§  Fa eccezione l’errore 825 che rientra tra gli errori
gravi, ma ha severity 16
§  Per tutti i job
Database maintenance
§  I piani di manutenzione sono competi, ma...
§  Non consentono un controllo “fine” delle attività
§  Esistono soluzioni (free) fatte da SQL MVPs
§  Maintenance Solution di Ola Hallengren
§  http://ola.hallengren.com
§  Minion Reindex di Jen McCown
§  http://www.midnightsql.com/Minion/
Management Data Warehouse
§  Consente di monitorare una o più istanze di
SQL Server
§  E’ un insieme di jobs e package SSIS
§  Può essere customizzato aggiungendo dei
data collector custom
§  Molto più complesso, ma si può aggiungere
anche un custom collector type
§  Es. http://extendedtsqlcollector.codeplex.com/ di
Gianluca Sartori b | t
Management Data Warehouse
Enable DAC
§  Default: disabilitata
§  Perché non va bene:
§  E’ l’ultima spiaggia per connettersi ad un SQL
Server che non risponde ai comandi…
Enable DAC (continua)
§  Come si abilita:
§  Da T-SQL
sp_configure 'remote admin connections', 1
GO
RECONFIGURE WITH OVERRIDE
GO
Enable DAC (continua)
§  Da GUI
Proprietà del database MODEL
§  Essendo il “modello”, i parametri impostati ed
il suo contenuto verranno utilizzati per i nuovi
database
§  Parametri da verificare ed ottimizzare:
§  Autogrowth; impostare in MB, non in %, con
dimensione adeguata
§  Auto close e auto shrink: OFF
§  Auto create e auto update statistics: ON
§  Recovery model: dipende J
Q & A
SPEAKERSCORE
http://speakerscore.com/MK1T
#sqlsatTorino
#sqlsat400
Valutazione evento: http://goo.gl/gwhs8O
Valutazione speaker: http://goo.gl/oju41k
#sqlsatTorino
#sqlsat400
Build a SQL Server machine - the right way (Italian)

Mais conteúdo relacionado

Mais procurados

SQL Server Failover Cluster Instances con Azure Managed Disks
SQL Server Failover Cluster Instances con Azure Managed DisksSQL Server Failover Cluster Instances con Azure Managed Disks
SQL Server Failover Cluster Instances con Azure Managed DisksGianluca Hotz
 
Laboratorio Di Basi Di Dati 08 Il Web Server Apache
Laboratorio Di  Basi Di  Dati 08  Il  Web Server  ApacheLaboratorio Di  Basi Di  Dati 08  Il  Web Server  Apache
Laboratorio Di Basi Di Dati 08 Il Web Server Apacheguestbe916c
 
Hosting: cache Joomla, tutte le opzioni spiegate passo dopo passo - parte 2 ...
Hosting: cache Joomla, tutte le opzioni spiegate passo dopo passo - parte 2  ...Hosting: cache Joomla, tutte le opzioni spiegate passo dopo passo - parte 2  ...
Hosting: cache Joomla, tutte le opzioni spiegate passo dopo passo - parte 2 ...Aruba S.p.A.
 
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDBPolyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDBSteve Maraspin
 
Laboratorio Di Basi Di Dati 03 Il D B M S Postgre S Q L
Laboratorio Di  Basi Di  Dati 03  Il  D B M S  Postgre S Q LLaboratorio Di  Basi Di  Dati 03  Il  D B M S  Postgre S Q L
Laboratorio Di Basi Di Dati 03 Il D B M S Postgre S Q Lguestbe916c
 
Laboratorio Di Basi Di Dati 11 P H P Interazione Con I D B M S
Laboratorio Di  Basi Di  Dati 11  P H P   Interazione Con I  D B M SLaboratorio Di  Basi Di  Dati 11  P H P   Interazione Con I  D B M S
Laboratorio Di Basi Di Dati 11 P H P Interazione Con I D B M Sguestbe916c
 
2014.11.14 Implementare e mantenere un progetto Azure SQL Database
2014.11.14 Implementare e mantenere un progetto Azure SQL Database2014.11.14 Implementare e mantenere un progetto Azure SQL Database
2014.11.14 Implementare e mantenere un progetto Azure SQL DatabaseEmanuele Zanchettin
 
SQL Server Workload Profiling
SQL Server Workload ProfilingSQL Server Workload Profiling
SQL Server Workload ProfilingGianluca Hotz
 

Mais procurados (8)

SQL Server Failover Cluster Instances con Azure Managed Disks
SQL Server Failover Cluster Instances con Azure Managed DisksSQL Server Failover Cluster Instances con Azure Managed Disks
SQL Server Failover Cluster Instances con Azure Managed Disks
 
Laboratorio Di Basi Di Dati 08 Il Web Server Apache
Laboratorio Di  Basi Di  Dati 08  Il  Web Server  ApacheLaboratorio Di  Basi Di  Dati 08  Il  Web Server  Apache
Laboratorio Di Basi Di Dati 08 Il Web Server Apache
 
Hosting: cache Joomla, tutte le opzioni spiegate passo dopo passo - parte 2 ...
Hosting: cache Joomla, tutte le opzioni spiegate passo dopo passo - parte 2  ...Hosting: cache Joomla, tutte le opzioni spiegate passo dopo passo - parte 2  ...
Hosting: cache Joomla, tutte le opzioni spiegate passo dopo passo - parte 2 ...
 
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDBPolyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
 
Laboratorio Di Basi Di Dati 03 Il D B M S Postgre S Q L
Laboratorio Di  Basi Di  Dati 03  Il  D B M S  Postgre S Q LLaboratorio Di  Basi Di  Dati 03  Il  D B M S  Postgre S Q L
Laboratorio Di Basi Di Dati 03 Il D B M S Postgre S Q L
 
Laboratorio Di Basi Di Dati 11 P H P Interazione Con I D B M S
Laboratorio Di  Basi Di  Dati 11  P H P   Interazione Con I  D B M SLaboratorio Di  Basi Di  Dati 11  P H P   Interazione Con I  D B M S
Laboratorio Di Basi Di Dati 11 P H P Interazione Con I D B M S
 
2014.11.14 Implementare e mantenere un progetto Azure SQL Database
2014.11.14 Implementare e mantenere un progetto Azure SQL Database2014.11.14 Implementare e mantenere un progetto Azure SQL Database
2014.11.14 Implementare e mantenere un progetto Azure SQL Database
 
SQL Server Workload Profiling
SQL Server Workload ProfilingSQL Server Workload Profiling
SQL Server Workload Profiling
 

Semelhante a Build a SQL Server machine - the right way (Italian)

Partner Day Milano - dicembre 2015 - Software Difined Storage. Disaster recov...
Partner Day Milano - dicembre 2015 - Software Difined Storage. Disaster recov...Partner Day Milano - dicembre 2015 - Software Difined Storage. Disaster recov...
Partner Day Milano - dicembre 2015 - Software Difined Storage. Disaster recov...Clouditalia Telecomunicazioni
 
2014.11.14 Implementare e mantenere un progetto Azure SQL Database
2014.11.14 Implementare e mantenere un progetto Azure SQL Database2014.11.14 Implementare e mantenere un progetto Azure SQL Database
2014.11.14 Implementare e mantenere un progetto Azure SQL DatabaseEmanuele Zanchettin
 
CCI 2019 - Exchange 2019 da 0 ad HA in 1 ora
CCI 2019 - Exchange 2019 da 0 ad HA in 1 oraCCI 2019 - Exchange 2019 da 0 ad HA in 1 ora
CCI 2019 - Exchange 2019 da 0 ad HA in 1 orawalk2talk srl
 
MongoDB Atlas: il modo migliore per eseguire MongoDB in ambiente cloud 2
MongoDB Atlas: il modo migliore per eseguire MongoDB in ambiente cloud 2MongoDB Atlas: il modo migliore per eseguire MongoDB in ambiente cloud 2
MongoDB Atlas: il modo migliore per eseguire MongoDB in ambiente cloud 2MongoDB
 
CCI2018 - Exchange 2019 (novità e setup)
CCI2018 - Exchange 2019 (novità e setup)CCI2018 - Exchange 2019 (novità e setup)
CCI2018 - Exchange 2019 (novità e setup)walk2talk srl
 
Implementare e mantenere un progetto azure sql database v.2
Implementare e mantenere un progetto azure sql database v.2Implementare e mantenere un progetto azure sql database v.2
Implementare e mantenere un progetto azure sql database v.2Emanuele Zanchettin
 
Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indic...
Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indic...Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indic...
Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indic...Meet Magento Italy
 
Global Azure BootCamp 2019 - Verona - Ottimizzazione delle VM SQL Server su A...
Global Azure BootCamp 2019 - Verona - Ottimizzazione delle VM SQL Server su A...Global Azure BootCamp 2019 - Verona - Ottimizzazione delle VM SQL Server su A...
Global Azure BootCamp 2019 - Verona - Ottimizzazione delle VM SQL Server su A...Marco Obinu
 
System Administration: Migliorare le performance di Magento Community Edition
System Administration: Migliorare le performance di Magento Community EditionSystem Administration: Migliorare le performance di Magento Community Edition
System Administration: Migliorare le performance di Magento Community Editionmidimarcus
 
10 suggerimenti per aumentare le performance di sql server senza spendere 1 euro
10 suggerimenti per aumentare le performance di sql server senza spendere 1 euro10 suggerimenti per aumentare le performance di sql server senza spendere 1 euro
10 suggerimenti per aumentare le performance di sql server senza spendere 1 euroRenzo Sotgia
 
10 SUGGERIMENTI PER AUMENTARE LE PERFORMANCE DI SQL SERVER SENZA SPENDERE 1 EURO
10 SUGGERIMENTI PER AUMENTARE LE PERFORMANCE DI SQL SERVER SENZA SPENDERE 1 EURO10 SUGGERIMENTI PER AUMENTARE LE PERFORMANCE DI SQL SERVER SENZA SPENDERE 1 EURO
10 SUGGERIMENTI PER AUMENTARE LE PERFORMANCE DI SQL SERVER SENZA SPENDERE 1 EURORenzo Sotgia
 
VMUGIT - Virtualizzare con i piedi per terra
VMUGIT - Virtualizzare con i piedi per terraVMUGIT - Virtualizzare con i piedi per terra
VMUGIT - Virtualizzare con i piedi per terraVMUG IT
 
Presentazione al VMUGIT UC 2014 - Virtualizzare con i piedi per terra
Presentazione al VMUGIT UC 2014 - Virtualizzare con i piedi per terraPresentazione al VMUGIT UC 2014 - Virtualizzare con i piedi per terra
Presentazione al VMUGIT UC 2014 - Virtualizzare con i piedi per terraAndrea Mauro
 
MySQL Tech Tour 2015 - Soluzioni di alta disponibilità con MySQL
MySQL Tech Tour 2015 - Soluzioni di alta disponibilità con MySQLMySQL Tech Tour 2015 - Soluzioni di alta disponibilità con MySQL
MySQL Tech Tour 2015 - Soluzioni di alta disponibilità con MySQLPar-Tec S.p.A.
 
Applicazioni HTML5 Superveloci - Salvatore Romeo
Applicazioni HTML5 Superveloci - Salvatore RomeoApplicazioni HTML5 Superveloci - Salvatore Romeo
Applicazioni HTML5 Superveloci - Salvatore Romeomarcocasario
 
Velocizzare Joomla! con Zend Server Community Edition
Velocizzare Joomla! con Zend Server Community EditionVelocizzare Joomla! con Zend Server Community Edition
Velocizzare Joomla! con Zend Server Community EditionEnrico Zimuel
 
Azure PaaS databases
Azure PaaS databasesAzure PaaS databases
Azure PaaS databasesGianluca Hotz
 

Semelhante a Build a SQL Server machine - the right way (Italian) (20)

Partner Day Milano - dicembre 2015 - Software Difined Storage. Disaster recov...
Partner Day Milano - dicembre 2015 - Software Difined Storage. Disaster recov...Partner Day Milano - dicembre 2015 - Software Difined Storage. Disaster recov...
Partner Day Milano - dicembre 2015 - Software Difined Storage. Disaster recov...
 
2014.11.14 Implementare e mantenere un progetto Azure SQL Database
2014.11.14 Implementare e mantenere un progetto Azure SQL Database2014.11.14 Implementare e mantenere un progetto Azure SQL Database
2014.11.14 Implementare e mantenere un progetto Azure SQL Database
 
CCI 2019 - Exchange 2019 da 0 ad HA in 1 ora
CCI 2019 - Exchange 2019 da 0 ad HA in 1 oraCCI 2019 - Exchange 2019 da 0 ad HA in 1 ora
CCI 2019 - Exchange 2019 da 0 ad HA in 1 ora
 
MongoDB Atlas: il modo migliore per eseguire MongoDB in ambiente cloud 2
MongoDB Atlas: il modo migliore per eseguire MongoDB in ambiente cloud 2MongoDB Atlas: il modo migliore per eseguire MongoDB in ambiente cloud 2
MongoDB Atlas: il modo migliore per eseguire MongoDB in ambiente cloud 2
 
CCI2018 - Exchange 2019 (novità e setup)
CCI2018 - Exchange 2019 (novità e setup)CCI2018 - Exchange 2019 (novità e setup)
CCI2018 - Exchange 2019 (novità e setup)
 
Implementare e mantenere un progetto azure sql database v.2
Implementare e mantenere un progetto azure sql database v.2Implementare e mantenere un progetto azure sql database v.2
Implementare e mantenere un progetto azure sql database v.2
 
Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indic...
Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indic...Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indic...
Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indic...
 
Le novità di Domino 8.5 - lato Admin
Le novità di Domino 8.5 - lato AdminLe novità di Domino 8.5 - lato Admin
Le novità di Domino 8.5 - lato Admin
 
Presentazione novità Domino 8.5
Presentazione novità Domino 8.5Presentazione novità Domino 8.5
Presentazione novità Domino 8.5
 
Global Azure BootCamp 2019 - Verona - Ottimizzazione delle VM SQL Server su A...
Global Azure BootCamp 2019 - Verona - Ottimizzazione delle VM SQL Server su A...Global Azure BootCamp 2019 - Verona - Ottimizzazione delle VM SQL Server su A...
Global Azure BootCamp 2019 - Verona - Ottimizzazione delle VM SQL Server su A...
 
System Administration: Migliorare le performance di Magento Community Edition
System Administration: Migliorare le performance di Magento Community EditionSystem Administration: Migliorare le performance di Magento Community Edition
System Administration: Migliorare le performance di Magento Community Edition
 
10 suggerimenti per aumentare le performance di sql server senza spendere 1 euro
10 suggerimenti per aumentare le performance di sql server senza spendere 1 euro10 suggerimenti per aumentare le performance di sql server senza spendere 1 euro
10 suggerimenti per aumentare le performance di sql server senza spendere 1 euro
 
10 SUGGERIMENTI PER AUMENTARE LE PERFORMANCE DI SQL SERVER SENZA SPENDERE 1 EURO
10 SUGGERIMENTI PER AUMENTARE LE PERFORMANCE DI SQL SERVER SENZA SPENDERE 1 EURO10 SUGGERIMENTI PER AUMENTARE LE PERFORMANCE DI SQL SERVER SENZA SPENDERE 1 EURO
10 SUGGERIMENTI PER AUMENTARE LE PERFORMANCE DI SQL SERVER SENZA SPENDERE 1 EURO
 
VMUGIT - Virtualizzare con i piedi per terra
VMUGIT - Virtualizzare con i piedi per terraVMUGIT - Virtualizzare con i piedi per terra
VMUGIT - Virtualizzare con i piedi per terra
 
Presentazione al VMUGIT UC 2014 - Virtualizzare con i piedi per terra
Presentazione al VMUGIT UC 2014 - Virtualizzare con i piedi per terraPresentazione al VMUGIT UC 2014 - Virtualizzare con i piedi per terra
Presentazione al VMUGIT UC 2014 - Virtualizzare con i piedi per terra
 
MySQL Tech Tour 2015 - Soluzioni di alta disponibilità con MySQL
MySQL Tech Tour 2015 - Soluzioni di alta disponibilità con MySQLMySQL Tech Tour 2015 - Soluzioni di alta disponibilità con MySQL
MySQL Tech Tour 2015 - Soluzioni di alta disponibilità con MySQL
 
Applicazioni HTML5 Superveloci - Salvatore Romeo
Applicazioni HTML5 Superveloci - Salvatore RomeoApplicazioni HTML5 Superveloci - Salvatore Romeo
Applicazioni HTML5 Superveloci - Salvatore Romeo
 
Velocizzare Joomla! con Zend Server Community Edition
Velocizzare Joomla! con Zend Server Community EditionVelocizzare Joomla! con Zend Server Community Edition
Velocizzare Joomla! con Zend Server Community Edition
 
Azure PaaS databases
Azure PaaS databasesAzure PaaS databases
Azure PaaS databases
 
SQL Server in AWS
SQL Server in AWSSQL Server in AWS
SQL Server in AWS
 

Build a SQL Server machine - the right way (Italian)

  • 1. Build a SQL Server machine The right way Danilo Dominici SolidQ
  • 4. Chi sono • Consulente, Trainer, Speaker, Autore • Uso SQL Server dalla versione 6.5 • Microsoft MVP, MCT • Mentor @ SolidQ • DBA SQL Server e VMWare admin @ Regione Marche • Co-leader del PASS Global Italian Virtual Chapter http://globalitalian.sqlpass.org
  • 6. RAID §  Almeno RAID 1 per tutti i dischi §  Anche il sistema operativo §  RAID 10 per massimizzare le performance §  Test prima di andare in produzione §  SQLIO §  CrystalDiskMark
  • 7. Separare i dischi §  Utilizzare dischi separati per: §  File dati di SQL Server (mdf, ndf) §  Transaction logs §  Incluso il tempdb §  Tempdb §  Backups
  • 8. Formattazione dischi §  Il disco C: dove risiede il sistema operativo può usare il default (4K) §  I dischi di SQL Server (dati, log, tempdb) dovrebbero essere formattati con cluster size di 64K §  Verificare che lo storage sia allineato §  Da Windows 2008 è automatico §  Stesse regole se stiamo preparando una VM
  • 9. Risparmio energetico §  Il server fisico su cui gira SQL Server o la VM che ospita SQL Server deve avere le impostazioni per usare la massima potenza del processore §  Verificare che anche il Power plan di Windows sia impostato su High Performance §  Tool: CPU-Z
  • 10. Antivirus §  Impostare le esclusioni per §  Directory di SQL Server §  Estensioni dei files di SQL Server §  Mdf, ndf, ldf, bak §  Cataloghi full-text §  Trace files §  SQL Audit files §  Extended events files
  • 11. SQL Server service accounts §  Utilizzare un account di dominio senza privilegi elevati §  L’account non dovrebbe essere amministratore del server su cui è installato SQL Server §  Utilizzare un account di dominio separato per SQL Server Agent §  Più in generale un account per ogni servizio (SSRS, SSIS, etc)
  • 13. Server Max Memory §  Che cos’è: §  Indica a SQL Server il limite di memoria da utilizzare §  Default: §  2147483647 MB
  • 14. Server Max Memory (continua) §  Perché modificarlo: §  SQL Server tende ad occupare tutta la RAM §  può diventare un problema se la memoria disponibile diventa insufficiente per il S.O. o se ci sono altre applicazioni in uso sul server (es. SSRS, SSIS) §  Regola: §  Se il server usa solo SQL Server, si può iniziare con il 10% (o 2GB, dipende dal valore più grande) §  Va ottimizzato in funzione dei programmi che girano sul server (anche SSMS in RDP J)
  • 15. Server Max Memory (continua) §  Approfondimenti: §  How much memory does my SQL Server actually need? https://goo.gl/6csFqd §  Memory Manager Configuration changes in SQL Server 2012 http://goo.gl/2dLJTx
  • 16. Cost Threshold for Parallelism §  Che cos’è §  Indica il limite stimato, in secondi, oltre il quale il Query Optimizer considera l’esecuzione di una query in parallelo §  Default: 5 secondi §  E’ rimasto invariato da SQL Server 2005. Con l’hardware attuale non ha più senso.
  • 17. Cost Threshold for Parallelism (continua) §  Perché modificarlo: §  Per ridurre le attese (CXPACKET) dovute all’esecuzione in parallelo §  Alcuni dei thread eseguiti in parallelo possono impiegare più tempo per terminare l’esecuzione e rallentano l’intera query §  Regola: §  Non c’è un numero “magico” §  Iniziare da 30 o 40 secondi ed eventualmente tararlo misurandone l’impatto sul sistema
  • 18. MAXDOP §  Che cos’è §  Indica il numero di processori utilizzati nell’esecuzione delle query in parallelo §  Default: 0 §  Vengono utilizzati TUTTI i processori (se SQL Server decide di eseguire la query in parallelo)
  • 19. MAXDOP (continua) §  Perché modificarlo: §  In combinazione con il parametro cost threshold for parallelism per ridurre il valore di CXPACKET §  Perché ce lo chiede l’applicazione (Es. Sharepoint vuole MAXDOP=1) §  Regola: §  Solitamente si imposta pari al numero di core fisici
  • 20. MAXDOP (continua) §  Casi particolari §  Licensing errato §  licenza SQL Server 200x Ent.Edition Server + CAL à licenza SQL Server 2012 Ent. con 20 logical CPU
  • 21. MAXDOP (continua) §  Casi particolari §  NUMA (Non-Uniform Memory Access)
  • 22. DEMO §  MAXDOP=0 SELECT I.CustomerID, C.FirstName , ad.City FROM Person.Contact c JOIN Sales.Individual i ON C.ContactID = I.ContactID JOIN Sales.CustomerAddress ca ON CA.CustomerID = I.CustomerID JOIN Person.Address ad ON ad.AddressID = CA.AddressID ORDER BY i.CustomerID
  • 23. DEMO §  MAXDOP=2 SELECT I.CustomerID, C.FirstName , ad.City FROM Person.Contact c JOIN Sales.Individual i ON C.ContactID = I.ContactID JOIN Sales.CustomerAddress ca ON CA.CustomerID = I.CustomerID JOIN Person.Address ad ON ad.AddressID = CA.AddressID ORDER BY i.CustomerID OPTION (MAXDOP 2)
  • 24. Backup compression §  Che cos’è §  Consente (SQL 2008+) di comprimere i backup nativamente §  Default: non compresso §  Perché modificarlo §  Minor tempo e spazio necessari per il backup §  Ha un costo in termini di maggiore utilizzo di CPU
  • 25. Instant File Initialization §  Che cos’è §  Inizializzazione istantanea dei files dati (mdf/ndf) §  NON funziona per il transaction log §  Tecnicamente è un permesso di Windows §  Default: §  Dipende dall’account usato per l’account di servizio di SQL Server §  Per default solo i membri del gruppo locale Administrators
  • 26. Instant File Initialization §  Perché modificarlo: §  Rende praticamente istantanee le operazioni di: §  Creazione di un nuovo database o file di database §  Autogrowth §  Restore di un database §  Come si modifica §  Assegnando all’utente di servizio di SQL Server il permesso “Perform Volume Maintenance Tasks” nelle Local Security Policy del server
  • 28. Configurazione del TEMPDB §  Default: un singolo file §  Perché non va bene: §  Si crea contesa di accesso sulle pagine PFS e SGAM §  Regola: §  Se il numero di processori logici è <= 8 à numero di files = numero di processori logici §  Altrimenti iniziare con 8 files e aggiungere in multipli di 4 se c’è ancora contesa
  • 29. Configurazione del TEMPDB (continua) §  Regola: §  Utilizzare la stessa dimensione per tutti i data file §  Preallocare lo spazio
  • 30. Configurazione del TEMPDB (continua) §  Approfondimenti §  Inside The Storage Engine: GAM, SGAM, PFS and other allocation maps http://goo.gl/2GSohV §  Analyzing Tempdb Contention http://goo.gl/v5n5p1
  • 32. Trace flags §  1118 §  Allocazione di extent uniformi per il tempdb §  2371 §  Modifica la soglia usata da SQL Server (2012+) per il ricalcolo automatico delle statistiche
  • 33. Configurare operatori ed avvisi §  Per tutti i messaggi di errore con severity da 17 a 25 §  Fa eccezione l’errore 825 che rientra tra gli errori gravi, ma ha severity 16 §  Per tutti i job
  • 34. Database maintenance §  I piani di manutenzione sono competi, ma... §  Non consentono un controllo “fine” delle attività §  Esistono soluzioni (free) fatte da SQL MVPs §  Maintenance Solution di Ola Hallengren §  http://ola.hallengren.com §  Minion Reindex di Jen McCown §  http://www.midnightsql.com/Minion/
  • 35. Management Data Warehouse §  Consente di monitorare una o più istanze di SQL Server §  E’ un insieme di jobs e package SSIS §  Può essere customizzato aggiungendo dei data collector custom §  Molto più complesso, ma si può aggiungere anche un custom collector type §  Es. http://extendedtsqlcollector.codeplex.com/ di Gianluca Sartori b | t
  • 37. Enable DAC §  Default: disabilitata §  Perché non va bene: §  E’ l’ultima spiaggia per connettersi ad un SQL Server che non risponde ai comandi…
  • 38. Enable DAC (continua) §  Come si abilita: §  Da T-SQL sp_configure 'remote admin connections', 1 GO RECONFIGURE WITH OVERRIDE GO
  • 40. Proprietà del database MODEL §  Essendo il “modello”, i parametri impostati ed il suo contenuto verranno utilizzati per i nuovi database §  Parametri da verificare ed ottimizzare: §  Autogrowth; impostare in MB, non in %, con dimensione adeguata §  Auto close e auto shrink: OFF §  Auto create e auto update statistics: ON §  Recovery model: dipende J
  • 41. Q & A
  • 43. Valutazione evento: http://goo.gl/gwhs8O Valutazione speaker: http://goo.gl/oju41k #sqlsatTorino #sqlsat400