PROBLEMA UPDATE RECORD SQLSERVER 2000

venerdì 11 maggio 2007 - 10.45

federico1111 Profilo | Newbie

Buongiorno a tutti

Ecco il mio problema:

lavoro con sql sever 2000

ho una tabella del tipo

id_operazione bigint
nomeoperazione varchar
letta bit

.

eseguo una UPDATE DAL QUERY ANALIZER

UPDATE NOMETABELLA SET LETTA=1 WHERE ID_OPERAZIONE=1000


PER ALCUNI ID_OPERAZIONE TALE OPERAZIONE VA IN TIMEOUT MENTRE PER ALTRI FUNZIONA PERFETTAMENTE

NON SO DAVVERO SPIEGARMI IL MOTIVO!

SAPETE DARMI UNA MANO?

GRAZIE CIAO
FEDERICO

lbenaglia Profilo | Guru

>ho una tabella del tipo
>
>id_operazione bigint
>nomeoperazione varchar
>letta bit
>
>.
>
>eseguo una UPDATE DAL QUERY ANALIZER
>
>UPDATE NOMETABELLA SET LETTA=1 WHERE ID_OPERAZIONE=1000
>
>
>PER ALCUNI ID_OPERAZIONE TALE OPERAZIONE VA IN TIMEOUT MENTRE
>PER ALTRI FUNZIONA PERFETTAMENTE
>
>NON SO DAVVERO SPIEGARMI IL MOTIVO!
>
>SAPETE DARMI UNA MANO?

Ciao Federico,

Detta così è un po' difficile individuare la causa, non trovi?
- Quante righe ha quella tabella?
- Come è indicizzata?
- Sono aggiornate le statistiche?

>GRAZIE CIAO
Prego.

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

federico1111 Profilo | Newbie

HAI RAGIONE SCUSA MA SONO NUOVO

LA TABELLA HA 72992 RIGHE

L'INDICE è POSTO SULL'ID_OPERAZIONE E LE STATISTICHE SONO AGGIORNATE

lbenaglia Profilo | Guru

>LA TABELLA HA 72992 RIGHE
OK, sono pochine...

>L'INDICE è POSTO SULL'ID_OPERAZIONE E LE STATISTICHE SONO AGGIORNATE
- Che tipo di indice è? Clustered o non clustered?
- Com'è il suo stato di frammentazione (DBCC SHOWCONTIG)?
- Se è frammentato, hai provato a ricostruirlo tramite una DBCC DBREINDEX?

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

federico1111 Profilo | Newbie

Scusa la tabella ha due indici uno clustered sul idoperazione ed
uno nopn clustered sul campo nome operazione.

il risultato di DBCC SHOWCONTIG


È in corso la scansione della tabella 'Programmazioni' eseguita tramite DBCC SHOWCONTIG...
Tabella: 'Programmazioni' (771533832), ID di indice: 1, ID di database: 7
È stato eseguita la scansione del livello TABLE.
- Pagine sottoposte a scansione................................: 4618
- Extent sottoposti a scansione..............................: 584
- Opzioni di extent..............................: 1941
- Media pagine per extent........................: 7.9
- Densità di scansione [conteggio ottimale:conteggio effettivo].......: 29.76% [578:1942]
- Frammentazione scansione logica ..................: 17.11%
- Frammentazione scansione di extent ...................: 47.60%
- Media byte disponibili per pagina.....................: 1617.2
- Media densità pagina (completa).....................: 80.02%
Esecuzione DBCC completata. Se sono stati visualizzati messaggi di errore DBCC, rivolgersi all'amministratore di sistema.


io ho eseguito la dbcc indexdefrag che differenza c'è tra questa istruzione e la dbcc DBREINDEX?

grazie

lbenaglia Profilo | Guru

>Scusa la tabella ha due indici uno clustered sul idoperazione
>ed
>uno nopn clustered sul campo nome operazione.
OK

>- Densità di scansione [conteggio ottimale:conteggio effettivo].......:
>29.76% [578:1942]
>- Frammentazione scansione logica ..................: 17.11%
>- Frammentazione scansione di extent ...................: 47.60%
>- Media byte disponibili per pagina.....................: 1617.2
>- Media densità pagina (completa).....................: 80.02%

L'indice clustered (ID di indice: 1) è un po' frammentato.
Ricostruiscilo con il comando che ti ho indicato.

>io ho eseguito la dbcc indexdefrag che differenza c'è tra questa
>istruzione e la dbcc DBREINDEX?
Dai BOL:

Reorganizing an index defragments the leaf level of clustered and nonclustered indexes on tables and views by physically reordering the leaf-level pages to match the logical order (left to right) of the leaf nodes. Having the pages in order improves index-scanning performance. The index is reorganized within the existing pages allocated to it; no new pages are allocated. If an index spans more than one file, the files are reorganized one at a time. Pages do not migrate between files.

...

Rebuilding an index drops the index and creates a new one. In doing this, fragmentation is removed, disk space is reclaimed by compacting the pages using the specified or existing fill factor setting, and the index rows are reordered in contiguous pages (allocating new pages as needed). This can improve disk performance by reducing the number of page reads required to obtain the requested data.

"Reorganizing and Rebuilding Indexes"
http://msdn2.microsoft.com/en-us/library/ms189858.aspx

>grazie
Prego.

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

federico1111 Profilo | Newbie

Ho usato la dbreindex ma non riesce a cancellare e costruire l'indice non clustered sul campo varchar.

Ho provato a visulizzare il query plan sull'istruzione di update che non riesco ad eseguire

ma resta in loop e non riesco a capire se l'efficienza dell'indice


Grazie

lbenaglia Profilo | Guru

>Ho usato la dbreindex ma non riesce a cancellare e costruire
>l'indice non clustered sul campo varchar.
Che errore ricevi?

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

federico1111 Profilo | Newbie

Il problema è che non ricevo nessun errore ...
Ho anche provato a cancellare a mano l'indice ma si blocca devo terminare Enterprise Manager con task Manager


lbenaglia Profilo | Guru

>Il problema è che non ricevo nessun errore ...
>Ho anche provato a cancellare a mano l'indice ma si blocca devo
>terminare Enterprise Manager con task Manager
No, fermo, non usare EM... è il male

Apri Query Analyzer e richiama la seguente stored procedure:

EXEC sp_helpindex <nome tabella>;

Prendi nota del nome dell'incide clustered.
Ora ricostruiscilo:

DBCC DBREINDEX (<nome tabella>, <nome indice>);

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

federico1111 Profilo | Newbie

Ti ringrazio per il suggerimento ora sono riuscito a ricostruire l'indice Cluster
Ero già riuscito a ricostruire l'indice con la INDEXDEFRAG ma il problema rimane su quello NO CLUSTERED

Devo provare a ricostruire anche quest'ultimo


Grazie in anticipo

lbenaglia Profilo | Guru

>Ero già riuscito a ricostruire l'indice con la INDEXDEFRAG ma
>il problema rimane su quello NO CLUSTERED
>
>Devo provare a ricostruire anche quest'ultimo
Fermo lì
Quando ricostruisci un indice clustered automaticamente ricostruisci anche tutti i non clustered della tabella.

>Grazie in anticipo
Prego.

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

federico1111 Profilo | Newbie

Ti ringrazio davvero per l'aiuto di oggi .

Ti contatterò nei prossimo giorni per problemi sulla compattazione
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5