powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Access-ODBC душит производительность???
24 сообщений из 24, страница 1 из 1
Access-ODBC душит производительность???
    #32625807
selis76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть приложение на Access которое использует курсоры. (OpenRecordset)
Читает с Oracle 8.1.7 Odbc линк
Вижу что медленно работает. Начал копать. Простая программа на полный скан таблицы в 500 мегабайт дала удивительные результаты.
В не зависимости от мощьности ПК мы имеет скорость в сетевом интерфейсе 80000 байт\с на прием и 60000 байт на отправку. Причем при переходе на гораздо мощный ПК клиента скорость не увеличилась. Сервер - свободен, сетка тоже (можно копировать файлы на приличной скорости 5мб\с с сервера - сетка 100мегабит в т.ч. на клиентах)

Взял утилиту OracleSQL plus которая работает без Odbc и запустил курсор (программа ниже) и надоже - скорость возрасла до 250000 байт\с на прием и на отправку уменшилась до 30000 т.е. Прием возрос. На более мощном
ПК скорость приема увеличилась до 500000 байт\с. Т.е. имеем возрастание на порядок
Можно ли как нибудь оптимизировать работу ODBC?

SET AUTOPRINT ON
SET TERMOUT OFF
SET HEADS OFF
SPOOL D:\TEMP\TEST_PERF.TXT
VARIABLE VREC REFCURSOR
BEGIN
OPEN :VREC FOR SELECT * FROM CONS.CONS;
END;
/

Это программа которую вызываем из формы
Private Sub Start_Click()
Dim MyDbs As Database
Dim Rc As Recordset
Set MyDbs = CurrentDb
Set Rc = MyDbs.OpenRecordset("xxx_tab")
Dim FStr As String
Dim Rcount As Long
Dim I As Long
Rcount = 0
Rc.MoveFirst
Rc.CacheSize = 50
Rc.FillCache

While Not Rc.EOF 'And Not Rcount = 1000
For I = 1 To Rc.Fields.Count
FStr = FStr & CStr(Nz(Rc.Fields(I - 1))) & "|"
Next I


FStr = ""
Rc.MoveNext

Rcount = Rcount + 1
If Rcount Mod 50 = 0 Then
Rc.CacheStart = Rc.Bookmark
Rc.FillCache
Me.MyTxt.Caption = "Îáðàáîòàíî " & Rcount & " çàïèñåé"
Me.Repaint
End If

Wend



End Sub

Сергей С
...
Рейтинг: 0 / 0
Access-ODBC душит производительность???
    #32625819
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если открыть ODBC Workspace?

Прилинкованные ODBC таблицы ведут себя безобразно
...
Рейтинг: 0 / 0
Access-ODBC душит производительность???
    #32625890
selis76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я грохнул линк и сделал прямой запрос. Действительно соотношение по производительности изменилось на прием 140000 на отсылку 20000.
Т.е. изменили соотношение на почти на 100%
однако это очень отстает от того что дает нам SQL Plus. Хотя я читал некую статью где утверждалось обратное
и самое главное на более мощном ПК увеличения производительность выше 140000 не наблюдалось :)

Вот статья
http://ourworld.compuserve.com/homepages/Ken_North/ODBCPERF.HTM

Сергей С
...
Рейтинг: 0 / 0
Access-ODBC душит производительность???
    #32625904
Фотография kedzo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
всю логику на сервер ->
...
Рейтинг: 0 / 0
Access-ODBC душит производительность???
    #32625915
