Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.21;
Скачать: [xml.tar.bz2];




Вниз

скорость работы MySQL+ODBC+ADO 


fidget   (2002-02-19 18:56) [0]

Есть необходимость написать делфевого клиента для работы с MySQL server. Работать надо обязательно через ODBC. Попробовала использовать компоненты с палитры ADO.
Для проверки скорости работы сделала в цикле от 1 до 1000
select * from my_table
В таблице 3 строки(всего 4 столбца)
С localhost запрос выполняется 33секунды, если запускать с машины, которая в локальной сети находится, то 2мин 54сек
С такой скоростью работать не очень хочется...
Тем более что с API такой запрос за несколько секунд выполняется...

Это оно так тормозит из-за ODBC? Есть варианты работы без использования ADO с MySQL? Может можно как-то ускорить работу?



MetallAdm   (2002-02-19 19:18) [1]

а зачем собсвенно в цикле выполнять запрос ??
у меня допустим все через ODBS
максимальное время у запроса из 3-x таблиц
с записями около 20000 занимало только
около минуты
так же приблезительно и через ADO



fidget   (2002-02-19 19:50) [2]

(цикл - потому что мой шеф так хочет проверить скорость и производительность :( )
А ты с ODBC через что работаешь?
Можно как то напрямую работать с ODBC?



MetallAdm   (2002-02-19 20:04) [3]

да и вообше странно что то
хотя мне кажется глуппо так проверять производителность лучше пускай в табличку и из нескольких
полей данных тысяч так на 100 в цикле запишет а потом оттуда запросы делать



fidget   (2002-02-19 20:39) [4]

шеф аргументирует тем, что мы меряем не скорость работы mysql сервера, а скорость работы делфевого клиента



biocron   (2002-02-20 00:34) [5]

Почему обязательно ADO
попробуй c DAO
Компонент KaDAO
работать с MDB файлами, имять линки в них на любые базы транслировать, накапливать в них и экспортировать
у меня было 4 базы с 20-50 000 записей
таблицы линкованые к MDB
как только пошел таким путем скорость возрасла в 5-8 раз.




fidget   (2002-02-20 16:20) [6]

а где можно взять этот компонент?(KaDAO)



fidget   (2002-02-20 17:43) [7]

Компонент нашла, поставила...
только там даже если устанавливаешь ODBC, то все равно в SystemDatabase оно спрашивает .mdb файл...
Как линковать таблицы к MDB файлам?



biocron   (2002-02-20 23:35) [8]

Создаеш MDB
KADaoDatabase1.CreateAccessDatabase("C:\NewDb.mdb");
потом

какую хош таблицу линк

KADaoTable1.Active := False;
KADaoTable1.TableName := "";
KADaoDatabase1.LinkExternalTable("d:\ExcelTest.xls","Sheet1$",Excel_80_Table,0);
KADaoTable1.TableName := "Sheet1$";
KADaoTable1.Active := True;

для dbf
dBase_III_Table = "dBase III;DATABASE=%s"; {Drive:\Path}


там хелп есть в компоненте





Suntechnic   (2002-02-21 04:47) [9]

>biocron © (20.02.02 23:35)
По-моему вы о разных вешах говорите. Основное предназначение DAO это дуступ к Access, а автору нужен MySQL. Теоретически можно конечно через DAO->ODBC->MySQL, но кому такая головная боль нужна?

>fidget © (20.02.02 17:43)
Тебе какая ф-циональность необходима? Если выполнить пару запросиков и вернуть пару значений, тогда пожалуй несложно будет и на ODBC API написать, ну а если что-то сложнее, то ищи компоненты по для прямого доступа через ODBC, но к сожалению все хорошие платные.



Mike_Goblin   (2002-02-21 10:33) [10]

Найди компоненты прямого доступа Zeos (или другие) и не мучайся :)))



fidget   (2002-02-21 11:54) [11]

>Mike_Goblin
Да есть у меня компоненты прямого доступа и через API напрямую с mysql работала, но мне через ODBC надо, ТЗ у меня такое :(((

>Suntechnic
Траффик я не думаю что будет очень большой и запросы в основном select-ы будут, по функциональности то что предоставляет ODBC+ADO меня вполне устраивает, единственное что меня там не устраивает это скорость :(
Среди настроек ODBC не нашла ничего такого, что могло бы существенно повысить данную характеристику...
Меня интересовали альтернативные варианты работы через ODBC с MySQL
Кстати, а ты не мог бы поподробнее про написание API на ODBC?



Suntechnic   (2002-02-21 16:14) [12]

>fidget © (21.02.02 11:54)
>Кстати, а ты не мог бы поподробнее про написание API на ODBC?

А что именно подробнее тебя интересует? Документация по ODBC API вся на MSDN есть. Я когда то писал обортку из классов для ODBC API и даже исходники где-то валяются, но это было на С++. Если есть конкретные вопросы, спрашивай. Но опять же, если тебе, например, надо данные запросов в DBGrid-е отображать, тот как понимаешь без написания своего компонента через ODBC API это не получится.



biocron   (2002-02-22 13:18) [13]

???DAO->ODBC->MySQL, но кому такая головная боль нужна? Почему, пусть попробует, ADO, работает через ODBС но очень тяжко,DAO с линком, и крейтом базы, сразу во временную базу на локале в MDB файле ,будет работать в десятки раз быстрее не жели он будет работать напрямую, конечно теряется определенная актуальность, но енто уже технология написания обновления



fidget   (2002-02-22 16:09) [14]

to biocron>
Я чуть не очень понимаю как линковать таблицы mysql, которые фактически состоят из 3х файлов: *.frm, *.myd, *.myi ?




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.21;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.74 MB
Время: 0.032 c
1-66901           lipskiy               2002-03-06 02:11  2002.03.21  
OpenDialog перестал реагировать на InitialDir !!! Помогите разобраться с глюком.


1-66932           Di_wind               2002-03-05 21:35  2002.03.21  
Время создания файла.


14-66960          maks_f                2002-02-05 10:33  2002.03.21  
структура файла excel


1-66881           DeNN                  2002-03-05 20:21  2002.03.21  
Уважаемые Мастера!


3-66748           Alex Laza             2002-02-19 10:40  2002.03.21  
Как получить доступ к .dbf Налоговой отчетности за 2001 г. (версия 2.1)?