Condividi tramite


Motivi della mancata ottimizzazione degli eventi

In questo argomento vengono elencati i motivi più comuni per cui gli eventi non vengono ottimizzati e le modalità utilizzate da Ottimizzazione guidata motore di database per la scelta del database corretto in cui eseguire gli eventi di ottimizzazione.

Motivi comuni della mancata ottimizzazione degli eventi

Presupponendo che il database in cui l'evento è stato eseguito originariamente sia stato identificato in modo corretto, come descritto nella sezione seguente, gli eventi potrebbero non essere ottimizzati per i motivi seguenti:

  • Gli eventi fanno riferimento a tabelle non selezionate per l'ottimizzazione.
  • Gli eventi fanno riferimento a tabelle di dimensioni molto piccole composte da meno di dieci pagine.

[!NOTA] Per verificare il numero di pagine in una tabella Microsoft SQL Server 2000, utilizzare la colonna dpages della tabella di sistema sysindexes. Per verificare il numero di pagine in una tabella Microsoft SQL Server 2005, utilizzare la colonna used_page_count della vista del catalogo sys.dm_db_partition_stats.

  • Il tempo specificato dall'utente non è sufficiente per l'ottimizzazione della query tramite Ottimizzazione guidata motore di database.
  • Gli eventi fanno riferimento a tabelle in cui è stato quasi raggiunto il numero massimo di indici ed è stata selezionata l'opzione per il mantenimento di tutti gli indici esistenti. In questo caso, in tali tabelle non è possibile inserire ulteriori indici.
  • Molte istruzioni DML, ad esempio INSERT, UPDATE e DELETE, vengono eseguite nella tabella sottostante per l'evento. L'aggiunta di ulteriori indici o viste indicizzate può provocare un calo delle prestazioni delle tabelle sottostanti.
  • Sono state specificate le opzioni di ottimizzazione seguenti:
    • Vi è un limite per il numero massimo di colonne.

    • Lo spazio su disco specificato per l'archiviazione è insufficiente oppure nel database vi sono troppi indici e viste indicizzate e per l'ottimizzazione è stato impostato uno spazio su disco inadeguato.

      [!NOTA] È possibile specificare un limite relativo allo spazio su disco per le indicazioni di ottimizzazione tramite la finestra di dialogo Opzioni di ottimizzazione avanzate nell'interfaccia utente grafica di Ottimizzazione guidata motore di database oppure specificando un valore per l'argomento -B quando si utilizza l'utilità da riga di comando dta.

Modalità di determinazione del database corretto per gli eventi di ottimizzazione tramite Ottimizzazione guidata motore di database

A seconda del tipo di file del carico di lavoro da ottimizzare utilizzato e delle opzioni specificate per l'ottimizzazione dei carichi di lavoro, tramite Ottimizzazione guidata motore di database viene scelto il database corretto per l'esecuzione degli eventi di ottimizzazione, in base a quanto indicato di seguito:

Per i file script SQL (sql) del carico di lavoro da ottimizzare

  • Se si specifica un nome di database con uno degli elementi seguenti:
    • Argomento -d per l'utilità da riga di comando dta
    • Elemento DatabaseToConnect nel file di input XML
      Tramite queste opzioni è possibile impostare il database predefinito a cui si connette Ottimizzazione guidata motore di database prima di iniziare una sessione di ottimizzazione. Dopo tale connessione iniziale al database, in Ottimizzazione guidata motore di database ogni istruzione USE database_name nello script viene utilizzata per modificare il contesto del database per le istruzioni successive.
  • Se non si specifica esplicitamente la connessione iniziale al database per una sessione di ottimizzazione, in Ottimizzazione guidata motore di database viene utilizzato il database predefinito definito per l'accesso specificato nel server al momento dell'ottimizzazione. Dopo la connessione iniziale al database, tramite Ottimizzazione guidata motore di database viene modificato il contesto del database per le istruzioni successive nello stesso modo utilizzato quando si specifica esplicitamente la connessione iniziale. In Ottimizzazione guidata motore di database vengono utilizzate le istruzioni USE database_name per la determinazione del contesto del database.

Per i file di traccia (trc) del carico di lavoro da ottimizzare

Quando si utilizzano i file di traccia, tramite Ottimizzazione guidata motore di database viene scelto il database in cui eseguire gli eventi per ogni SPID (Server Process ID, ID processo server) specificato nella traccia. Se non è specificato alcun SPID, viene utilizzato lo stesso SPID per tutti gli eventi contenuti nella traccia. Il database per ogni SPID viene scelto da Ottimizzazione guidata motore di database in base a quanto indicato di seguito:

  1. DatabaseName è presente nella traccia.
    Se nel file di traccia è presente il campo DatabaseName, tale campo viene utilizzato da Ottimizzazione guidata motore di database per determinare il database in cui analizzare l'evento. Tutte le altre informazioni vengono ignorate. Se il campo DatabaseName non è presente, viene eseguito quanto descritto al passaggio 2.
  2. DatabaseID è presente nella traccia, mentre DatabaseName no.

Se nel file di traccia è presente il campo DatabaseID, tale campo viene utilizzato da Ottimizzazione guidata motore di database per determinare il database in cui analizzare l'evento. Il campo DatabaseID è mappato al nome del database. Ottimizzazione guidata motore di database, tuttavia, non consente di stabilire se i campi DatabaseID sono stati modificati da quando è stata raccolta la traccia. Se non si è sicuri che il mapping tra DatabaseID e DatabaseName sia aggiornato, rimuovere il campo DatabaseID dal file di traccia del carico di lavoro. Tutte le altre informazioni vengono ignorate. Se non è presente né il campo DatabaseName, né il campo DatabaseID, viene eseguito quanto descritto al passaggio 3.

  1. Nella traccia non è presente né DatabaseName, né DatabaseID.
    Se nella traccia non è presente né il campo DatabaseName, né il campo DatabaseID, il database in cui eseguire l'evento viene determinato da Ottimizzazione guidata motore di database nello stesso modo utilizzato per i file script SQL del carico di lavoro da ottimizzare. Il processo è descritto nella sezione Per i file script SQL (sql) del carico di lavoro da ottimizzare.

Vedere anche

Concetti

Determinazione degli eventi che è possibile ottimizzare

Guida in linea e informazioni

Assistenza su SQL Server 2005