selis76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kedzoвсю логику на сервер ->
Это понятно, но переписывать приложение это не быстрый процесс а улучшить чтонибудь хочется сейчас. Тем более есть другие приложения типа 1С для SQL у которых таже картина а логику на сервер там не перенесешь. И потом видно что ODBC душит вот только где :(
...
Рейтинг: 0 / 0
Access-ODBC душит производительность???
    #32625931
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не совсем ODBC душит, аксесс с его бейсиком и рекордсетами. Если б код был на С написан - картинка была б другая (о чём в статье и говорится :)
...
Рейтинг: 0 / 0
Access-ODBC душит производительность???
    #32625942
витёкша
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey ShА если открыть ODBC Workspace?



для более внятного ответа сильно хотелось бы версию Акцесс знать.

переход на ODBC Workspace определенно лучше.
Однако НИКАКОГО выигрыша можно и не заметить. Насколько не заметить - зависит от количества возвращаемых записей и их размера в строковом представлении.

при тысячах записей думаю - нечем будет мерять разницу. Все съест цикл формирования строки.


тут определенно что-то надо делать с

Код: plaintext
1.
2.
For I =  1  To Rc.Fields.Count
FStr = FStr & CStr(Nz(Rc.Fields(I -  1 ))) & "|"
Next I

с обращением к полям можно обойтись так

варианты внутри DAO
0) прокешировать Fields
1) позаморачиваться с RC.GetRows
2) использовать RC.Collect(I-1)

при переходе на АДО - разумно попользовать
ss = rC.GetString(adClipString, , "|", vbNullString, "<нет данных>")
(на место пропущенного параметра можно поставить величину кеша страницы, в приведенном примере - 50, а можно ничего не ставить - таогда цикл While исчезнет, и будет заменет целиком ОДНОЙ СТРОКОЙ.).
Не могу "проверить", но возможно при работе с АДО сетевая производительность чуть улучшится. (а может и ухудшится - смотря кто писал). Думаю, что даже если собственно сетевая производительность ухудшится общий забег в любом случае выиграет RC.GetString. Причем с хорошим отрывом.


Если не переходить на АДО и/или не пользовать GetString на весь рекордсет разом, то к конструкции & надо отнестись отдельно. (возможно потребуется функция Format или "аналог")

Зная заранее, сколько записей будет возвращено( и, может быть, но не обязательно, - размер строки записи) - сформировать заранее строку, пригодную для вмещения всего результата

FStr = String$(mySize,0)
дальше формировать ее так

Mid(Fstr,currentPos) = strChunk
currentPos =currentPos + Len(strChunk)

в худшем случае придется подрезать по нулевому символу.

можно поискать реализации классов типа "faststring". Делать они в 90% случаев будут в точности то, что выше указано.
...
Рейтинг: 0 / 0
Access-ODBC душит производительность???
    #32625945
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну можно попробовать Recordset.GetRows применить
...
Рейтинг: 0 / 0
Access-ODBC душит производительность???
    #32625953
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
интересно а oledb драйвер для оракла бывает?
...
Рейтинг: 0 / 0
Access-ODBC душит производительность???
    #32625965
витёкша
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
АлексейКинтересно а oledb драйвер для оракла бывает?
бывает. и от МС и от самого Оракла, и "от третьих".

Помню в семерке (я позднее не видел ничего) было как минимум три механизма доступа из Васика. (правда, ДАО/ОЛЕДБ - кажется не было).
Самый быстрый - ОДБС. Но нормальных на 100% драйверов ОДБС просто не было в природе.
...
Рейтинг: 0 / 0
Access-ODBC душит производительность???
    #32626011
Фотография kedzo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
была такая фича на старой работе:
оракл 7
акс 97
драйвер, кажется, был от оракла

так вот в некоторых запросах вылезала полная фигня, если не включать группировку. Выловить так и не удалось...
...
Рейтинг: 0 / 0
Access-ODBC душит производительность???
    #32626016
витёкша
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kedzoбыла такая фича на старой работе:
....
так вот в некоторых запросах вылезала полная фигня, если не включать группировку. Выловить так и не удалось...

полная фигня при возврате числовых значений?
...
Рейтинг: 0 / 0
Access-ODBC душит производительность???
    #32626061
