Автор оригинала: romutis
Вполне логичный результат для такого уровня теста.
А, еретик, ты осмеливаешься усомниться в величии господа ?
Объясняется просто: PHP, используя persistent connection, просто не шлет команду окончания сессии серверу.
Мудры слова твои, но бесом внушаемы. Приди ко мне и очистишься.
И при создании нового коннекта - не создает новую сессию физически, а пытается использовать предыдущую незакрытую сессию в надежде, что Оракл ее не прибил.
При данном тесте, если выборки шли подряд, без значительных пауз - выборка прошла, используя одну и ту же открытую сессию - отсюда и выигрыш во времени - не надо было коннектиться/отсоединяться.
Жаль, что не все выборки из Оракла подобны тестовой.
Проясни соль твоих замечаний ибо смущаюсь я. Чую что где-то подвох есть, но где не проникнусь.
Считаешь ли ты что существует запрос (возможно очень сложный ), при котором поведение php при коннекте персистент и не персистент будет отличаться от описанного мною?
То есть думаешь ли ты, что сложность запроса или тяжесть его для сервера может изменить тот факт что персистент коннект к ораклу значетельно быстрее обычного?
P.S. Никаких реальных средств поддержания постоянного коннекта с Ораклом у PHP нет. Не прибили - пользуемся этой сессией, прибили - ну что ж - создадим новую сессию.
В таком контексте ни у кого средств поддержания постоянного коннекта с Ораклом ибо если сессия прибита на сервере, то хоть тресни не сможешь этому помешать с клиента. Имеется ввиду конечно удержание конкретной сессии, не открытие новой с теми же параметрами.
Кстати что есть средства поддержания постоянного коннекта с Ораклом ? Можешь прояснить свою фразу?
Кстати проверь значение серверного параметра sqlnet.expire_time (в sqlnet.ora). По моим данным при значении по умолчанию, что обычно для установки оракла с нуля, прибитие сессий на сервере не происходит вообще (oracle 9.1 enterprise). Проверь как это у тебя.
Здесь, кстати, зарыта большая потенциальная проблема - при некорректной конфигурации TCP Stack возможна ситуация с неконтролируемым ростом клиентских сессий и дальнейшей невозможностью коннекта к Ораклу, вызванной достижением максимального кол-ва серверных процессов Оракла.
Э-ээ, а можно об этом поподробнее. Неконтролируемый рост сессий, коннекций наблюдается у многих провайдеров, которые позволяют использовать Pconnect для коннекта к mysql. И я считаю что проблема здесь не в некорректной конфигурации TCP Stack, а в реализации персист коннекций в php и в непонимании программистами его механизма.
P.S. Я мог бы дать запрос, время исполнения которого исчисляется десятками минут, но это не меняет того что обычный коннект к ораклу очень долог.