Доброе утро,
Я получил запрос на обновление схемы от нашей команды разработчиков.Они хотели добавить столбец в одну из наших таблиц, и некоторые производственные БД содержали более 7 записей в билете.
Моя версия ora 11.2.0.4, параметр совместимости также установлен на 11.2.
Столбец, который они хотели добавить, был следующим:
изменить событие таблицы add (вставлена временная метка по умолчанию sys_extract_utc (systeimstamp) не ноль);
Я проверил это на небольших БД, и он работал нормально.Затем я попробовал таблицу большего размера (2 миллиарда записей), и она просто продолжала работать.
Сессия показала МНОГО физического чтения
Насколько я понимаю, с 11.2.0.4 такое добавление выполняется напрямуюпо словарю данных.(пожалуйста, исправьте меня, если я ошибаюсь).
В любом случае, для целей тестирования, я изменил вышеупомянутое утверждение и вместо вызова функции (sys_extract_utc) я ввел значение метки времени, выбрав его из двойного, так что мой запрос стал:
изменить событие таблицы add (вставленная метка времени по умолчанию '04 -FEB-19 11: 06.11.101700 PM 'не ноль);
Это запустилось в МИЛЛИСЕКОНДАХ.
Сейчася пытаюсь понять, почему этот был быстрее по сравнению с другим?это из-за вызова функции?
добавляет ли oracle что-то дополнительное, когда мы задаем динамическое значение, подобное этому, во время добавления столбцов?, может быть, я что-то пропускаю?
Оцените помощь.
Спасибо