selis76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Alexey Sh и витёкша
Access 97, гонял эту прогу и на Access 2000.
Однако вот что беспокоит
Процессор клиента загружен не более чем на 30% (я еще Access давал High priority в Windows.) По моему разумению вычислительные ресурсы используются не полностью как же Recordset access и прочие навороты могут мешать? Да они не забивают проц.
Более того я сознательно ввел в процедуру FillCache думал что она сразу будет группой считывать строки, а видно нет, не делает
Таблица большая 3 милиона записей, каждая запись в oracle гдето 990 байт
Такое впечатление что гдето в ODBC сидит timeout например опрашивает чередь поступивших данных
...
Рейтинг: 0 / 0
Access-ODBC душит производительность???
    #32626096
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
selis76To Alexey Sh и витёкша
Access 97, гонял эту прогу и на Access 2000.
Однако вот что беспокоит
Процессор клиента загружен не более чем на 30% (я еще Access давал High priority в Windows.) По моему разумению вычислительные ресурсы используются не полностью как же Recordset access и прочие навороты могут мешать? Да они не забивают проц.
Более того я сознательно ввел в процедуру FillCache думал что она сразу будет группой считывать строки, а видно нет, не делает
Таблица большая 3 милиона записей, каждая запись в oracle гдето 990 байт
Такое впечатление что гдето в ODBC сидит timeout например опрашивает чередь поступивших данных

все он делает (в смысле филлкеш)
с арифметикой у меня всегда проблемы - на вскидку
размер выходной строки = 2.5 гигабайта - если "все за раз"
не может такого быть, чтобы вы всю таблу за раз обрабатывали.
если циферки не враки - ты должен отчетливо наблюдать, как с течением времени все реже и реже обращения к серверу идут.
Да и сервер напрягать держать невыбранных буферов и/или открытых курсоров такого размера - не почеловечески.

Ох, НЕ ВЕРЮ, что вы весь набор за раз обрабатываете.

СКОЛЬКО ВРЕМЕНИ ЗАНИМАЕТ В ЧАСАХ РАБОТА?
железка-то какая?


Сегодня вечером - без всякого рекордсета проделай фокус

Sub Test

Dim s1 as String
dim FStr as String
dim iNdex as long

s1 = String(999,0)

For index = 1 to 3000000
Fstr = FStr & s1
NExt

и оставь на ночь считаться. Завтра посмотри, где там индекс болтается, на каком миллионе.
Производительность у тебя выше 30% и не поднимется.
Ос очень быстро своп начнет и будешь ты работать с диском. А процессор ждать, пока дисковые операции будут выполняться.

Во первых, использовать Mid= - бегом марш.
Во вторых, тут что-то с размером думать надо. Нафига и кому така строка/файл размера не дочитать до конца жизни?


ЗЫ0
ох, так и просится вынос в ActiveX DLL...

ЗЫ1
строка ведь дальше в файло превращается?
Дальнейшая оптимизация - писать напрямую в файл. Лучше отображенный на память. В принципе, можно изобразИть с ним как со строкой обращение.
Правда чуть покодировать придется.
...
Рейтинг: 0 / 0
Access-ODBC душит производительность???
    #32626113
selis76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Victosha
Как видно из приведенного в Topic кода там по 50 записей считывается, а при следующем считывании он очищается,
строка FStr у меня очищается см FStr=""
Так что далее сборщик мусора все уберет
P S Кстати GetRows (Если Recordset базируется на прямом запросе) увеличивает траффик, но уменьшает количество читаемых записей в секунду при этом загрузка Pentuim III 633 подпрыгивает до 70%
Если Recordset сделать на Линке то производительность вообще падает при применении GetRows.
Так что Fields ведет себя лучше?
...
Рейтинг: 0 / 0
Access-ODBC душит производительность???
    #32626125
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да вот еще подумал -
1) момент вставки подстроки - было бы удачно, если бы размер вставляемой подстроки всегда был кратен четырем (8 байт).

по сравнению с временем формирования выходной строки все остальное не так критично, но все же

2) обращение к полям при рекордсетах такого размера - тоже становится важным. Перепиши через RS.Collect.
Поиграйся с настройками рекордсета. Говорят для MS SQL, в смысле скорости, лучше, когда CursorLoaction = adUseServer (в терминах АДО), курсор для рекордсета заказан forwardonly, cashsize=1.
для Оракл - не знаю.
...
Рейтинг: 0 / 0
Access-ODBC душит производительность???
    #32626148
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
извини - невнимателен и не обновляю ранее прочитанное - не пересматриваю. виноват.

