Schema di blocco ottimale della tabella Sybase ASE a per la tabella dei codici di riferimento

StackOverflow https://stackoverflow.com/questions/5411111

  •  29-10-2019
  •  | 
  •  

Domanda

Ho una tabella dei codici di riferimento che verrà letta solo durante il normale utilizzo e dovrebbe essere aggiornata solo in caso di modifiche al prodotto (mensilmente).

Quale blocco di tabella dovrei usare nell'istruzione create table?

Stavo assumendo ALLPAGES perché questo mantiene il numero totale di blocchi di lettura che ASE deve gestire;ma sto ricevendo diversi "consigli" da un altro sviluppatore sul progetto.

Vedo altre tabelle di riferimento nel DB in questione che utilizzano ALLPAGES;ma sono stati aggiornati dalla 12.5, potrebbe essere solo un residuo di ciò che era disponibile allora.

La tabella non è molto ampia, ha due colonne ID codice numerico, una colonna char (1) ed è raggruppata sui due codici numerici.

È stato utile?

Soluzione

Ho solo una risposta ovvia: esegui sp_object_stats all'inizio e scegli lo schema di blocco.

Altri suggerimenti

Se la tabella di riferimento è solo per la lettura, il blocco di tutte le pagine è il migliore in quanto richiede il minor numero di blocchi (che hai detto) e non c'è conflitto sui blocchi condivisi che i processi acquisiscono durante la lettura dei dati.

Solo per darti un ulteriore suggerimento sulle prestazioni: prova sempre a utilizzare una tabella di riferimento tramite una sottoquery correlata per sfruttare il vantaggio della memorizzazione nella cache delle sottoquery.Ricorda inoltre che la memorizzazione nella cache delle sottoquery avviene solo quando la sottoquery non è stata appiattita dall'ottimizzatore e non è stata riconvertita in un normale join.Il trucco per garantire che la sottoquery non sia appiattita è utilizzare una funzione aggregata, ad esempio max (attr), sull'attributo.La funzione max sarà solo fittizia senza alcun "Gruppo per".

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top