sql >> Database teknologi >  >> RDS >> Oracle

Vent Begivenhed:Ændring af størrelse på asynkronbeskrivelse

I min nyligt opgraderede produktionsdatabase ser jeg en række SQL-sætninger, der nu oplever høje ventetider på hændelsen "asynch descriptor resize". Jeg har for nylig opgraderet fra 11.1.0.7 til 11.2.0.2, og SQL-sætninger, der aldrig har ventet på denne begivenhed, bliver nu fanget.

Oracle 11.2 ændrede lidt den måde, databasen og OS-kernen udførte asynkrone I/O-kald på. Det, der sker, er, at der er en række asynkrone I/O-deskriptorer for at kunne håndtere de asynkrone I/O-opkald. Når antallet af asynkrone I/O-kald stiger, stiger antallet af deskriptorer også. Når antallet af asynkrone I/O-kald falder, reduceres antallet af deskriptorer på lignende måde.

Før Oracle kan øge antallet af deskriptorer, skal det vente på, at alle processer, der i øjeblikket udfører async I/O, fuldfører deres I/O-kald. Denne forfærdelige handling dræber virkelig den "asynkrone" del af I/O! Når alle processer har fuldført deres I/O-kald, kan Oracle derefter ændre beskrivelserne op eller ned afhængigt af arbejdsbelastningen.

Hvis din proces lige er færdig med at fuldføre dens asynkrone I/O, før den kan foretage endnu et asynch I/O-kald, skal den vente på, at Oracle ændrer antallet af deskriptorer. Som sådan venter du på ventehændelsen "asynch descriptor resize".

Dette ser ud til at være Bug 9829397, og du kan downloade en patch til det fra Metalink. Dette problem er rettet i 11.2.0.3, så det vises kun i 11.2.0.1 og 11.2.0.2. En løsning er at deaktivere Asynch I/O, men for mig er den løsning meget uønsket. Man kan også reducere forekomsterne af denne ventehændelse ved at reducere deres direkte I/O og tune deres SQL-sætninger.


  1. Hvordan læser og opdaterer jeg SQLite-database ved hjælp af ListView i Android?

  2. Få visningsoplysninger med VIEWS Information Schema View i SQL Server

  3. Neo4j - Slip en begrænsning ved hjælp af Cypher

  4. Understøtter Microsoft OLE DB Provider til SQL Server TLS 1.2