Смена драйвера БД

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Shur
Ветеран
Сообщения: 384
Зарегистрирован: 02 Июль 2011, 18:49

Смена драйвера БД

Сообщение Shur »

Shur писал(а): P.S. Думал, почему такая большая разница. Пришёл к выводу, что тесты не вполне сопоставимы. Если в случае с SQL была какая-никакая, а клиент-серверная среда с прокачкой по сети (22,82 Мб в одну сторону и 315,25 Мб в другую на 100М сети), то во втором случае было десктоп-приложением с чтением из локального файла.
Shur писал(а): Ещё раз повторюсь -- тормозом могла оказаться сеть сама по себе. Надо было попробовать запустить тест на самом сервере, но это уже только вечером смогу.
Провёл тест на самом сервере. Напомню, код выполняется такой:
Shur писал(а): Код следующий:

Код: Выделить всё

message('start',records(changes))
clock# = CLOCK()
setcursor(CURSOR:Wait)
clear(chng:record)
set(changes)
LOOP
   next(changes)
   if errorcode()
         break   
   .
.
clock# = CLOCK() - clock#
setcursor()
message('finish: ' & format(clock#,@t4)&'|'&clock#/records(changes)&' 1/100 sec',records(changes))
Результат показывает, что 150603 записи были просканированы за 0:07:57, т.е. на одну запись пришлось по 0,00317 секунды.
При выполнении на кода на самом сервере исключается фактор сети и прокачки по ней значительного объёма данных.
Результат такой: 150603 записи были просканированы за 0:01:04, т.е. на одну запись пришлось по 0,000442 секунды, что в 9,2 раза медленнее TopSpeed драйвера. Кстати, этот результат оказался очень близким к результату выполнения сканирования при помощи динамического курсора средствами сиквела.
Shur писал(а): P.S. Запрос в самом SQL отработал за 0:01:08.

Код: Выделить всё

declare @var int    
declare @i int = 0    
declare cur1 cursor DYNAMIC for
       select id from dbo.db_changes    
open cur1       
while (0=0)
begin       
    fetch next from cur1 into @var       
    if (@@FETCH_STATUS = -1) 
    begin
         break
    end       
    set @i += 1    
end    
close cur1  
deallocate cur1
print @i
Ал
✯ Ветеран ✯
Сообщения: 1014
Зарегистрирован: 08 Июль 2005, 6:48
Откуда: Россия
Поблагодарили: 1 раз

Смена драйвера БД

Сообщение Ал »

вопрос ТС был о возможности смены драйвера БД...
Shur
Ветеран
Сообщения: 384
Зарегистрирован: 02 Июль 2011, 18:49

Смена драйвера БД

Сообщение Shur »

Ал, спасибо. Я действительно не сказал, к чему это всё было. Как бы опытами я показываю, что менять МОЖНО.

Если вы не собираетесь ставить рекорды скорости вычислений, и если ваша база расчитана на средний размер (подразумеваю TopSpeed с его ограничением по количеству записей и максимальным объёмом файла), то что 0,000048 секунды на запись, что 0,000442 секунды вполне могут устроить пользователя.
kreator
✯ Ветеран ✯
Сообщения: 5025
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 22 раза

Смена драйвера БД

Сообщение kreator »

Я всё же не пойму - откуда в MS такое время? Как Станиславский - не верю. Под рукой сейчас MS SQL нет. На Firebird 2.1 в IBExpert'е таблица с ~145000 записями (13 полей) сканируется за 1 секунду. Выдаю её в стандартный броуз - по ощущениям 2-3 секунды.
1.jpg
1.jpg (11.66 КБ) 2449 просмотров
2.jpg
We are hard at work… for you. :)
Аватара пользователя
Admin
Администратор
Сообщения: 3963
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 29 раз
Поблагодарили: 22 раза
Контактная информация:

Смена драйвера БД

Сообщение Admin »

Мужики, а что вы тестируете на таком количестве записей?
Вы бы еще тысяч десять взяли.
Давайте на 2-3 миллионах тестировать?
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
kreator
✯ Ветеран ✯
Сообщения: 5025
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 22 раза

Смена драйвера БД

Сообщение kreator »

Admin писал(а):Мужики, а что вы тестируете на таком количестве записей?
Вы бы еще тысяч десять взяли.
Давайте на 2-3 миллионах тестировать?
Да и так всё понятно. Должна быть одна секунда, а есть 8 минут. Вот и думайте.
We are hard at work… for you. :)
Ал
✯ Ветеран ✯
Сообщения: 1014
Зарегистрирован: 08 Июль 2005, 6:48
Откуда: Россия
Поблагодарили: 1 раз

Смена драйвера БД

Сообщение Ал »

Shur писал(а):Ал, спасибо. Я действительно не сказал, к чему это всё было. Как бы опытами я показываю, что менять МОЖНО.
Если вы не собираетесь ставить рекорды скорости вычислений, и если ваша база расчитана на средний размер (подразумеваю TopSpeed с его ограничением по количеству записей и максимальным объёмом файла), то что 0,000048 секунды на запись, что 0,000442 секунды вполне могут устроить пользователя.
у коллеги задача запущена - документы на отпуск продукции при отгрузке оформляют водилам примерно на 10ке рабочих мест - так там падает "в параллель" - в базы старого формата (dat) и в новый (sql) - вроде норма по скорости...
Shur
Ветеран
Сообщения: 384
Зарегистрирован: 02 Июль 2011, 18:49

Смена драйвера БД

Сообщение Shur »

kreator писал(а): Да и так всё понятно. Должна быть одна секунда, а есть 8 минут. Вот и думайте.
Не, Kreator, не шельмуй. 8 мин. это прокачка по 100М сети 300 с лишним мегабайт. Я для теста забыл приготовить табличку, состоящую только из ID, а взял реальную таблицу у которой... 315250000/150603 = 2093 байта на запись. А без прокачки -- примерно 1мин., которая является, собственно, скоростью курсорного цикла сканирования, т.е. драйвер не несёт почти никаких затрат.
Теперь откуда эта минута. Я же оговорился, что сервер слабенький. Это даже не десктоп, а ноут довольно давнего года разлива с 2Gb ОЗУ. А диск с базой прицеплен к ноуту по USB2.0. Так что предлагаю не привязываться к абсолютным величинам, а учитывать только соотношение двух драйверов.
Shur
Ветеран
Сообщения: 384
Зарегистрирован: 02 Июль 2011, 18:49

Смена драйвера БД

Сообщение Shur »

Лирическое отступление.
Никак не мог отделаться от ощущения дежавю... и нашёл то, о чём я писал на форуме 4 с лишним года назад.
Shur писал(а): Мне кажется, что _правильно_проиндексированный_ TPS по скорострельности вряд ли уступает SQL, ведь принцип доступа к конечным данным примерно одинаков -- через таблицу индексов.
Это из темы http://forum.clarionlife.net/phpbb/view ... 3&start=15
Так и есть. TopSpeed рулит.
Ответить