Autogrow come il cortisone

Iniziamo bene: come il cortisone anche l’autogrow salva la vita. Ma, come per il cortisone, è il caso di non abusarne ma, piuttosto, di utilizzarlo solo quando non se ne può fare a meno.   L’inizio del post è un pò “farmaceutico” ok, ma credo che possa far arrivare meglio il concetto e le motivazioni…

0

Happy (SQL) Christmas !!!

  SET NOCOUNT ON; DECLARE @level smallint = 10; DECLARE @i tinyint = 1 DECLARE @Offset smallint = 10; DECLARE @x1 smallint = 100; DECLARE @y1 smallint = 100; DECLARE @x2 smallint = 150; DECLARE @y2 smallint = 100; DECLARE @x3 smallint = 125; DECLARE @y3 smallint = 115; DECLARE @x4 smallint = 100; DECLARE…

1

Austerity e la patrimoniale sui bytes

In periodo di austerity mi chiedo solo perchè nessuno si preoccupi mai di “tagliare” i bytes in eccesso sui propri database… Non potremmo mettere tutta la nostra attenzione anche nella costruzione dei nostri database e risparmiare ciò che è inutile, superfluo e alla lunga dannoso? Vi siete mai chiesti se avete bytes in eccesso?  …

0

Caricamenti massivi e best practices. L’ordine corretto delle cose

In scenari di caricamenti massivi la best practice è sempre una, detta e ridetta: DROP indici caricamento massivo CREATE indici Bene. Ora la domanda è: in che ordine eseguo le singole operazioni? Intendo dire: Supponendo che la mia tabella abbia sia un indice cluster, che uno o più indici noncluster: in che ordine eseguo le…

2

NVarchar(4000) vs. NVarchar(x). O anche: “Ti piace vincere facile?”

Certo il titolo non è dei più chiari, però correggo subito la domanda con la risposta (provocatoria): “Ti piace perdere facile!”. Vengo allo scenario. Ogni colonna all’interno del database, che andrà a contenere del testo, viene modellata come NVarchar(4000). Perchè? Perchè così sono sicuro di poter memorizzare al suo interno sempre tutto ciò che mi…

1

Update data on the fly

Prendete un datawarehouse abbastanza complesso, con decine di tabelle dei fatti strutturate secondo una modellazione ben precisa: tutte le tabelle (dei fatti) si chiamano “fact_…” tutte le chiavi si chiamano “ID…” (per renderla semplice in questo post) tutti le misure sono definite INT o DECIMAL Qualcosa come: Adesso prendete la necessità di voler modificare tutte…

0

Analytic functions, LAG, running total, cursor, SQLCLR, …

Qualche anno fa (sono quasi 5 !!!) scrivevo di cursori, complessità lineari, complessità esponenziali, SQLCLR, … qui e qui. Nei due post del blog analizzavo alcune possibili soluzioni (con cursore, con subquery senza cursore, con un’implementazione SQLCLR) ad un problema di running total : La domanda, a questo punto, potrebbe nascere spontanea: perchè, a distanza…

2

Monitoring Reporting Services Performance

A partire dal SQL Server 2008 R2, fare analisi sulle performance dei reporting services è diventato ancora più semplice con l’aggiunta, all’interno del database ReportServer (o ReportServer$<nome istanza>), della vista [ExecutionLog3]. In questa vista, tre sono le informazioni in grado di farci analizzare i tempi necessari a generare un report: TimeDataRetrieval: millisecondi utilizzati per recuperare…

0