Oracle улучшен с помощью рельсов 3.1 - PullRequest
0 голосов
/ 12 марта 2012

Мы перенесли наше приложение с Rails 2.2 на rails 3.1 и начали использовать activerecord-oracle_enhanced-adapter-1.4.1

Я вижу этот sql в своих журналах при загрузке приложения и при поступлении любого запроса на сервер.

  (102.0ms)  SELECT DECODE(table_name, UPPER(table_name), LOWER(table_name), table_name) FROM all_tables WHERE owner = SYS_CONTEXT('userenv', 'session_user') AND secondary = 'N'
   (102.4ms)  SELECT DECODE(table_name, UPPER(table_name), LOWER(table_name), table_name) FROM all_tables WHERE owner = SYS_CONTEXT('userenv', 'session_user') AND secondary = 'N'
   (101.2ms)  SELECT DECODE(table_name, UPPER(table_name), LOWER(table_name), table_name) 
.....

Почти 21 запрос одновременно ..

Когда я копаюсь в библиотеке, источником утверждения является

 class OracleEnhancedAdapter 
    def tables

Может кто-нибудь сказать мне, почему эти sqls запускаются каждый раз. Такое поведение не было замечено в рельсах 2.2.

Влияет ли это на производительность приложения или это рутина?

1 Ответ

1 голос
/ 12 марта 2012

Это происходит при первом обращении к приложению.ActiveRecord довольно обычно получает список имен таблиц из базы данных для подключенного пользователя.

Этот запрос будет запущен только один раз (не для каждого запроса, а каждый раз при запуске сервера).Это зависит от реализации адаптера базы данных.

Например, гем sqlite3-ruby запускает эквивалентный запрос:

SQL (0,6 мс).таблица 'И НЕ имя =' sqlite_sequence '

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...