AVC |
Отправлено: 17.06.2004, 10:41 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Вот выполнял для руководства. Может кого заинтересуют результаты:
CODE |
Тестирование скорости выполнения запросов на разных СУБД
Для проведения эксперимента были выбраны таблицы и запросы из реально действующей системы . Запросы реализуют рабочий цикл по выборке абонентов, которым нужно по телефону напомнить об имеющейся у них задолженности (обзвонка).
1. Delete удаляет остатки прошлого задания из рабочей таблицы.
2. Insert формирует в рабочей таблице новое задание.
3. Select 1 то же самое что и Insert только без вставки записей но с обрамляющей сортировкой для извлечения всех записей (для оценки времени выборки и времени добавления записей).
4. Select 2 выборка из рабочей таблицы нового задания для экспорта в dbf файл.
Celeron 1.8/256/IDE Windows 2000
СУБД Oracle_8i Sybase_Asa6 MaxDB_7508 FB_1.5
Место 476M 408M 795M 378M
Время выполнения (попытка 1 / попытка 2)
Delete 0.5/0.3 4 2 таких
Insert 28 / 14 233 457 запросов
Select1 10 / 10 210 465 не
Select2 1 / 1 12 17 выполняет
Xeon 2*2.8/2Gb/Raid(1 и 1+0) Linux SLES 8
СУБД Oracle_8i Oracle_9
Delete 0.3/0.1 0.18/0.14
Insert 13 / 7 18/18
Select1 4 / 4 16/15
Select2 0.15 0.17
|
Полный текст отчета можно взять здесь
|
|
AVC |
Отправлено: 17.06.2004, 10:47 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Потерялся прикрепленный файл
|
|
Deem |
Отправлено: 21.06.2004, 09:38 |
|
Мастер участка
Группа: Участник
Сообщений: 327
|
А цены на продукты? А юзер Оракле сможет администрить? А на 128 Оракле будет работать? А на 64? А на 32?
И запросы FB поддерживает: в ХП,с небольшими изменениями.
Первый Delete и Select 2 так вобще самые обычные. Как же FB их не выполняет?
А эта фигня хитрая, конечно:
Select t5.*
From
(Select
Null as PAObzvonID ...
Выбираем из таблицы с именем Null ??? Для демлнстрации хитровыкрученности некоторых серверов может и подходит, но для дела?
Так как FB был снят с соревнований из-за предвзятого отношения, считаю их результаты недействительными.
Отредактировано Deem — 21/06/2004, 11:11
|
|
olegenty |
Отправлено: 21.06.2004, 10:27 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
присоединяюсь к Deem. будет свободное время — сделаю на FB.
|
|
AVC |
Отправлено: 21.06.2004, 10:37 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Я никого не агитирую ни за какую СУБД. Каждый решает сам. Информация была для ознакомления
Итак по порядку:
1.QUOTE | А цены на продукты? А юзер Оракле сможет администрить? А на 128 Оракле будет работать? А на 64? А на 32?
|
Цены и вопросы администрирования выходят за пределы данной темы. Насколько я знаю на сегодня
Oracle в режиме ознакомления бесплатен. Min поставка (5user) 750$. 2x-проц. сервер с неогранниченным числом пользователей 5000$
MaxDB сервер с неогранниченным числом пользователей 1500$
Реальный клиент Oracle вместе с нашим приложением стоит на 133/Win95/16Mb
2. QUOTE | Первый Delete и Select 2 так вобще самые обычные. Как же FB их не выполняет?
|
Delete конечно выполняется. Конечно, при помощи ХП можно много, но хотелось бы сделать на обычном SQL так как известно (по крайней мере мне) что самый сложный Select работает быстрее чем открыть курсор и обработать его по строкам.
3.QUOTE | Выбираем из таблицы с именем Null ???
|
Если присмотреться, то можно заметить что это не таблица с именем Null а добавление в результирующий запрос поля со значением Null
4.QUOTE | Для демлнстрации хитровыкрученности некоторых серверов может и подходит, но для дела?
|
Могу повторить, то что сказано в начале: Запросы реализуют РЕАЛЬНО ДЕЙСТВУБЩИЙ рабочий цикл ИЗ РАБОТАЙЩЕЙ ПРОГРАММЫ по выборке ...
5.QUOTE | Так как FB был снят с соревнований из-за предвзятого отношения, считаю их результаты недействительными.
|
У вас есть три пути.
а. Оставить все как есть.
б. Переписать запросы на FB и отправить мне. Я их включу в тест. Я не стал писать SP как только понял что Select From Select не работает.
в. Я могу выложить вам данные, а вы сделаете по ним выборки у себя.
|
|
Deem |
Отправлено: 24.06.2004, 09:45 |
|
Мастер участка
Группа: Участник
Сообщений: 327
|
Не..... Не хочу сервер за $5000! А на триале сами работайте.
В наше тревожное время .... короче, когда дофига клиентов и данных, может и оракле сгодится. Но если FB (он же IB модернизированный ) вполне подходит "Абрамсу" (с перезагрузкой после каждого выстрела и мех/водителем в роли админа), значит и нам он подойдет.
А запрос из запроса — так это один запрос с нормальными условиями отбора. Ну если очень хочется такой многоступенчатости, то можно наделать View (что и есть результатом запроса) и выбирать запросом уже из них.
А что касается 32МБ, так это я не про клиента, а про сервер.
|
|
AVC |
Отправлено: 24.06.2004, 13:56 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Не хотите и не надо. Ваше право. Однако дешовое не значит хорошее а стоимости серъезных серверов БД почти одинаковы (поэтому MsSql не был включен в испытания). Oracle в режиме ознакомления это не trial а полнофункциональный сервер (где кончается режим ознакомления я толком не знаю, наверное при начале коммерческого использования)
QUOTE | А что касается 32МБ, так это я не про клиента, а про сервер |
Для абсолютно любой программы можно создать условия в которых она работать не сможет.
Select на Select это не прихоть а удобства, наследуемые от стандарта SQL92, который FireBird повидимому не соблюдает
CODE |
Оператор SELECT имеет в стандарте SQL92 следующее формальное описание:
SELECT [DISTINCT]
{ {function_agregate | expr [AS new_field_name] } .,:
| specification.*
| *
[INTO list_variable]
FROM {{ имя_таблицы [AS] [table_alias] [(field .,:)]}
| {subquery [AS] subquery_alas [(field .,:)]}
| union_table
| constructor_of_table_value
| {TABLE имя_таблицы [AS] alias [(field .,:)]}
} .,:
[WHERE condition]
[GROUP BY {{ имя_таблицы | alias }.field} .,: {COLLATE name]]
[HAVING condition]
[{ UNION | INTERSECT | EXCEPT } [ALL]
[CORRESPONDING [BY (field.,:)]]
SELECT_operator | {TABLE имя_таблицы} | constructor_of_table_value [ORDER BY] {{field_result [ASC|DESC]}.,:}
|{{ integer [ASC|DESC]}.,:};
|
У серьезного сервера БД select может стоять везде, где используется константа или выражение, лишь бы он не противоречил правилам (как имя переменнй в C)
Речь идет не о принципиальной невозможности сделать что либо а об уровне удобст, надежности и скорости ответа.
Выбор сервера должен зависить не только от стоимости и от уровня знакомства с ним исполнителя а от потребностей поставленнй задачи. Поэтому то что хорошо для танка не катит для банка (простите за невольный каламбур).
Отредактировано AVC — 24/06/2004, 14:44 |
|
Deem |
Отправлено: 25.06.2004, 09:26 |
|
Мастер участка
Группа: Участник
Сообщений: 327
|
Так о танках и банках: банки вобще все — гнилые конторы. Пообчался. И сервера за $5000 они только и могут купить. В основном же, маленькие и средние конторы, из которых состоит "бизнес" на 90%, больше смахивают на танки с любой стороны. А мы, девелоперы, и с MSSQL могем, и с Оракле, и с клиппером, и с фоксом, и с ехелем и ехесом. Все определяет естественный отбор. Заказчики берут не то, что круче , а то, что могут взять, и то, с чем потом будут иметь меньше всего проблем.
Я вобще против глобализации и корпораций всяких.
Я бы от винды отказался (и еще сравнилово ОС-ов всяких привел), однако юзер сидит на винде, значит и мне — туда же.
ЗЫ: а все ж запрос из запроса — глупость. Делаешь один запрос, а условия двух объединяешь AND.
А на крутой тачке, навроде ораклевского сервера, и FB будет летать.
Delphi компилит намного быстрее Builder-а, однако я люблю С++.
VC компилит лучше Buildera-а, но я люблю Borland.
Oracle работает быстрее IB/FB, однако в IB впервые появились события и многоверсионность. Сравнвать надо блокировки и торомоза при одновременном редактировании таблиц.
Отредактировано Deem — 25/06/2004, 10:56
|
|
AVC |
Отправлено: 25.06.2004, 10:35 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Правильно, для каждой проблемы — своя самая подходящая СУБД. И вопрос не только в том "на чем могем" а в том "как мы на этом могем". InertBase он же FireBird для моей конторы (не банка) самое худшее решение, а тесты проводились для поиска варианта замены Oracle.
По зы:
В тесте приведены параметры "тачек". Целью теста и было "кто как будет летать".
QUOTE |
запрос из запроса — глупость
|
Не глупость а свобода. Так можно сказать что и классы в C++ глупость, так как все можно сделать на обычном C при помощи структур, функций и адресов.
QUOTE |
условия двух объединяешь AND
|
Перепишите Select 1 из примера и я с радостью включу FireBird в тест. Мне тоже хочется иметь картину соростей выполнения.
QUOTE |
Сравнвать надо блокировки и торомоза при одновременном редактировании таблиц.
|
Давайте напишем совместный тест. Я берусь запустить его на Oracle, Subase, MaxDB. Тест предпочтительно иметь на языке SQL. |
|
Deem |
Отправлено: 29.06.2004, 11:21 |
|
Мастер участка
Группа: Участник
Сообщений: 327
|
Ой, неохота мне тесты писать.
А насчет свободы, так это если кто другой запрос написал, а тя можешь из него свои данные выбрать — это свобода. А когда приходится оба запроса писать самому — это самообман. А первый вариант реализуется при помощи view.
А С++ — это шаг в будущее. Он конкретно помагает писать большие проги. Сам знаю, как приходилось дофига функций сосздовать, делающих пости одно и тоже, только оперировать разными данными. Одних имен не напосешся. А для объентов все одинаковые функции (методы) одинаково называться могут, а еще сами объекты им передевать не надо. Так что С++ — это таки да, свобода.
Отредактировано Deem — 29/06/2004, 12:28
|
|
AVC |
Отправлено: 29.06.2004, 12:40 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Если вы понимаете свободу выражения в C++, то почему же вы запрещаете такую свободу в языке SQL. На все случаи жизни wiev'ов не напасешся (и даже не хочу к этому стремиться). А вам не приходилось использвать Select, возвращающий одно значение, в качестве аргумента функции или вместо выбираемого поля? Это тоже свобода выражения. Хорошо спроектированный Select заменяет большой кусок кода на языке приложения и позволяет добиться большей универсальности. |
|
Deem |
Отправлено: 22.07.2004, 10:53 |
|
Мастер участка
Группа: Участник
Сообщений: 327
|
Про свободу: за нее платить приходится. Кто платит дополнительными временем на дебаг, кто — дополнительными глюками. Работающие с С++ платят за всвободу временем компиляции (паскаль быстрее раз в 2-10). Так это ж после компиляции все быстро работает. А SQL — сервачек за свободу отбирает время на каждом запросе. Т.е. свобода разработчика отъедает свободу юзера. А это уже не просто свобода, а нарушение чьих-то прав.
|
|