В пост призываются знатные DBA
Apr. 30th, 2011 05:53 pmВот в этом посте я рассказывал о своих мучениях с MySQL-базой. Победить их не удалось; несмотря на кучу уж совсем хитрых оптимизаций и подстроек, скорость записи в базу осталась неприемлимой, хоть и чуть выросла.
Было решено мигрировать на более мощный сервер с Oracle, админы выделили виртуалку с Win 2008 x64, 4 гигами памяти и Oracle 11 x64.
Оказалось, впрочем, что скорость записи в оракловую базу гораздо меньше, чем в MySQL. Да, она не падает с увеличением количества записей, но в среднем всё равно оказывается несколько меньше.
Напряг этим наших DBA, стали настраивать и подбирать оптимальное количество вставок перед commit. Я совершенно не силён в Oracle, поэтому пришлось положиться на их профессионализм; но единственное, чего мы достигли - это скорости около 500 вставок в секунду из любого приложения (я написал для тестов скрипт на PHP и бинарник на Delphi). Выполнение тех же вставок из sql-файла через sqlplus занимает раз в пять меньше времени (тоже медленно, я считаю, но для нужд проекта скорость приемлимая) - но если запускать sqlplus отдельно. Если запустить sqlplus из скрипта (через exec()) или приложения (CreateProcess()) - получаются те же 500 вставок в секунду.
И это выводит меня из себя уже.
DBA пожимают плечами и предлагают писать PL/SQL процедуры, которые будут грузить данные напрямую - мол, это совсем быстро. Но изучение ещё одного яп в мои планы пока что не входит, больно долго.
Приму любой совет, мой разум близится к коллапсу, я перестаю чувствовать вкус еды, различать цвета, запахи и мне снятся кошмары.
Было решено мигрировать на более мощный сервер с Oracle, админы выделили виртуалку с Win 2008 x64, 4 гигами памяти и Oracle 11 x64.
Оказалось, впрочем, что скорость записи в оракловую базу гораздо меньше, чем в MySQL. Да, она не падает с увеличением количества записей, но в среднем всё равно оказывается несколько меньше.
Напряг этим наших DBA, стали настраивать и подбирать оптимальное количество вставок перед commit. Я совершенно не силён в Oracle, поэтому пришлось положиться на их профессионализм; но единственное, чего мы достигли - это скорости около 500 вставок в секунду из любого приложения (я написал для тестов скрипт на PHP и бинарник на Delphi). Выполнение тех же вставок из sql-файла через sqlplus занимает раз в пять меньше времени (тоже медленно, я считаю, но для нужд проекта скорость приемлимая) - но если запускать sqlplus отдельно. Если запустить sqlplus из скрипта (через exec()) или приложения (CreateProcess()) - получаются те же 500 вставок в секунду.
И это выводит меня из себя уже.
DBA пожимают плечами и предлагают писать PL/SQL процедуры, которые будут грузить данные напрямую - мол, это совсем быстро. Но изучение ещё одного яп в мои планы пока что не входит, больно долго.
Приму любой совет, мой разум близится к коллапсу, я перестаю чувствовать вкус еды, различать цвета, запахи и мне снятся кошмары.