On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение
администратор




Пост N: 2728
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 12.03.13 11:27. Заголовок: Leto DB Server (продолжение 10) (продолжение)


Продолжаем тут

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 191 , стр: 1 2 3 4 5 6 7 8 9 10 All [только новые]


администратор




Пост N: 4618
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 28.03.15 16:17. Заголовок: Я пробовал играться ..


Я пробовал играться с аналогом LETO_SETSKIPBUFFER , в ADS и особого ускорения не увидел.
Пробовал руками разные значения и спец функцию........

Функция такая , для определения кол-ва кэшируемых записей
 
Func LenReCash(als)
local ret:=0
local i
FOR i = 1 TO (als)->(fcount())
ret+=(als)->(FIELDSIZE(i))
NEXT

ret+=4

return int((65535/ret)/5.4)



Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 879
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 28.03.15 17:02. Заголовок: Честно говоря, не по..


Честно говоря, не понял, как это определяет количество кэшируемых записей и что это за магические числа = 65535 и 5.4 :).
Не помню уже аналог из ADS, но для LetoDB эта функция ( leto_setskipbuffer()) реально работает, если применять ее по назначению - например, увеличить буфер при последовательном чтении dbf.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4619
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 28.03.15 17:17. Заголовок: alkresin пишет: Не ..


alkresin пишет:

 цитата:
Не помню уже аналог из ADS


AdsCacheRecords()

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 102
Зарегистрирован: 23.06.08
ссылка на сообщение  Отправлено: 28.03.15 19:18. Заголовок: alkresin пишет: Пут..


alkresin пишет:

 цитата:
Путь к библиотекам прописан: /apps/harbour/lib, а они у вас, по вашим словам, в /apps/harbour/lib/linux/gcc/libhbvm.a


Спасибо, действительно, не обратил внимания.

