none
Perchè REORGANIZE o REBUILD INDEX non funziona RRS feed

  • Domanda

  • Salva a tutti,

    Ho eseguito il report standard "Index physical statistics" tramite l'SQL Server Management Studio e per gli indici di una tabella e per due di questi mi viene consigliato REORGANIZE per uno e REBUILD per l'altro (15% e 54% di frammentazione). Ho quindi eseguito il comando consigliato da menù, che non mi ha segnalato errori, ho aggiornato il report e, con mia sorpresa, ho letto gli stessi valori; ho provato a scrivere una Stored Procedure con i rispettivi comandi e l'ho eseguita, sempre senza errori, ma purtroppo il report continua a consigliarmi le stesse azioni, come se non avessi eseguito alcunchè.

    Esiste un motivo per cui riorganizzare o ricostruire gli indici di una tabella non riesce, senza alcuna segnalazione ?

    L'indice al 15% è così definito:

    USE [tm_db]
    GO
    
    /****** Object:  Index [PK_packing_id_packing]    Script Date: 04/10/2021 22:08:53 ******/
    ALTER TABLE [dbo].[packing] ADD  CONSTRAINT [PK_packing_id_packing] PRIMARY KEY CLUSTERED 
    (
    	[id_packing] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    GO

    mentre quello al 50 %

    USE [tm_db]
    GO
    
    /****** Object:  Index [packing$refid_comp]    Script Date: 04/10/2021 22:10:38 ******/
    CREATE NONCLUSTERED INDEX [packing$refid_comp] ON [dbo].[packing]
    (
    	[refid_component] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    G

    Se serve, posso postare altro.

    Grazie

    lunedì 4 ottobre 2021 20:11

Risposte

  • Ho eseguito un pò di prove ed in effetti con una tabella con molti dati funziona senza probemi; se, invece, la tabella contiene pochi dati e magari alcuni sono stati inseriti e poi cancellati (che è poi la situazione che mi sono trovato a fronteggiare da cui è scaturita questa domanda), la deframmentazione non ha effetto.

    Grazie dell'aiuto

    mercoledì 13 ottobre 2021 09:33
  • In generale, la frammentazione su piccoli indici spesso non è controllabile. Le pagine di piccoli indici vengono talvolta archiviate su estensioni miste. Le estensioni miste sono condivise da un massimo di otto oggetti, quindi la frammentazione in un piccolo indice potrebbe non essere ridotta dopo la riorganizzazione o la ricostruzione dell'indice.
    Dipende quindi dalla grandezza di detti indici.
    Sono grandi?
    Condivisi con molte persone in azienda?

    • Microsoft offre questo servizio gratuitamente, per aiutare gli utenti e aumentare il database dei prodotti e delle tecnologie. Il contenuto fornito “as is“ non comporta alcuna responsabilità da parte dell’azienda.

    giovedì 7 ottobre 2021 13:38
    Moderatore

Tutte le risposte

  • In generale, la frammentazione su piccoli indici spesso non è controllabile. Le pagine di piccoli indici vengono talvolta archiviate su estensioni miste. Le estensioni miste sono condivise da un massimo di otto oggetti, quindi la frammentazione in un piccolo indice potrebbe non essere ridotta dopo la riorganizzazione o la ricostruzione dell'indice.
    Dipende quindi dalla grandezza di detti indici.
    Sono grandi?
    Condivisi con molte persone in azienda?

    • Microsoft offre questo servizio gratuitamente, per aiutare gli utenti e aumentare il database dei prodotti e delle tecnologie. Il contenuto fornito “as is“ non comporta alcuna responsabilità da parte dell’azienda.

    giovedì 7 ottobre 2021 13:38
    Moderatore
  • Buongiorno, 

    Per poter aiutarle, avremo bisogno delle informazioni richieste, se le e possibile di fornirli? 


    • Microsoft offre questo servizio gratuitamente, per aiutare gli utenti e aumentare il database dei prodotti e delle tecnologie. Il contenuto fornito “as is“ non comporta alcuna responsabilità da parte dell’azienda.

    martedì 12 ottobre 2021 07:16
    Moderatore
  • Ho eseguito un pò di prove ed in effetti con una tabella con molti dati funziona senza probemi; se, invece, la tabella contiene pochi dati e magari alcuni sono stati inseriti e poi cancellati (che è poi la situazione che mi sono trovato a fronteggiare da cui è scaturita questa domanda), la deframmentazione non ha effetto.

    Grazie dell'aiuto

    mercoledì 13 ottobre 2021 09:33
  • Ciao,

    in aggiunta alle indicazioni di Yordan, per l'impostazione della strategia di manutenzione database (BACKUP, UPDATE STATS, INDEX REBUILD/REORG, ecc..) consiglio di utilizzare la siute SQL Server Maintenance Solution disponibile a questo link:

    https://ola.hallengren.com/

    In particolare, segnalo la stored procedure dbo.IndexOptimize :)

    Ciao!


    Sergio Govoni

    Microsoft Data Platform MVP | MVP Profile | English Blog | Twitter | LinkedIn

    sabato 30 ottobre 2021 05:54
    Moderatore