Sei sulla pagina 1di 26

SQL 2008

Principali funzionalità, manutenzione e partitioning


Panoramica oggetti principali
• Files and Filegroups
• Transaction log
• Tempdb database
• Msdb database
• DataBase Recovery Model
FILES AND FILEGROUPS
FILEGROUPS
Generalità
• Estensioni standard : .mdf, .ndf, .ldf

• I Filegroup possono essere utilizzati per


migliorare le performance di I/O
FILEGROUPS
Operazioni principali
• Creazione
• Aggiunta Files
• Aggiunta oggetti
• Spostameno di oggetti
FILEGROUPS
Creazione
ALTER DATABASE <nome>
ADD FILEGROUP <nome fg>
FILEGROUPS
Aggiunta di un FILE
ALTER DATABASE <nome>
ADD FILE (
NAME = <mnemonico>,
FILENAME = <path completo fisico>,
SIZE= …,
MAXSIZE=…,
FILEGROWTH=…,
)
TO FILEGROUP <nome fg> ;
FILEGROUPS
Aggiunta di oggetti
CREATE TABLE <nome tabella> ( … )
ON <nome fg>

CREATE INDEX <nome indice>


ON <nome fg>
FILEGROUPS
Spostamento di oggetti
• Spostare un tabella che ha un indice clustered
– In questo caso, la tabella è persistita con l'indice clustered: basta
muovere il clustered e tutta la tabella viene spostata

CREATE CLUSTERED INDEX <nome idx>


ON <nome tabella>
ON <nome fg>
FILEGROUPS
Spostamento di oggetti
• Spostare un indice non clustered

CREATE INDEX <nome indice> ON <nome tabella>


WITH (DROP_EXISTING = ON)
ON <nome fg>
FILEGROUPS
Spostamento di oggetti
• Spostare una tabella che è senza indice clustered.
– In questo caso possiamo creare un indice clustered sul file group
e poi cancellarlo

CREATE CLUSTERED INDEX <nome idx>


ON <nome tabella>
ON <nome fg>;
GO

DROP INDEX <nome idx> ON <nome tabella>


GO
FILEGROUPS
Che oggetti ci sono?
select
o.name AS TABLE_NAME, o.type, i.name AS IDX_NAME,
i.index_id, f.name as FG_NAME
from
sys.indexes i

INNER JOIN sys.filegroups f


on i.data_space_id= f.data_space_id

INNER JOIN sys.all_objects o


ON i.object_id = o.object_id
WHERE
f.name = <nome fg>
TRANSACTION LOG
TRANSACTION LOG
Il concetto di ACID
ACID (Atomicity, Consistency, Isolation, Durability)
• Atomicity : garantire che le operazioni in transazione
verranno terminate tutte o nessuna.
• Consistency: garantire che le transazioni non finiranno
mai in uno stato semi concluso.
• Isolation: garantire che le elaborazioni delle singole
transazioni saranno separate.
• Durability: garantire che il database terrà traccia di
qualsiasi tipo di cambiamento nel tempo.
TRANSACTION LOG
Cos’è?
• File fisico persistito su un disco
• Estensione .ldf
• Vita e scrittura del log file sono legati al
recovery model del Database
• Garantisce l’applicazione delle regole
ACID
DATABASE DI SISTEMA
Database di sistema
TEMPDB
• Risorsa globale disponibile a tutti gli utenti
connessi all'istanza SQL
• Viene ricreato ogni volta che l'istanza parte.
• Non si può effettuare backup o restore del
tempdb
Database di sistema
TEMPDB
Contiene:
• Tabelle globali o locali, tabelle @, cursori
• Tabelle di lavoro utilizzate dall'ottimizzatore
• Versioni di righe (row versioning isolation,
snapshot isolation)
• Versioni di righe durante operazioni di
manutenzione online ad esempio reindexing o la
rebuild online di un indice.
Database di sistema
TEMPDB
Importanza della posizione fisica del tempdb.
• La causa principale di un rallentamento
del sistema a volte è la locazione fisica del
tempDB
• SQL utilizza il tempdb per immagazzinare
risultati intermedi durante un'elaborazione
di una query…
Database di sistema
TEMPDB
Che dimensione deve avere?
• Il miglior modo per capire qual è la
dimensione corretta è quello di fare delle
prove su un ambiente di test.

• Non bisognerebbe mai permettere l'AUTO


GROW per il tempdb in quanto rallenta e
frammenta il file.
Database di sistema
MSDB
• Viene utilizzato da SQL Server Agent

• Utilizzato inoltre da altre caratteristiche di


SQL ad esempio SSMS, Service Broker,
Mail Services…

• Necessario Backup
Database di sistema
MSDB
Esempi tabelle di sistema correlate
• msdb.dbo.sysjobs
– Contiene le informazioni su tutti i processi
pianificati da eseguire tramite SQL Server
Agent.
• msdb.dbo.sysjobhistory
– Contiene informazioni sull'esecuzione di
processi pianificati da SQL Server Agent.
RECOVERY MODELS
Recovery Models

• FULL
• BULK_LOGGED
• SIMPLE
ACCESSO AL DB
Accesso al DB

• ONLINE
– READ_ONLY/READ_WRITE
– SINGLE_USER/RESTRICTED_USER/MULTI_USER
• OFFLINE
• EMERGENCY

• ROLLBACK IMMEDIATE
• ROLLBACK AFTER <secondi>