если это не универсальная процедура - попробуй явно прокешировать каждый Field. или попробуй Collect. здесь я не могу внятного совета дать - что лучше - не знаю.

50*990 - это конечно не гигабайты, а всего 49 килобайт. Попробовать все же стоит. Примерно так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
dim curPos as Long, tLen as Long
dim tmpStr, resultS as String
 'в действительности должно быть не 990, а максимальное количество 
 
 'символов, получающееся после приведения к строке
 

Fstr = String( 51 * 990 )

curPos =  1 

While Not Rc.EOF  'And Not Rcount = 1000
 

 'пытаемся выиграть на &
 
For I =  1  To Rc.Fields.Count

  tmpStr= CSTR(RC.Collect(I -  1 ))
  tLen = Len(tmpStr)
  Mid(Fstr,curPos)=tmpStr
  curPos = curPos + tLen

  Mid(Fstr,curPos)="|"
  curPos = curPos +  1 
  
   ' FStr = FStr & CStr(Nz(Rc.Fields(I - 1))) & "|"
 
Next I

 'результат в виде строки
 
resultS = Mid$(FStr, 1 &,curPos- 1 )

...

 
  ' FStr = "" - здесь НЕ ОБНУЛЯЕМ СТРОКУ, А МЕНЯЕМ curPos
 
  curPos= 1   ' выиграли переинициализацию строки.
 

Rc.MoveNext
...
Рейтинг: 0 / 0
Access-ODBC душит производительность???
    #32627116
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 selis76

Ау, есть ли новости с фронта?
...
Рейтинг: 0 / 0
Access-ODBC душит производительность???
    #32627524
selis76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Victosha and all
После модификаций (сделал recordset ForwardOnly, не на линке а на прямом запросе повысил выборку до ~1000 зап\с (Против ~3000 зап\с через SQL Plus)
Загрузка процессора клиента уже возрасла до 60%
Потом только movenext (запись то всеравно грузится целиком). Скорость возросла с 1000 з\с до ~1600 з\с то же по килобайтам (запись при передаче занимает 170 байт и (990 это если отформатировать для вывода))
Убрал & скорость возрасла с 1000 до 1100.
Тогда неясно - а почему загрузка проца на более мощньм ПК 2ГГ против 633 Мг
такая же, а скорость заметно не увеличивается ?

Вывод такой - факт тормозов с взаимодействием Access - Odbc зафиксирован (SQL Plus догнать не удалось), (подобное я кстати наблюдал и на 1С - SQL). Сам Access инкапсулирует вызовы в вызовы к ODBC драйверу - SQLFetch SQLBindCol и т.д. А как там работает ODBC драйвер можно только догадываться,может он какой нибудь timeout использует в ожидании запрошенной порции данных а управлять этим timeout я не могу. Дальнейшее исследование возможно если можно пошевелить параметрами Odbc драйвера например, а подходящих я не нахожу.
Шевелить параметрами Oracle клиента ихмо не имеет смысла так как SQL Plus я пока не догнал
...
Рейтинг: 0 / 0
Access-ODBC душит производительность???
    #32627668
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все-таки не ясно, какие именно проводся замеры.
ИМНО - догнать SQL Plus на Акцесс - задача неосуществимая.
По двум причинам

1) как помню, SQL Plus обращается к Oracle.Net напрямую, минуя ОДБС.
Трудно предствить, чтобы драйвер выиграл. Когда-то их было как минимум 3 от Оракл от Майкрософт и от Мерант. Производительность их может отличаться. У тебя чей?
2) У тебя происходит обработка в p-Коде, исполнитель которого работает как один из потоков Акцесс. Увеличить скорость собственно обработки плученных от ДАО строк в 20-40 раз можно, перенеся код как есть в native-компилированную ActiveX dll.

А сравнивать с SQL Plus разумно можно просто пустой цикл перебора строк для приложения, обращающегося к ОДБС напрямую. У тебя все-таки даже в случае ODBCWorkspace есть посредник.


