Возможно, стоило выражаться точнее. Я имел в виду сравнительно редкие / мало влияющие на относительно распространенные сценарии использования ситуации. Те же хэш-коллизии в SSC и Deterministic — не думаю, что частый случай. Аналогично и с оптимизацией в циклах. Аналогично, понимание специфики реализации (в т.ч. роли внутренних недокументированных параметров), безусловно, полезно, но и без него инструмент можно и нужно применять.
Все остальное уже знали? Читали мои статьи?
Кроме 1, 3.3 и 3.4 — да, знал. Пункт 4 — «знал, но забыл» — когда-то давно читал про это в вашей или очень похожей на вашу статье (жаль, что ваш сайт плохо ищется в Google, возможно, где-то видел перепечатку)
Спасибо! Вы свели действительно огромное количество граничных юзкейсов в одном месте.
Для меня лично открытием оказалась возможность «грязных чтений» при использовании функций в запросах. На практике с таким сталкиваться, правда, не приходилось, но, как говорится, «век живи — век учись» :-)
Одна небольшая ремарка: наименование пункта «Кэширование deterministic функций в PL/SQL» не совсем соответствует действительности — все-таки, вернее было бы «Кэширование deterministic функций в циклах PL/SQL». И, если говорить про этот сценарий, как вы правильно процитировали того же Фойерштайна, «похоже, что применимость этих оптимизаций будет весьма узкой»
Добрый день!
На уровне экземпляра (не знаю, как работает в PDB, думаю, затронет только конкретный контейнер) можно еще использовать:
alter system set fixed_date = '2017-04-01 12:34:56';
и затем после тестов
alter system set fixed_date = 'NONE';
Спасибо! Отличное и очень простое объяснение не очень простых вещей
Возможно, стоило выражаться точнее. Я имел в виду сравнительно редкие / мало влияющие на относительно распространенные сценарии использования ситуации. Те же хэш-коллизии в SSC и Deterministic — не думаю, что частый случай. Аналогично и с оптимизацией в циклах. Аналогично, понимание специфики реализации (в т.ч. роли внутренних недокументированных параметров), безусловно, полезно, но и без него инструмент можно и нужно применять.
Кроме 1, 3.3 и 3.4 — да, знал. Пункт 4 — «знал, но забыл» — когда-то давно читал про это в вашей или очень похожей на вашу статье (жаль, что ваш сайт плохо ищется в Google, возможно, где-то видел перепечатку)
Для меня лично открытием оказалась возможность «грязных чтений» при использовании функций в запросах. На практике с таким сталкиваться, правда, не приходилось, но, как говорится, «век живи — век учись» :-)
Одна небольшая ремарка: наименование пункта «Кэширование deterministic функций в PL/SQL» не совсем соответствует действительности — все-таки, вернее было бы «Кэширование deterministic функций в циклах PL/SQL». И, если говорить про этот сценарий, как вы правильно процитировали того же Фойерштайна, «похоже, что применимость этих оптимизаций будет весьма узкой»
На уровне экземпляра (не знаю, как работает в PDB, думаю, затронет только конкретный контейнер) можно еще использовать:
alter system set fixed_date = '2017-04-01 12:34:56';
и затем после тестов
alter system set fixed_date = 'NONE';