Domanda

Sto lavorando con Sybase 15 nella mia applicazione e si verificano problemi di prestazioni relativi ai join annidati.Ho memorizzato una procedura che seleziona 2 colonne da 2 tabelle e confronta le uguaglianze di oltre 10 colonne tra queste 2 tabelle.Ma quando eseguo questo stor.proc., il risultato impiega 40 minuti.Ho aggiunto l'istruzione "set merge-join off" all'inizio del mio processo, quindi il risultato richiede 22 secondi.ma ho bisogno di un'altra soluzione senza quella.Prima utilizzavo Sybase 12.5 e non si sono verificati problemi del genere e la mia procedura ha richiesto 3 minuti per ottenere il risultato.

Ho confrontato le configurazioni del server con sp_configure tra 15 e 12.5 e le configurazioni del server sybase15 (impostazioni di configurazione di I/O e memoria) sono più grandi del server sybase12.5.

Informazioni:Le risorse di sistema del PC individuate da sybase15 sono davvero buone.

È stato utile?

Soluzione

Ho appena trascorso 14 ore di lavoro di debug problemi di prestazioni critiche emerse da una migrazione Sybase 15 durante il fine settimana.

L'ottimizzatore di query ha fatto (per noi) alcune decisioni molto strane.

Prendiamo un esempio,

select a, b, c from table1, table2, table3 where ...

vs

create table #temp (col1 int, col2 int, ... etc)

insert #temp
select a, b, c from table1, table2, table3 where ...

Abbiamo avuto la prima esecuzione in tempo utile, e non poteva farlo a prendere la decisione corretta nel secondo esempio, nonostante un'ampia rielaborazione. Abbiamo anche preso la query in disparte, in tabelle temporanee, ma ancora ottenuto risultati insoliti.

Alla fine abbiamo fatto ricorso a SET FORCEPLAN ON per alcune query - questo è dopo 10 ore di avere i nostri DBA e Sybase sulla linea. La soluzione venne dagli sviluppatori di applicazioni anche piuttosto che qualche consiglio dai tecnici Sybase.

Quindi, per risparmiare un po 'di tempo, prendere questa strada è il mio suggerimento.

Altri suggerimenti

Come gli altri, ho commiserazione più che una vera risposta!Stiamo riscontrando un problema in cui il query planner ASE 15 sottostima enormemente il costo di una scansione di tabella e allo stesso modo sovrastima il costo dell'utilizzo dell'indice cluster.Ciò fa sì che il piano suggerito sia un'unione di unione.Disabilitare i merge join o impostare l'obiettivo opt allrows_oltp A volte si traduce in un piano di query migliore.I costi stimati sono ancora lontani, ma eliminando un'opzione dal tavolo il query planner potrebbe trovare una buona soluzione, anche se attraverso l'analisi sbagliata.

I documenti ASE 15 affermano che ha un set di algoritmi molto più pulito mentre il pianificatore ASE 12 aveva una serie di casi speciali.Forse un caso speciale che dice "se hai la colonna dell'indice cluster nel join sarà più veloce della scansione di una tabella" non sarebbe una cattiva idea...:(

Sybase ha riscritto in modo efficace il motore di query per la versione 15 il che significa che le query che correvano super-veloce su 12.x possono funzionare molto più lento della versione più recente, e viceversa. L'unico modo per eseguire il debug di questo è quello di confrontare il piano di query 12.x per il piano di query 15 e vedere ciò che è stato fatto in modo diverso.

tutti gli interessati a questo problema dovrebbe leggere questo documento:

http: // www. sybase.com/files/White_Papers/ASE15-Optimizer-Best-Practices-v1-051209-wp.pdf

E 'un avvertimento candida sulla migrazione da Sybase 12 a Sybase 15.

Quoteth:

  

... non trattare ASE 15 come "solo   un'altra release". Per quanto ci sarebbe   come a dire che si può semplicemente   l'aggiornamento e la tua applicazione su   i server aggiornati, la profondità e la   ampiezza di variazione di una delle più   aree fondamentali di una banca dati, interrogazione   esecuzione, richiede una più mirata   regime di prova. Questo documento è inteso   di fornire con i fatti chiari   e le migliori pratiche per ridurre questo   sforzo, per quanto praticamente   possibile.

Si va avanti a parlare della nuova ASE 15 Query Optimizer, vis-a-vis query OLTP e DSS (Decision Support System) query.

Tuttavia , c'è buona notizia : nel marzo 2009, Sybase 15.0.3 ha introdotto una modalità di compatibilità. Vedere il seguente documento:

http://www.sybase.com/detail?id=1063556

Con questa modalità, non è necessario analizzare le query di decidere se si inseriscono i profili OLTP o DSS.

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