У тебя должна бы быть под рукой подходящая АДО библиотека.
Я бы все-таки советовал попробовать. Может все-таки получиться выигрыш на твоем рекордсете заметный. если бы это был MS SQL Server - точно получил бы.

Оптимизировать скорость перебора рекордсета и скорость его обработки хорошо в двух независимых процедурах. Ты ведь так и делаешь?

Пока что понял следующее.
Манипуляции с параметрами рекордсета дают 60% прирост скорости.
Попытка ускорить формирование строки - еще 10%
Почему бы их не скомбинировать?

Еще что-то можно выиграть на доступе к полям.

Вот про GetRows - я не понял в точности, что там за коллизия вышла, и на чем именно скорость потерялась.
До опыта предполагаю, что собственно на доступе к элементам массива.
Это как раз можно попробовать пооптимизировать.

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

Если есть желание "продолжать" (а мне - так интересно было бы увидеть, на чем сердце успокоилось), может выложишь последние фрагменты получившегося?
любобытно увидеть абсолютное время работы процедуры до оптимизации и после.
...
Рейтинг: 0 / 0
Access-ODBC душит производительность???
    #32628056
selis76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Victosha
Замеры проводятся простые. Логика такова есть более мощный ПК PiV 2Gg и менее мощный P633 и сервер 2 проца по 933 + Oracle + сеть 100 мегабит. Есть приложение на Access которое использует курсор. Использую ODBC драйвер от Oracle
Нужно оборудованием и настройками операционной системы увеличить производительность. Вот на этом простом примере я значимого прироста не замечаю в приложении Access, но замечаю в SQLPlus. Т.е. смена машины клиента практически ничего не дает для Access, но дает для SQL Plus.
Такую же картину я наблюдал для 1С SQL которая работает с ODBC c Microsoft SQL
Да в процессе обсуждения удалось заставить Access быстрее читать курсором данные путем оптимизации кода. Но почему на более мощной машине я не вижу хорошего (на 50%-100%) прироста?
По идее проц быстро делает запрос отправляет серверу, периодически опрашивается очередь полученных данных, и как только они есть они забираются. Т.е. чем мощнее проц клиента тем короче промежуток на обработку данных.
Глупый вопрос. Почему скорость копирования файлов с сервера в 50 раз выше сканирования таблицы?
Понятно что способ извлечения информации разный.
Но почему тогда более мощная машина не дает сокращения времени на выборку данных в случае Access ODBC но дает это в случае SQLPlus???
...
Рейтинг: 0 / 0
Access-ODBC душит производительность???
    #32628165
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
selis76To Victosha
Замеры проводятся простые. Логика такова есть более мощный ПК PiV 2Gg и менее мощный P633 и сервер 2 проца по 933 + Oracle + сеть 100 мегабит. Есть приложение на Access которое использует курсор. Использую ODBC драйвер от Oracle
...
По идее проц быстро делает запрос отправляет серверу, периодически опрашивается очередь полученных данных, и как только они есть они забираются. Т.е. чем мощнее проц клиента тем короче промежуток на обработку данных.

Глупый вопрос. Почему скорость копирования файлов с сервера в 50 раз выше сканирования таблицы?
...
Но почему тогда более мощная машина не дает сокращения времени на выборку данных в случае Access ODBC но дает это в случае SQLPlus???


Предварительно
Я не знаю ответа на Ваш вопрос. Просто изложу свое представление.
------------
1) ПРЕЖДЕ ВСЕГО НЕОБХОДИМО ПРИНЯТЬ ВО ВНИМАНИЕ, ЧТО SQL PLUS НЕ РАБОТАЕТ ЧЕРЕЗ ОДБС. (буду сильно удивлен, если это не так) Поэтому сравнение с ним не вполне корректно. ОДБС как правило работает медленнее.
Просто потому, что с курсором работает существенно менее эффективно, прокручивая их построчно, да и заказывать норовит, как подозреваю глобальные курсоры. Подозреваю, что SQL Plus может обойтись с курсором более эффективно - как с потоком данных.

