Mai avuto la necessità di spostare una tabella da un filegroup ad un altro ?
Mi è giusto capitato pochi giorni fa e
Visualizzazione post con etichetta Sql Server 2008. Mostra tutti i post
Visualizzazione post con etichetta Sql Server 2008. Mostra tutti i post
martedì 8 ottobre 2013
Spostare una tabella da un FileGroup ad un altro
Etichette:
Rebuild Indexes,
Sql Server 2008,
Sql Server 2008 R2,
SQL Server 2012,
T-SQL,
Table
sabato 28 settembre 2013
Backup/Restore come Initial Snapshot di una replica transazionale
In certi scenari di replica, dove il DB da pubblicare è di grosse dimensioni, potrebbe essere conveniente configurare la/le sottoscrizioni partendo da un Backup\Restore anziché da un Initial Snapshot come prevede la procedure standard.
La creazione dell'Initial Snapshot potrebbe essere molto lunga e consumare molte risorse che in questo modo risparmiamo.
La creazione dell'Initial Snapshot potrebbe essere molto lunga e consumare molte risorse che in questo modo risparmiamo.
domenica 22 settembre 2013
T-SQL e caricamento dati differenziale..... E le performance ?
Immaginiamo questo scenario :
DBTarget è un DB OLAP che contiene una tabella TargetTable ed è utilizzato per effettuare Business Intelligence
DBSource è il DB OLTP che contiene una tabella SourceTable ed è utilizzato dai programmi aziendali di gestione.
Abbiamo la necessità di allineare il contenuto di TargetTable con quello di SourceTable utilizzando T-SQL.
DBTarget è un DB OLAP che contiene una tabella TargetTable ed è utilizzato per effettuare Business Intelligence
DBSource è il DB OLTP che contiene una tabella SourceTable ed è utilizzato dai programmi aziendali di gestione.
Abbiamo la necessità di allineare il contenuto di TargetTable con quello di SourceTable utilizzando T-SQL.
domenica 26 maggio 2013
SQL Server 2012 : Viste, problemi e soluzioni....
Comodissime le viste, non c'è che dire, salvo il caso in cui vadano in errore, non ci restituiscano tutti i campi che ci aspetteremmo o peggio ancora, ci restituiscano campi con valori incoerenti.
Se create correttamente sono un ausilio perfetto per reperire i dati in modo semplice e performante.... Sempre che si mettano in opera alcuni semplicissimi accorgimenti.
Se create correttamente sono un ausilio perfetto per reperire i dati in modo semplice e performante.... Sempre che si mettano in opera alcuni semplicissimi accorgimenti.
Etichette:
Execution Plan,
Modellazione,
SQL Server 2005,
Sql Server 2008,
T-SQL,
Troubleshooting
mercoledì 6 marzo 2013
SQL Server 2012 : Datapage Repair
A causa di errori del disco, del controller, sbalzi di tensione o altri casi particolari i dati contenuti nei DB potrebbero danneggiarsi e diventare inutilizzabili. Il problema è che potremmo non accorgerci del danno fino a che quei dati precisi non ci servono.
Cosa dobbiamo fare in questo malaugurato caso ?
Cosa dobbiamo fare in questo malaugurato caso ?
giovedì 6 dicembre 2012
SQL Server 2012 : Configurare il Resource Governor
Il Resource Governor è stato introdotto dall'edizione di SQL 2008, ma non mi pare sia molto utilizzato..... In poche parole vi consente di definire il limite di utilizzo della cpu e della memoria per i login e le applicazioni che si connettono a SQL server.
Etichette:
Performance tuning,
Sql Server 2008,
SQL Server 2012
mercoledì 8 agosto 2012
Tabelle partizionate, indici, ricerche e manutenzione...
Gli indici partizionati/allineati sono estremamente utili quando dobbiamo fare ricerche nei dati di tabelle partizionate ma potrebbero essere un collo di bottiglia per le performance quando non sono creati correttamente. Qui un breve post sulla struttura degli indici in tabelle partizionate.
Etichette:
Performance tuning,
Sql Server 2008,
Sql Server 2008 R2,
SQL Server 2012
martedì 7 agosto 2012
Tabelle Partizionate e struttura degli indici
Tempo fa avevo parlato della modalità di creazione di tabelle partizionate, ora vediamo come sono composti gli indici creati su questa tipologia di tabelle.
Etichette:
Sql Server 2008,
Sql Server 2008 R2,
SQL Server 2012
venerdì 27 luglio 2012
SQL Server 2012: Piano d'esecuzione non ottimale
Perchè una query apparentemente ottimizzata non dovrebbe rivelarsi tale? Perchè il query optimizer, che dovrebbe sempre trovare la strada migliore per evadere le nostre query, dovrebbe scegliere un piano d'esecuzione non ottimale se non scadente?
T-SQL: Ranking function example
Le funzioni di ranking sono state introdotte sin dall'edizione 2005 ma molto spesso mi capita di vedere script che potrebbero beneficiarne non farne uso.
Scopo delle funzioni di ranking è quello di "classificare" ogni riga all'interno di una partizione, di un set di risultati.
Scopo delle funzioni di ranking è quello di "classificare" ogni riga all'interno di una partizione, di un set di risultati.
Etichette:
SQL Server 2005,
Sql Server 2008,
SQL Server 2012,
T-SQL
domenica 1 luglio 2012
Trovare l'isolation level delle transazioni attive e altro....
Mai capitato di dover capire lo stato di una transazione, il suo isolation level e chi l'ha lanciata ?
SQL mette a disposizione tantissime Dynamic Management Views and Functions che ci aiutano a capire cosa sta facendo l'engine.
Etichette:
SQL Server 2005,
Sql Server 2008,
Sql Server 2008 R2,
SQL Server 2012
lunedì 12 marzo 2012
Come Transaction Log Growth e Virtual Logs impattano sulle Performance ?
Il Transaction Log è un file che molto spesso, quando si pensa alle performance, viene messo nel dimenticatoio.
Se riuscissimo a "gestire" il T-Log in modo ottimale, ed è possibile, potremmo migliorare senza alcuno sforzo le performance del nostro DB.
Se riuscissimo a "gestire" il T-Log in modo ottimale, ed è possibile, potremmo migliorare senza alcuno sforzo le performance del nostro DB.
domenica 4 marzo 2012
Auto Create Statistics e Auto Update Statistics
Quando SQL Server crea e aggiorna le statistiche ?
Se abbiamo abilitato le opzioni Auto Create Statistics e Auto Update statistics SQL server crea questi oggetti automaticamente e li mantiene aggiornati automaticamente quando necessario.
Se abbiamo abilitato le opzioni Auto Create Statistics e Auto Update statistics SQL server crea questi oggetti automaticamente e li mantiene aggiornati automaticamente quando necessario.
mercoledì 22 febbraio 2012
Data Type e performance
La scelta del tipo di dato per le colonne delle tabelle nei database è fondamentale per avere delle performance sempre all'altezza delle aspettative degli utenti.
Sottovalutare questo aspetto potrebbe avere conseguenze nefaste per le nostre applicazioni che reperiscono i dati grazie a SQL server.
Ogni tipo di dato, sia a lunghezza fissa che a lunghezza variabile, ha una propria allocazione in termini di byte scritti sul disco.
Le righe contenute nelle nostre tabelle vengono archiviate in strutture di 8K chiamate data page ed ogni riga ( salvo casi particolari ) dovrà essere contenuta interamente in una singola data page.
La quantità di righe che riusciamo a contenere in una singola data page determina il numero di data page che costituiranno la nostra tabella.
All'aumentare delle data page aumenteranno le operazioni di I/O per evadere le nostre richieste e di conseguenza potrebbero calare drasticamente le performance....
Sottovalutare questo aspetto potrebbe avere conseguenze nefaste per le nostre applicazioni che reperiscono i dati grazie a SQL server.
Ogni tipo di dato, sia a lunghezza fissa che a lunghezza variabile, ha una propria allocazione in termini di byte scritti sul disco.
Le righe contenute nelle nostre tabelle vengono archiviate in strutture di 8K chiamate data page ed ogni riga ( salvo casi particolari ) dovrà essere contenuta interamente in una singola data page.
La quantità di righe che riusciamo a contenere in una singola data page determina il numero di data page che costituiranno la nostra tabella.
All'aumentare delle data page aumenteranno le operazioni di I/O per evadere le nostre richieste e di conseguenza potrebbero calare drasticamente le performance....
lunedì 20 febbraio 2012
Pivoting Dinamico
Immaginate d'avere una tabella e di volerne effettuare il pivot.
L'istruzione Pivot richiede esplicitamente quali valori debbano essere trasformati in colonne, per esempio :
Select * from MyTable
Pivot(Aggregate_fn(Fields0) for Fields1 in (Values List)) Pvt
Immaginate di non conoscere a priori quali valori debbano essere orizzontalizzati con la pivot perchè il contenuto della tabella è
estremamente variabile. Come fare ?
L'istruzione Pivot richiede esplicitamente quali valori debbano essere trasformati in colonne, per esempio :
Select * from MyTable
Pivot(Aggregate_fn(Fields0) for Fields1 in (Values List)) Pvt
Immaginate di non conoscere a priori quali valori debbano essere orizzontalizzati con la pivot perchè il contenuto della tabella è
estremamente variabile. Come fare ?
Etichette:
SQL Server 2005,
Sql Server 2008,
Sql Server 2008 R2,
SQL Server 2012
domenica 19 febbraio 2012
Ricerca in Campi XML
Immaginate un magazzino di spedizionieri che necessita di una descrizione dettagliata di ogni prodotto conservato al suo interno.
Nei suoi scaffali si protrebbero trovare prodotti come Sci, Televisioni, Automobili, Pc etc.... Come fare allora per gestire anche nel DB
dei dati così differenti tra loro per struttura ?
Nei suoi scaffali si protrebbero trovare prodotti come Sci, Televisioni, Automobili, Pc etc.... Come fare allora per gestire anche nel DB
dei dati così differenti tra loro per struttura ?
Etichette:
SQL Server 2005,
Sql Server 2008,
Sql Server 2008 R2,
SQL Server 2012
sabato 18 febbraio 2012
Impatto del Page Split dei livelli intermedi sulle prestazioni
Cosa è il page split ? E' un meccanismo di sincronizzazione grazie al quale SQL Server mantiene aggiornato il contenuto dei nostri indici con quanto è realmente contenuto nella tabella. Per fortuna esiste, ma se si verifica troppo frequentemente potrebbe mettere a dura prova le performance del nostro DB.
Perchè si verifica ?
Perchè si verifica ?
giovedì 9 febbraio 2012
SQL Server 2008: Pensare Set based
Pensare set based è il metodo più efficiente per risolvere problematiche complesse mantenendo le performance del nostro DB a livelli elevati. Non sempre è semplice pensare set based perché la nostra mente è orientata al ragionamento row based che però ha molte controindicazioni.
Etichette:
Common table expression,
Set Based,
Sql Server 2008
lunedì 19 dicembre 2011
Happy SQL Christmas !!!!
E' natale e siamo tutti più buoni.....
Allora mi sono detto.... Perchè non rendere anche SQL Server più buono ?
Ma come ?
bhè.... Facendogli disegnare un bell'albero di Natale!!!
Eh ?!?!? Si si !!! Proprio un albero di Natale....
Ma come fai ? Con i dati Spaziali (come le alabarde di Goldrake !!)
Etichette:
Sql Server 2008
giovedì 15 settembre 2011
Creare tabelle partizionate
Il partizionamento delle tabelle consente di distribuirne il contenuto su più file, riducendo l'impatto delle operazioni Insert, Update, delete e Select sul sistema dischi, grosso collo di bottiglia per le performance di un database.
Etichette:
Sql Server 2008,
Sql Server 2008 R2,
SQL Server 2012
Iscriviti a:
Post (Atom)