sql >> Database >  >> RDS >> Oracle

Hoe om te gaan met grote transacties onder Oracle?

Oracle maakt een cursor voor elke resultatenset en geeft deze vrij bij het sluiten van de resultatenset (jdbc ResultSet.close() of iets dergelijks). De standaardinstelling van 50 open cursors per sessie is genoeg voor elke goed ontworpen toepassing (toen ik het eenmaal gemeten had, en in productiemodus kwam het nooit hoger dan 20).

U moet controleren hoe u Hibernate kunt maken om resultatensets te sluiten na het ophalen. Over het algemeen kan ik me niet voorstellen wat een sessie zou moeten doen als er echt 1000 open cursors voor nodig zijn. Ik heb max_open_cursors nooit meer dan 1000 sets gezien, dus ik denk dat het ook genoeg is voor slecht ontworpen applicaties (maar... er is geen limiet voor perfectie in nuchtere zin, en ik gebruik nooit Hibernate).

Elke cursor betekent wat geheugen, dus het verhogen van max_open_cursors is geen tijdelijke oplossing.



  1. Een blog maken in PHP en MySQL-database - Backend

  2. Spring-Boot, kan unicode-tekenreeks niet opslaan in MySql met spring-data JPA

  3. Procedure om door komma's gescheiden string te doorlopen werkt niet

  4. Paypal php MySQL integratie tutorial