Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Hibernate parametrisierte SQL-Abfrage langsam und aktive Oracle-Sitzungen

Ich weiß nicht, ob dies Ihr Problem ist, aber Oracle wirft beim Analysieren einer Abfrage einen Blick auf die Bind-Variablenwerte und speichert dann den Abfrageplan für zukünftige Ausführungen, damit die Abfrage nicht jedes Mal analysiert werden muss, wenn sie mit einer neuen ausgeführt wird Satz von Bind-Variablen. Aber hin und wieder wird die Abfrage neu geparst. Wenn während einer Analyse ungewöhnliche Bind-Variablenwerte übergeben werden, wird ein fehlerhafter Plan gespeichert und verwendet. Es ist eine Art Fluch der Bind-Variablen. Sie reduzieren das Parsen, können aber den Plan bei atypischen Bind-Variablenwerten umkehren, wenn Abfragen erneut analysiert werden. Hinweise können helfen. Wir verwenden SQL-Profile, um Pläne von Abfragen mit Bind-Variablen zu sperren, die dazu neigen, Pläne zu ändern. Manchmal können Sie anpassen, wann und wie Optimierer-Statistiken gesammelt werden, sodass unabhängig davon, welche Werte an die Bind-Variablen übergeben werden, ein guter Plan erstellt wird.

Wie auch immer, es ist etwas, das ich die ganze Zeit sehe und möglicherweise Ihr Problem ist oder auch nicht.

Bobby