Но теперь возникла другая ошибка:
gcc obj/linux/server.o obj/linux/common.o obj/linux/hbip.o obj/linux/common_c.o obj/linux/blowfish.o obj/linux/leto_2.o obj/linux/letofunc.o obj/linux/letolist.o obj/linux/letoacc.o obj/linux/letovars.o obj/linux/leto_lnx.o obj/linux/errint.o obj/linux/errorsys.o -obin/letodb -L/apps/harbour/lib -Wl,--start-group -lhbvm -lhbrtl -lhbcpage -lhblang -lhbrdd -lhbrtl -lhbmacro -lhbpp -lgtstd -lrddntx -lrddcdx -lrddfpt -lhbcommon -lhbsix -Wl,--end-group -lm -lpthread 
obj/linux/leto_2.o: In function `thread2':
leto_2.c:(.text+0x79d): undefined reference to `hb_vmThreadInit'
leto_2.c:(.text+0x918): undefined reference to `hb_vmThreadQuit'
collect2: ld returned 1 exit status
make: *** [bin/letodb] Error 1


Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 880
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 28.03.15 19:38. Заголовок: SkyNET пишет: gcc ...


SkyNET пишет:

 цитата:
gcc ... -obin/letodb -L/apps/harbour/lib -Wl,--start-group -lhbvm -lhbrtl ...



Вообще-то здесь должна быть hbvmmt, а не hbvm. Какая у вас версия letodb и где вы ее взяли ?

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 881
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 28.03.15 19:50. Заголовок: alkresin пишет: Как..


alkresin пишет:

 цитата:
Какая у вас версия letodb и где вы ее взяли ?


Ясно, у нас там лежит для скачивания старая версия.

Воспользуйтесь CVS:

@echo off
SET CVSROOT=:pserver:anonymous@letodb.cvs.sourceforge.net:/cvsroot/letodb
SET HOME=C:\CVS\

c:\cvs\cvs login
c:\cvs\cvs checkout -r rel-1-mt -P letodb

Или на Sourceforge вот тут: http://letodb.cvs.sourceforge.net/viewvc/letodb/letodb/?pathrev=rel-1-mt внизу страницы - Download GNU tarball

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 882
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 28.03.15 20:32. Заголовок: Загрузил на Sourcefo..


Загрузил на Sourceforge letodb-2.15-src.zip - самые свежие исходники.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 103
Зарегистрирован: 23.06.08
ссылка на сообщение  Отправлено: 29.03.15 17:46. Заголовок: alkresin пишет: Ясн..


alkresin пишет:

 цитата:
Ясно, у нас там лежит для скачивания старая версия.


alkresin пишет:

 цитата:
Или на Sourceforge вот тут: http://letodb.cvs.sourceforge.net/viewvc/letodb/letodb/?pathrev=rel-1-mt внизу страницы - Download GNU tarball



Спасибо, с новой версией собралось без проблем.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4073
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 29.03.15 18:12. Заголовок: alkresin пишет: Все..


alkresin пишет:

 цитата:
Все, что между begin transaction ... end transaction отправляется на сервер одним пакетом.


Что то не компилируется... Выдает ошибку:
Harbour 3.2.0dev (r1503131756)
Copyright (c) 1999-2015, http://harbour-project.org/
demo_letodb.prg(269) Error E0030 Syntax error "syntax error at 'TRANSACTION'"
demo_letodb.prg(298) Error E0010 ENDIF does not match IF
2 errors


Может в коде неправильно ставлю ?
Скрытый текст



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1039
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 29.03.15 20:01. Заголовок: 1. REQUEST LETO не з..


1. REQUEST LETO не забыл?
2. И может на самом деле проблема в "demo_letodb.prg(298) Error E0010 ENDIF does not match IF" ?

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 883
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 29.03.15 20:04. Заголовок: Это я уже подзабыл. ..


Это я уже подзабыл.
Правильно будет:
LETO_BEGINTRANSACTION()
...
LETO_COMMITTRANSACTION()

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1040
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 29.03.15 20:06. Заголовок: alkresin пишет: Пра..


alkresin пишет:

 цитата:
Правильно будет:
LETO_BEGINTRANSACTION()
...
LETO_COMMITTRANSACTION()



Да, точно. )

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 517
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.03.15 21:04. Заголовок: Andrey а мой пример..


Andrey
а мой пример не смотрел ?
там же все есть, даже с буфером для транзакции
(его размер по умолчанию, раньше был небольшой и при широкой записи были
проблемы - буфер перевыделялся и загрузка шла долго, потом Pasha подправлял)
я всегда использую буфер

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4621
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 29.03.15 21:19. Заголовок: Andrey Заведи #comm..


Andrey
Заведи
#command BEGIN TRANSACTION => LETO_BEGINTRANSACTION()
#command END TRANSACTION => LETO_COMMITTRANSACTION()


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4074
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 29.03.15 22:54. Заголовок: Dima пишет: а мой п..


Dima пишет:

 цитата:
а мой пример не смотрел ?


Смотрел, просто решил маленький пример сначала сделать, а потом уж поболее делать.

PSP пишет:

 цитата:
1. REQUEST LETO не забыл?
2. И может на самом деле проблема в "demo_letodb.prg(298) Error E0010 ENDIF does not match IF" ?


1) Стоит.
2) до этого не доходить, ошибка компиляции до этого, а эта ошибка неправильно вылазит..

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4075
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 29.03.15 23:06. Заголовок: alkresin пишет: LET..


alkresin пишет:

 цитата:
LETO_BEGINTRANSACTION()
...
LETO_COMMITTRANSACTION()



Компилирует нормально, но вылетает при работе:
Error DBFCDX/1031 Синтаксическая ошибка</p><BR>
Called from LETO_COMMITTRANSACTION(0)
Called from CREATEDBF1251(290)
Called from (b)MAIN(87)
Called from _DOCONTROLEVENTPROCEDURE(1651)
Called from EVENTS(1516)
Called from _DOMESSAGELOOP(0)
Called from _ACTIVATEWINDOW(1373)
Called from MAIN(125)

Строка (290) - LETO_COMMITTRANSACTION()

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4076
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 30.03.15 01:16. Заголовок: alkresin пишет: Ест..


alkresin пишет:

 цитата:
Естественно, это же 4000 обращений к серверу и 4000 ответов. Оформите это как транзакцию, или серию транзакций по группе записей в пакете - и количество обращений туда-сюда, а, соответственно, и затраченное время в разы уменьшится.


Я был не прав. Тормоза в тесте были от показа GRID'a !
Сделал правильный тест, 5000 записей (4 поля) :
1) отправка на сервер в инете (в моем городе) БЕЗ транзакций: 15 сек.
2) отправка на сервер в инете (в Москву) БЕЗ транзакций: 1 мин. 57 сек.

Просто супер... Не знаю как дальше будет, если базу увеличить...
Бегунок тоже сделал.... Только AVI-ка замирает при передаче... Не особенно красиво, хотя собираю с ключом -mt.

Кому интересно - вот пример на МиниГуи https://cloud.mail.ru/public/0a167351289f/LetoDB-demo-MiniGui.7z


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 518
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.03.15 08:25. Заголовок: Andey пишет: вот при..


Andey пишет:
 цитата:
вот пример на МиниГуи


1. вынеси connect до окна (если его нет, то сообщение и конец) или в oninit (тогда сначала контрлы hide или disable,
если connect есть переводи в рабочее соостояние, иначе сообщение ...).
2. в цикл загрузки ставь do events
3. если файл на сервере постоянный и с индексами, то делай OrdSetFocus(0), zap, загрузку, reindex, OrdSetFocus(1)
4. не мучай grid перезагрузкой Item-ов, используй browse (skipbuffer устанавливай в кол-во строк в browse (default 10))
5. получить длину записи области RecSize()+1, или посчитать длины из dbStruct() и +1.

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 884
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 30.03.15 09:53. Заголовок: Andrey пишет: Компи..


Andrey пишет:

 цитата:
Компилирует нормально, но вылетает при работе:
Error DBFCDX/1031 Синтаксическая ошибка</p><BR>
Called from LETO_COMMITTRANSACTION(0)


Вставьте перед LETO_COMMITTRANSACTION():

SELECT TEMP1251

Уж не помню, почему это было сделано, но при committransaction текущей должна быть удаленная таблица.


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 519
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.03.15 10:15. Заголовок: Andrey пишет:Строка ..


Andrey пишет:
 цитата:
Строка (290) - LETO_COMMITTRANSACTION()


транзакция leto для областей rdd LETO, для др. rdd могут быть свои механизмы транзакций
...
SELECT TEMP866
SKIP
ENDDO
// здесь DBFCDX !!!
LETO_COMMITTRANSACTION()
//end transaction

alkresin пишет:
 цитата:
Вставьте перед LETO_COMMITTRANSACTION():
SELECT TEMP1251


+1

SergKis пишет:
 цитата:
// текущий alias это LETO таблица -
leto_BeginTransaction(nMaxBuf)...


просто Андрею немного внимательней надо см. примеры

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 191 , стр: 1 2 3 4 5 6 7 8 9 10 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 202
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет