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

Потребителско дефинирана рутина с DBMS_STATS, част II

Имах предишна публикация за потребителски дефинирани рутини с DBMS_STATS. След още малко ровене установих как работи това. Имам някои данни в моята база данни, които се съхраняват в тип, определен от потребителя. Ако имате дефиниран от потребителя тип, можете да свържете вашата рутина за събиране на дефинирана от потребителя статистика с интерфейса на Oracle Data Cartridge Interface (ODCI). Подпрограмата ODCIStatsCollect се извиква автоматично, когато DBMS_STATS се извика в таблицата, която съдържа този дефиниран от потребителя тип.

В моя случай проследих високото използване на процесора до един SQL израз, който доставчикът на приложения от трета страна постави в своята рутина ODCIStatsCollect. В този момент това просто се превръща в проблем с настройката на заявката. Как можем да напишем заявката, така че да използва по-малко CPU? След като разгледах проблема, реших, че най-лесният начин е да извадя подзаявката и да сложа резултатите в глобална временна таблица. След това накарайте останалата част от заявката да се присъедини към GTT, вместо да се присъедини към самата подзаявка. По този начин използването на процесора беше драстично намалено. Изпратих поправката на доставчика на приложението и чакам да видя какво ще кажат.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. COSH() Функция в Oracle

  2. Не позволявайте на потоците да ви заблуждават

  3. Oracle IN срещу Съществува ли разлика?

  4. 12c Автоматично попълване на колона със стойност на последователността

  5. Дата на Oracle между заявката