Oracle и PHP как работать быстрее

Oracle и PHP как работать быстрее

Всем привет!

Может кому будет интересно. Недавно мы с компанией QSoft делали тестирование Оракл версии продукта под нагрузку. И очень нам помогло появление в Oracle 10gR2 отложенных транзакций.

Commit_write='batch'

Данная настройка уменьшает количество операций ввода/вывода за счет накапливания транзакций и последующей их групповой записи на диск, что особенно существенно при большом количестве коротких транзакций. А PHP как раз и работает в основном короткими транзакциями с автокоммитом.

http://www.oracle.com/technology/pub/articles/10gdba/nanda_10gr2dba_part1.html#commit

Удачи всем.
 

Falc

Новичок
>>PHP как раз и работает в основном короткими транзакциями с автокоммитом.

Может все-таки более правильным вариантом будет переписывание приложения? С необходимым числом комитов?
 
:) мы не говорим сейчас про приложение, а про полезный параметр.

Но если вы запустите проект на PHP+Оракле с нагрузкой хотя бы в 50-100 тысяч человек в день, в котором будет реклама, статистика, новости, форумы и подобная ернуда... т.е. вполне реальная конкуренция за ресурсы, мне будет любопытно посмотреть на работу системы, если вы откроете транзакцию в начале страницы, и завершите ее в конце :)
 

Falc

Новичок
Сергей Рыжиков
>>любопытно посмотреть на работу системы, если вы откроете транзакцию в начале страницы, и завершите ее в конце

Для оракла это вполне стандартная ситуация. При соответствующем размере сегмента отката можно держать транзакцию часами.
 
Автор оригинала: Falc
Сергей Рыжиков
>>любопытно посмотреть на работу системы, если вы откроете транзакцию в начале страницы, и завершите ее в конце

Для оракла это вполне стандартная ситуация. При соответствующем размере сегмента отката можно держать транзакцию часами.
Все можно, но вы попробуйте при случае :)
 

Falc

Новичок
Сергей Рыжиков

К сожалению у меня нет возможности попробовать, т.к. проектов с указаной посещаемость у меня нет и не придвидится.
 
Один наш клиент допустил однажды ошибку в программировании своего сайта :)
Открыл в начале страницы транзакцию и не закрыл ее.
Что наблюдали.
В обычной ситуации страница работает например, 0.2с после чего освобождает ресурсы. После каждого запроса идет автокоммит и никто никого не держит.

Если транзакция открыта. То даже самый банальный UPDATE счетчика показа баннера приводить к блокировке строки на запись на время равное времени работы страницы, т.е. 0.2с. Но получается, что в течение 0.2с другая страницы сможет показать баннер, но не сможет увеличить счетчик показов, т.е. фактически застрянет на выполнении на свое время + время ожидания...

Ну дальше несложно угадать что случается. Очередь нарастает, ресурсы начинают уменьшаться, в первую очередь память. Причем при свободной машине по процессору производительность системы в целом снижается до состояния невозможности работы с проектом.

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

Falc

Новичок
Сергей Рыжиков
Не надо путать ошибку в логике приложения с отказом от автокомита. Транзакцию надо фиксить тогда когда этого требует логика приложения. Если есть какой-то конфликтный ресурс то надо освобождать его по мере возможности.
А автокомит после каждого запроса только приведет к нецелостности данных и лишней нагрузке.
 

Falc

Новичок
Сергей Рыжиков
>>какая же тут нецелостность, если все комитится?

Очень просто, часть данных обновится, а часть останется старыми. Хотя правельнее тут было говорить не о нецелостности, а о несогласованности.
 
Как то не по теме мы пошли говорить :)

В общем если кому интересно, учтут совет. Для веб приложений на Оракле это очень важно. Да как показывает опыт и для обычных приложений тоже.
 
Re: Oracle и PHP как работать быстрее

Автор оригинала: Сергей Рыжиков Всем привет! Может кому будет интересно. Недавно мы с компанией QSoft делали тестирование Оракл версии продукта под нагрузку.
Поверьте не интересно, уже только глухой не знает об этом т.к. на каждом углу про так называемое тестирование кричите. Думаю стоит уточнить, что так называемое тестирование под нагрузкой полностью провалилось т.к. при использовани 2-х голового сервера с 4 или 8 гигами оперативы время генерации страницы было > 1 сек.

И очень нам помогло появление в Oracle 10gR2 отложенных транзакций.

Commit_write='batch'

Данная настройка уменьшает количество операций ввода/вывода за счет накапливания транзакций и последующей их групповой записи на диск, что особенно существенно при большом количестве коротких транзакций. А PHP как раз и работает в основном короткими транзакциями с автокоммитом.

http://www.oracle.com/technology/pub/articles/10gdba/nanda_10gr2dba_part1.html#commit

Удачи всем.
В шоке, директор конторы делающей далеко не самый лучший продукт на форуме программистов даёт советы, что это скрытая реклама?

Уважаемый, PHP не работает в основном с короткими транзакциями с автокоммитом, учите мат.часть. С короткими транзакциями обычно с автокоммитом работают системы OLTP класса, в длинными транзакциями без автокоммита работают системы DSS класса. Это написанно в любой более менее приличной книге по Oracle.
 
Сверху