Производительность ODBC+Firebird
Производительность ODBC+Firebird
Уважаемые господа, подскажите, пожалуйста какую производительность можно достичь в связке ODBC IBPhoenix v2.00.00.142 + Firebird 1.5 v1.5.3.4870 при непрерывной регистрации данных (22 аттрибута типа Float) по INSERT запросу(транзакций в секунду).
Операционка WINXP SP2
Железо Pentium Core2Duo 1.86Hgz RAM-2Gb DDR2.
С уважением, Александр.
Операционка WINXP SP2
Железо Pentium Core2Duo 1.86Hgz RAM-2Gb DDR2.
С уважением, Александр.
"транзакций в секунду" при вставке - не надо.
лучше прочитать www.ibase.ru/devinfo/impexp.htm
и вставлять данные "пакетами", а не по одной штуке на транзакцию.
собственно, если предполагается совсем непрерывная регистрация данных, то или Вы ошиблись сервером, и вам надо MySQL или вообще dbf, или что-то не так в постановке задачи.
Прочитайте до кучи www.ibase.ru/devinfo/sys_failure.htm
там есть раздел про импорт.
лучше прочитать www.ibase.ru/devinfo/impexp.htm
и вставлять данные "пакетами", а не по одной штуке на транзакцию.
собственно, если предполагается совсем непрерывная регистрация данных, то или Вы ошиблись сервером, и вам надо MySQL или вообще dbf, или что-то не так в постановке задачи.
Прочитайте до кучи www.ibase.ru/devinfo/sys_failure.htm
там есть раздел про импорт.
-
- Заслуженный разработчик
- Сообщения: 644
- Зарегистрирован: 15 фев 2005, 11:34
Уважаемые господа, суть этого вопроса возникла при связке СКАДА системы АДАСТРА - ТРЕЙС МОУД 6.05 с SQL базой. И вот производился выбор базы дабы регистрировать данные 800 каналов пакетами по 25. Пакет пшется одной строкой в таблицу.
Поэксперементировал с разными базами: Firebird 1.5.1.4481 и DB2 v9.1.200.166 через источник ОДБС и вот что получил при замере быстродействия с помощью DELPHI6.0:
Firebird 1.5.1.4481 - 1 полная транзакция за 3.2мс
DB2 v9.1.200.166 - 1 полная транзакция за 0.55мс
При работе с этими базами и ТРЕЙС МОУД 6.05 через ОДБС получаю противоположные результаты:
Firebird 1.5.1.4481 - 1 полная транзакция за 250мс
DB2 v9.1.200.166 - 1 полная транзакция за 2000мс
Конечно напршиваются вопросы:
1. Почему просходит такое резкое падение производительности?
2. Почему Firebird 1.5.1.4481 покосил DB2 v9.1.200.166?
Правда ТРЕЙС МОУД 6.05 у меня работал на той же машине что и базы данных.
Вопрос был задан спецам ТРЕЙС МОУД 6.05 и получен следующий ответ:
"Мы не считаем SQL-интерфейс основным интерфейсом в работе с реальными технологическими процессами.
Поток SQL-запросов в Trace Mode отнесен к самым низко-приоритетным, чтобы он не препятствовал мониторингу, диагностике и управлению в реальном процессе.
Возможно, что на специально выделенном МРВ можно сократить период обработки каналов и повысить приоритет этого потока с тем, чтобы повысить его производительность.
Что касается разницы между Firebird и DB2, то МРВ совершенно инвариантен к типу БД. Он работает через соответствующий ODBC-драйвер БД. Все различия здесь могут быть только в реальном интерфейсе этого драйвера с БД и реальной загрузке ПК, использующего эту БД."
Может у кого-то из Вас есть опыт работы и соображения по этому поводу?
С уважением AlexandrM.
Поэксперементировал с разными базами: Firebird 1.5.1.4481 и DB2 v9.1.200.166 через источник ОДБС и вот что получил при замере быстродействия с помощью DELPHI6.0:
Firebird 1.5.1.4481 - 1 полная транзакция за 3.2мс
DB2 v9.1.200.166 - 1 полная транзакция за 0.55мс
При работе с этими базами и ТРЕЙС МОУД 6.05 через ОДБС получаю противоположные результаты:
Firebird 1.5.1.4481 - 1 полная транзакция за 250мс
DB2 v9.1.200.166 - 1 полная транзакция за 2000мс
Конечно напршиваются вопросы:
1. Почему просходит такое резкое падение производительности?
2. Почему Firebird 1.5.1.4481 покосил DB2 v9.1.200.166?
Правда ТРЕЙС МОУД 6.05 у меня работал на той же машине что и базы данных.
Вопрос был задан спецам ТРЕЙС МОУД 6.05 и получен следующий ответ:
"Мы не считаем SQL-интерфейс основным интерфейсом в работе с реальными технологическими процессами.
Поток SQL-запросов в Trace Mode отнесен к самым низко-приоритетным, чтобы он не препятствовал мониторингу, диагностике и управлению в реальном процессе.
Возможно, что на специально выделенном МРВ можно сократить период обработки каналов и повысить приоритет этого потока с тем, чтобы повысить его производительность.
Что касается разницы между Firebird и DB2, то МРВ совершенно инвариантен к типу БД. Он работает через соответствующий ODBC-драйвер БД. Все различия здесь могут быть только в реальном интерфейсе этого драйвера с БД и реальной загрузке ПК, использующего эту БД."
Может у кого-то из Вас есть опыт работы и соображения по этому поводу?
С уважением AlexandrM.
Фишка здесь вот в чем, был задан вопрос техподдержке ТМ6:
"Уважаемый модератор, подскажите алгоритм выполнения каждого запроса в ТМ6.05.1 через драйвер ОДБС, я понимаю так:
1. ТМ6.05.1 запрашивает установку коннекта через ОДБС с SQL базой.
2. ТМ6.05.1 запрашивает старт транзакции.
3. ТМ6.05.1 запрашивает выполнение запроса.
4. ТМ6.05.1 запрашивает завершение транзакции.
5. ТМ6.05.1 запрашивает отключение коннекта с SQL базой.
И так по каждой инициализации канала CALL запроса к БД. Меня именно интересует момент установки коннекта, происходит ли он каждый раз при выполнении запроса или единожды при старте монитора? Если каждый раз то мне тогда понятны временные задержки."
..... и получен ответ:
"Каждый успешный запрос завершается дисконнектом.
Новый запрос начинается с коннекта."
DB2 коннектится гораздо дольше нежели Firebird! И вообще коннект валит все временные параметры.
"Уважаемый модератор, подскажите алгоритм выполнения каждого запроса в ТМ6.05.1 через драйвер ОДБС, я понимаю так:
1. ТМ6.05.1 запрашивает установку коннекта через ОДБС с SQL базой.
2. ТМ6.05.1 запрашивает старт транзакции.
3. ТМ6.05.1 запрашивает выполнение запроса.
4. ТМ6.05.1 запрашивает завершение транзакции.
5. ТМ6.05.1 запрашивает отключение коннекта с SQL базой.
И так по каждой инициализации канала CALL запроса к БД. Меня именно интересует момент установки коннекта, происходит ли он каждый раз при выполнении запроса или единожды при старте монитора? Если каждый раз то мне тогда понятны временные задержки."
..... и получен ответ:
"Каждый успешный запрос завершается дисконнектом.
Новый запрос начинается с коннекта."
DB2 коннектится гораздо дольше нежели Firebird! И вообще коннект валит все временные параметры.