Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да обработваме големи транзакции под Oracle?

Oracle създава курсор за всеки набор от резултати и го освобождава при затваряне на набора от резултати (jdbc ResultSet.close() или подобен). По подразбиране 50 отворени курсора на сесия са достатъчни за всяко добре проектирано приложение (веднъж го измерих и в режим на производство никога не е надвишавал 20).

Трябва да проверите как да накарате Hibernate да затваря набори от резултати след извличане. Като цяло не мога да си представя какво трябва да прави сесията, ако наистина изисква 1000 отворени курсора. Никога не съм виждал max_open_cursors повече от 1000, така че, предполагам, това е достатъчно и за приложения с лош дизайн (но... няма ограничение за съвършенството в трезвия факт и никога не използвам Hibernate).

Всеки курсор означава малко памет, така че увеличаването на max_open_cursors не е заобиколно решение с нулева цена.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Проблем с производителността при актуализиране на таблица от друга таблица

  2. Проблем с кодирането на отговора на Oracle PL/SQL HTTP заявка

  3. ORA-00913 твърде много стойности

  4. HikariCP 1.4.0 MBean InstanceNotFoundException

  5. подзаявката връща повече от един ред