Ottimizzazione e Performance DB Sql Server

mercoledì 29 agosto 2012 - 17.00
Tag Elenco Tags  SQL Server 2008 R2  |  SQL Server 2000

vittosss Profilo | Junior Member

Ciao a tutti, vi illustro il mio problema.
ho un db su sql server 2000 sp4 di circa 30gb e su questo fare tutta una serie di attività al fine di avere un db + snello e soprattutto + performante.
il tutto passa certamente da una pulizia di record superflui o vecchi, indici, statistiche. e fin qui, dovremmo esserci. potrebbe essere ottimale splittare su + file il db?
sarebbe inoltre utile prima di agire fare un'attenta attività di monitoring sul db in questione mentre viene usato in modo da identificare eventuali nodi o query scritte non proprio ad hoc. ho sempre un po' litigato col profiler che poche volte ho compreso fino in fondo. inoltre mi chiedevo se potesse essere utile portare il db sql server 2000 su 2008 al fine di sfruttarne i tool. il mio unico dubbio è che importandolo possa, come penso, subire delle modifiche rendendo il db inutilizzabile dalla mia applicazione.
avreste informazioni o suggerimenti in merito?
grazie mille a tutti
V.

alx_81 Profilo | Guru

>Ciao a tutti, vi illustro il mio problema.
ciao

>potrebbe essere ottimale splittare su + file il db?
ci sono dei whitepaper per la corretta configurazione dei file del db. Ma il tutto dipende anche da che hardware hai (in termini di macchina e storage).
Quindi, indicativamente sì, ma le migliorie le puoi trovare leggendo qui: http://blogs.technet.com/b/beatrice/archive/2008/04/07/collection-of-sql-server-storage-best-practices.aspx
e poi leggendo in generale le specifiche per 2005 a mio avviso sono buone anche per 2000:
http://technet.microsoft.com/en-us/library/cc966534.aspx
http://msdn.microsoft.com/en-us/library/cc966412.aspx

>sarebbe inoltre utile prima di agire fare un'attenta attività
>di monitoring sul db in questione mentre viene usato in modo
>da identificare eventuali nodi o query scritte non proprio ad
>hoc. ho sempre un po' litigato col profiler che poche volte ho
>compreso fino in fondo. inoltre mi chiedevo se potesse essere
>utile portare il db sql server 2000 su 2008 al fine di sfruttarne
>i tool. il mio unico dubbio è che importandolo possa, come penso,
>subire delle modifiche rendendo il db inutilizzabile dalla mia
>applicazione.
>avreste informazioni o suggerimenti in merito?
Di certo per motore, prestazioni, funzionalità, e quant'altro.. è meglio passare al 2008, senza dubbio (a questo punto se devi comprare, meglio ancora 2012).
Per contro però, devi fare attenzione a varie cose, tra cui:
- programmabilità (se hai scritto linee di codice legacy, dovrai prevedere dei refactor, che potrebbero essere non trascurabili)
- deprecazioni (se hai usato strumenti che non esistono più, dovrai reimplementarli oppure capire come riaffrontare il problema)
- riconsiderare modo di scrittura di query
- riconsiderare i vantaggi che i nuovi tipi di indice ti danno

le ultime due a dire il vero le puoi sempre pensare anche dopo, ma di certo, dopo aver portato il tuo database a "nuova" vita, dovrai ricostruire tutti gli indici e aggiornare tutte le statistiche. Non è detto che l'optimizer sia migliore sempre (era al top magari con 2000, ma nelle versioni nuove dovrai riscrivere qualcosa se non ha seguito sintassi standard e best practices). Il profiler ti aiuterà, ma non solo, se usi nuove versioni, poi altri tool come il database tuning advisor ti aiuteranno a capire quali indici mancanti dovrai disegnare ed eventualmente, con l'ausilio di un paio di dynamic management views potrai capire quali indici non sono proprio utilizzati. I piani di esecuzione inoltre (partendo da tracce del profiler) ti daranno informazioni su quanto una query potrebbe essere concepita in maniera differente.
Non vi è poi da sottovalutare il fatto che con alcuni nuovi costrutti puoi fare cose che prima potevi implementare solo facendo voli pindarici (vedi gerarchie, ricorsività, cursori, funzioni di ranking).

Diciamo che è un tema su cui perdere una settimana di discussione
Ho provato ad essere brevissimo..

>grazie mille a tutti
di nulla!
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi

vittosss Profilo | Junior Member

grazie alx, sempre gentilissimo.
mi sono studiato un po' di materiale oltre a quanto da te segnalato.
ci sono query che aiutino a capire quali processi sono molto onerosi o magari indici da creare o query da riscrivere?

alx_81 Profilo | Guru

>ci sono query che aiutino a capire quali processi sono molto
>onerosi o magari indici da creare o query da riscrivere?
dipende dalla versione di sql che decidi di usare, da 2008 hai anche le view per gli indici missing, poi hai il Database Tuning Advisor e altre funzionalità che in versioni precedenti non trovi.
Ovvio che il tutto dipende dall'edizione anche. La express non ha tutte le funzionalità disponibili.
Puoi usare il profiler comunque con 2000 se non ricordo male, sempre se l'edizione lo supporta.

--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi

vittosss Profilo | Junior Member

dunque, dopo mirabolanti peripezie sono riuscito a connettere una installazione di sql server 2008 al db sql server 2000.
quindi ho creato un trc con il profiler usando il template Tuning. poi ho usato il trc nel database engine tuning advisor.
...e non è che abbia afferrato tutto tutto...anzi...

alx_81 Profilo | Guru

>...e non è che abbia afferrato tutto tutto...anzi...
in che senso? Errori? Nessuna miglioria? Oppure non hai afferrato tu?

--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5