Ottimizzare database sql server

lunedì 20 novembre 2006 - 11.27

fabio barbieri Profilo | Newbie

ciao a tutti,
dovrei ottimizzare un database sql server ....
il mio problema è che occupa troppo spazio sono già a mezzo giga e sono solo in fase di start up .

il databse l'ho esportato da oracle e quindi i tipi di dati sono un pochino sbagliati ...

secondo voi se cambio varchar in nvarchar risparmio qualche cosa?

esiste qualche software che mi permette di capire quali sono le tabelle e i campi che non servono?

o cosa si fa in questo caso?

tks

alx_81 Profilo | Guru

>ciao a tutti,
Ciao!

>dovrei ottimizzare un database sql server ....
>il mio problema è che occupa troppo spazio sono già a mezzo giga
>e sono solo in fase di start up .
>
>il databse l'ho esportato da oracle e quindi i tipi di dati sono
>un pochino sbagliati ...
>
>secondo voi se cambio varchar in nvarchar risparmio qualche cosa?
>
>esiste qualche software che mi permette di capire quali sono
>le tabelle e i campi che non servono?
>
>o cosa si fa in questo caso?
Sinceramente così è molto dura aiutarti..
Intanto.. SQL Server? 2000? 2005?

poi, per i tipi di dato.. controlla le lunghezze dei campi.. magari esportando, ti trovi dei varchar enormi per campi che tengono effettivamente meno..

cmq ci sono tante altre cose.. bisognerebbe avere il database sottomano..
Indici, Normalizzazione della struttura.. ecc.. ecc..

così purtroppo non posso dirti più di tanto..
>
>tks

Alx81 =)

http://blogs.dotnethell.it/suxstellino

lbenaglia Profilo | Guru

>secondo voi se cambio varchar in nvarchar risparmio qualche cosa?

Ciao Fabio,

i datatype nvarchar, nchar, ntext sono tutti unicode, ovvero utilizzano 2 bytes per rappresentare ogni carattere. Questo ti permette di memorizzare stringhe in qualsiasi lingua (supporta oltre 65.000 caratteri differenti) ma ovviamente a parità di dimensioni potrai memorizzare la metà dei dati.
Quindi, se cambi da varchar a nvarchar duplicherai la dimensione delle colonne invece che dimezzarla

>esiste qualche software che mi permette di capire quali sono
>le tabelle e i campi che non servono?
L'unico che può rispondere a questa domanda SEI TU!
Un conto è ottimizzare la definizione degli indici, un conto è "sfrondare" quello che non serve.

>o cosa si fa in questo caso?
Ci si arma di santa pazienza e si inzia ad analizzare nel dettaglio la struttura del database, degli oggetti che lo compongono, della sicurezza, ecc.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

fabio barbieri Profilo | Newbie

sql server 2005


la differenza tra varchar e nvarchar è chiarissima GRAZIE

ma invece tra char e varchar ?

alx_81 Profilo | Guru

>sql server 2005
>
>
>la differenza tra varchar e nvarchar è chiarissima GRAZIE
>
>ma invece tra char e varchar ?

Char è un tipo di dato a lunghezza fissa.. Quindi l'occupazione di ogni campo definito char corrisponde alla dimensione assegnata.
Ad esempio, un campo di tipo char(30) occuperà 30 caratteri (30 bytes). Se ne riempi meno, i caratteri non "utilizzati" diventano spazi, ma l'occupazione è sempre 30 bytes. Si usa quando non hai informazioni molto variabili e/o quando sai che la lunghezza del campo sarà sempre quella.

Varchar è variabile, quindi se definisci un campo varchar(30) e non lo riempi tutto, quel campo ti occupa la lunghezza effettivamente "riempita". Un varchar(30) valorizzato alla stringa 'ciao' occuperà effettivamente 4bytes. Si usa quando l'informazione da immagazzinare in quel campo è molto variabile (un indirizzo, un nome, un cognome, ecc..)

a parità di lunghezza char potrebbe occupare di più, inoltre il varchar è più performante in alcuni casi:
- spazio in memoria (riduce le operazioni di IO in lettura dalla memoria aumentando le performance di sql server)
- gli algoritmi di sort sono più efficienti (il char deve essere ordinato per tutta la sua lunghezza)



Alx81 =)

http://blogs.dotnethell.it/suxstellino
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5