2) Рост производительности приложения работающего через ОДБС, вообще говоря не обязано быть таким же, как и у SQL Plus. Ниже я постараюсь высказать свое представление - почему.

Вы замеряли, на сколько проц PIV 2 Gg быстрее чем проц P633 ?
На сколько другие приложения (в частности офисные, и в любом случае без учета графических пакетов) считаются быстрее на 2Гц, чем на P633?

Было бы несправделиво, если бы Акцесс ускорился больше, чем Ексель, например.
Сильно сомнительно, чтобы офис (и прочие приложения) в среднем ускорились бы на вашем 2 Гц на столько же, на сколько ускорился SQl Plus.

Применительно к сетевому обмену - На PIV - быстрее системная шина, и он гораздо с большей эффективностью использует (может использовать на специально для этого написанных задачах) 100 мб сетевую карту. Практически полностью выбирая ее производительность. Для P633 это по существу за рамками архитектуры - он просто не может толком нагрузить сетевую карту.

При смене машинки, например, должно ускориться, например копирование файла по сети.
SQL Plus должен ускориться примерно в той же пропорции, или больше.

Ускорение SQL Plus легко объяснить - его ускорение в существенной степени предопределено прямизной обращения к сетевому уровню Оракл и эффективностью написания этого уровня. И выигрыш этот определен тем, что карта начинает работать.

А считать на процессоре SQL Plus почти нечего в тот момент, кода он прием данных осуществляет.

Акцесс работает через ДАО, которое транслирует его вызовы к ОДБС, оно транслирует к Оракловому драйверу, который уже начинает работать с сетевым уровнем Оракл. При этом Акцессу нужно еще исполнять код ВБА и еще малость чего пытаться делать.

При таком подходе приложению НЕКОГДА к сетевой карте обращаться, ему бы успеть перемолотить весь код между Акцессом и Оракл.нет. Верхняя граница здесь проходит по линии производительность процессора-шины памяти-модулей памяти + задержки на перевод процессора в работу в режиме ядра при обращении к системным (в т.ч. сетевым функциям). +вероятные доп потери при наличии подкачки. (памяти хватает акцессу?) По этой верхней границе насколько PIV 2ГЦ быстрее?

Само по себе использование ОДБС от Оракл - может быть не очень удачное в смысле именно производительности. ОДБС, вообще говоря, чуждая для Оракл технология, хотя и одна из самых быстрых среди "не родных".
Может для смеху драйвер от MS попробовать?

Хотя я еще раз посоветовал бы на АДО обратить внимание.

Если у вас на входе файл, то, вслед за kedzo, повторю - все на сервер.
...
Рейтинг: 0 / 0
Access-ODBC душит производительность???
    #32628730
selis76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То что сетевка полностью не выбирается это факт. 100000 байт\с 500000 байт\с это даже с накладными расходами на "технические данные в пакете" и задержку 0.96 мкс между кадрами мало. Если взять минимальную длину полезных данных в пакете 46 байт кажется, то уж 4 мегабайт полезных данных можно передать без проблем.
Кстати с тогоже сервера во время работы Access я могу копировать файлы на скорости не меньше 5 мб\с
Время переключения между thread может влиять, как я понимаю оно не учитывается в счетчике загрузки процессора (судя по описанию) и при частом переключении мы можем иметь незагруженный но большие тормоза.
(Такое я наблюдал при работе через Ole)
В общем попробую с таким курсором поработать через что нибудь компилируемое, например, delphi там будет видно.
Сергей С
...
Рейтинг: 0 / 0
Access-ODBC душит производительность???
    #32628991
витёк ша
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
"компиируемое" ускорит обработку полученного курсора - то есть формирование строки. В лучшем случае подберешся по скорости АДОШ-ному GetString по скорости собственно выборки значений полей, но вряд ли перегонишь.
Все остальное останется без изменений.

-------------
Блин - вот приходится какие-то окончания придумывать
Какой-то витёк уже есть зарегистрированный
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Access-ODBC душит производительность???
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]