sql >> Database >  >> RDS >> Oracle

Slaapstand geparametriseerde sql-query langzame en actieve Oracle-sessies

Ik weet niet of dit uw probleem is, maar Oracle gluurt naar de waarden van bindvariabelen bij het ontleden van een query en slaat vervolgens het queryplan op voor toekomstige uitvoeringen, zodat het de query niet telkens hoeft te ontleden wanneer het wordt uitgevoerd met een nieuwe set van bindvariabelen. Maar af en toe wordt de query opnieuw geparseerd. Als er tijdens een parse ongewone waarden van bindingsvariabelen worden doorgegeven, wordt een slecht plan opgeslagen en gebruikt. Het is een soort vloek van bindvariabelen. Ze verminderen het parseren, maar kunnen het plan omdraaien op atypische waarden van bindvariabelen wanneer query's opnieuw worden geparseerd. Tips kunnen helpen. We gebruiken SQL-profielen om plannen van query's vast te leggen met bindvariabelen die de neiging hebben om plannen te wijzigen. Soms kunt u aanpassen wanneer en hoe optimalisatiestatistieken worden verzameld, zodat een goed plan wordt gemaakt, ongeacht welke waarden worden doorgegeven aan de bindvariabelen.

Hoe dan ook, het is iets dat ik de hele tijd zie en het kan wel of niet jouw probleem zijn.

Bobby




  1. SQLite geaggregeerde functies

  2. Hoe RADIANS() werkt in MariaDB

  3. T-SQL en de WHERE LIKE %Parameter%-clausule

  4. Heeft het zin om een ​​index te gebruiken die een lage kardinaliteit heeft?