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




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


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

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


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




Пост N: 3150
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 03.05.14 08:58. Заголовок: Srdjan пишет: Есть ..


Srdjan пишет:

 цитата:
Есть ли это программный код:
#xtranslate Sx_SetScope(<a>,<b>) => ordScope( <a>,<b> )
#xtranslate Sx_SetScope(<a>,) => ordScope( <a>, )
#xtranslate Sx_ClrScope() => (ordScope(0,),ordScope(1,))

n := Sifre->( LastRec() )
a1 := Array( n )
a2 := Array( n )
aFill( a1, 0 )
aFill( a2, 0 )
RobMat->( OrdSetFocus( 'Datum' ) )
RobMat->( Sx_SetScope( 0, dOd ), Sx_SetScope( 1, dDo ), dbGoTop() )
WHILE !RobMat->( EOF() )
IF LEFT(RobMat->Dokument,1)=='H' .AND. RobMat->Sifra<>0 .AND. RobMat->Radnik==nVoz .AND. RobMat->Magacin == 1
a2[ RobMat->Sifra ] += RobMat->Ulaz
a1[ RobMat->Sifra ] += RobMat->Izlaz
END
RobMat->( dbSkip() )
END

с следующий код программы:
RobMat->( OrdSetFocus( 'Datum' ) )
a:=RobMat->( LETO_GROUPBY("Sifra", "Ulaz, Izlaz", "LEFT(Dokument,1)=='H' .AND. Sifra<>0 .AND. Radnik=="+ALLTRIM(STR(nVoz,5,0))+" .AND. Magacin == 1", dOd, dDo) )



Результат leto_GroupBy будет немного другой: не 2 одномерных массива a1 и a2, а один двумерный массив вида:
{ {Sifra1, Ulaz1, Izlaz1}, {Sifra2, Ulaz2, Izlaz2}, ...}


Спасибо: 0 
Профиль
nbatocanin



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 03.05.14 14:21. Заголовок: LetoDB vs LAN


Здравствуйте!

Какие факторы определяют скорость Letodb? Я пробовал различные комбинации (Windows 7, XP, Windows Server) - измерил время некоторых обработки. Обычно Letodb работает в 4-5 раз быстрее, чем обычный доступ к файловой-сервере (LAN). Но Letodb иногда до 2-3 раз становится медленнее. Я использую NTX RDD. Есть ли CDX быстрее, чем NTX?

Спасибо, Ненад


Спасибо: 0 
Srdjan



Пост N: 4
Зарегистрирован: 01.05.14
ссылка на сообщение  Отправлено: 04.05.14 10:53. Заголовок: Спасибо Паша, Я вас..


Спасибо Паша,

Я вас понимаю.
 цитата:
Результат leto_GroupBy будет немного другой: не 2 одномерных массива a1 и a2, а один двумерный массив вида:
{ {Sifra1, Ulaz1, Izlaz1}, {Sifra2, Ulaz2, Izlaz2}, ...


Вместо двух строк, то функция возвращает матрицу. Я проверил, вместо 10 минут, результат получается за 30 секунд на клиентском компьютере.



Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 3152
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 05.05.14 10:48. Заголовок: Здравствуйте! Каки..



 цитата:
Здравствуйте!

Какие факторы определяют скорость Letodb? Я пробовал различные комбинации (Windows 7, XP, Windows Server) - измерил время некоторых обработки. Обычно Letodb работает в 4-5 раз быстрее, чем обычный доступ к файловой-сервере (LAN). Но Letodb иногда до 2-3 раз становится медленнее. Я использую NTX RDD. Есть ли CDX быстрее, чем NTX?

Спасибо, Ненад



Вопрос многоплановый. Основной фактор, определяющий производительность - это открытие БД на сервере в монопольном режиме, в отличие от CDX/NTX. Поэтому режим Share_Tables рекомендуеся использовать только на этапе отладки.
Другой фактор - буферизация операций skip. Этим можно управлять: с помошью функции leto_SetSkipBuffer можно задать размер skip-буфера, размер которого по умолчанию равен 10 записям.
Можно также использовать seek буфер (по умолчанию он выключен).
Для увеличения производительности рекомендуется использовать scope и серверные фильтры.
LetoDB конечно лучше сравнивать не с dbfcdx/dbfntx, а с Ads.
Узкие места letodb - это relations и обновление данных. Туь он уступает ads
Если задействовать функции leto_sum, leto_groupby, и udf-функции (это полноценное программирование на сервере, примерный аналог stored proc), можно добиться намного более значительного результата.


Спасибо: 0 
Профиль
nbatocanin



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 06.05.14 07:50. Заголовок: Я попробую этих пара..


Я попробую этих параметров, спасибо большое!

Ненад

Спасибо: 0 
Профиль
nbatocanin



Пост N: 2
Зарегистрирован: 06.05.14
ссылка на сообщение  Отправлено: 12.05.14 05:27. Заголовок: тест RDD


Я сделал несколько тестов различных RDD (LAN - прямой доступ к серверу, LetoDB, HBNetIO, ADS). Результаты и тестовая программа:

https://www.dropbox.com/s/u3g9cpa4cpuiwsl/test3.xls
https://www.dropbox.com/s/g4uvhu1f6wwjiqy/TEST3.TXT

Я заметил, что на некоторых машинах результаты были очень плохые для LetoDB. Тест я работал на нескольких серверах: Win Server 2003 и Server 2008 (новый и лучший компьютер.). Тест состоит из простых операций (APPEND, SKIP, SEEK, REPLACE) . Результаты очень интересны:

 - XP работать быстрее, чем Win7, даже когда Win 7 компьютер является более мощным (например, строка 4 и 9).

- прямой доступ к серверу иногда намного быстрее, чем клиент-сервер! Например, линия 14/19. Интересно, что результаты ADS/Leto такие же, независимо от того что сервер работает быстрее.

- APPEND: Leto/ADS работает медленнее, чем LAN/HBNetIO.

 - Leto/ADS/HBNetIO дают сходные результаты во всех случаях , независимо от изменений окружающей среды. Очевидно, что прямой подход LAN использует некоторый тип кэша, что не влияет на Leto/ADS/HBNetIO.

Я попробовал тоже параметры, которы дал Паша, но я не заметил разницы, за исключением Leto_SetFastAppend.

С уважением, Ненад

(Извините за ошибки)


Спасибо: 0 
Профиль
Srdjan



Пост N: 6
Зарегистрирован: 01.05.14
ссылка на сообщение  Отправлено: 12.05.14 06:00. Заголовок: Почему я вижу эту ош..


Почему я вижу эту ошибку при использовании команды Use (cPath+"Users") New ALIAS USERS
-------------------- Internal Error Handling Information ---------------------

Subsystem Call ....: LETO
System Code .......: 1021
Default Status ....: .F.
Description .......: Data type error
Operation .........:
Arguments .........:
Involved File .....: //127.0.0.1:2812\hz\Users
Dos Error Code ....: 0

Trace Through:
----------------
DBUSEAREA : 0 in Module:

users.dbf

Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 3176
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 12.05.14 08:08. Заголовок: Почему я вижу эту ош..



 цитата:
Почему я вижу эту ошибку при использовании команды Use



Что-то users.dbf не скачивается.
Поставьте еще в letodb.ini параметр

Debug=10

Перезапустите службу letodb, и посмотрите, какие команды появятся в letodb.log. Так будет понятнее ситуация.

Спасибо: 0 
Профиль
dimao



Пост N: 79
Зарегистрирован: 14.01.09
ссылка на сообщение  Отправлено: 03.06.14 15:39. Заголовок: Как собрать LETO ночной сборкой харбора?


Как собрать LETO ночной сборкой харбора? Что-то ничего не получается.

C:\hb-old\letodb>..\bin\hbmk2 -info -trace  rddleto.hbp letodb.hbp 
hbmk2: Autodetected platform: win
hbmk2: Autodetected C compiler: mingw
hbmk2: Using Harbour: C:\hb-old\bin C:\hb-old\include C:\hb-old\lib\win\mingw
C:\hb-old\bin C:\hb-old\contrib C:\hb-old\addons
hbmk2: Using C compiler: c:\hb-old\comp\mingw\bin\gcc.exe
hbmk2: Compiling...
hbmk2: 'cd' to: lib\.hbmk\win\mingw
hbmk2: C/C++ compiler command:
gcc.exe -c -O3 -march=i586 -mtune=pentiumpro -fomit-frame-pointer -W -Wall -pipe -I"C:/hb-old/include" -I../../../../include
../../../../source/common/net.c
../../../../source/common/net.c: In function 'leto_NetName':
../../../../source/common/net.c:144:18: error: 'MAX_COMPUTERNAME_LENGTH' undeclared (first use in this function)
../../../../source/common/net.c:144:18: note: each undeclared identifier is reported only once for each function it appears in

../../../../source/common/net.c:148:4: warning: implicit declaration of function 'GetComputerName' [-Wimplicit-function-declar
ation]
../../../../source/common/net.c:145:9: warning: unused variable 'szValue' [-Wunused-variable]
hbmk2[rddleto]: Error: Running C/C++ compiler. 1
gcc.exe -c -O3 -march=i586 -mtune=pentiumpro -fomit-frame-pointer -W -Wall -pipe -I"C:/hb-old/include" -I../../../../include
../../../../source/common/net.c
hbmk2: 'cd' back.


PPS:и вот еще, когда описал явно константу

#define MAX_COMPUTERNAME_LENGTH 15

получаю ошибки вида:
../../../../source/server/letofunc.c:339:13: error: expected '(' before 'ISBYREF'
../../../../source/server/letofunc.c:374:10: error: expected '(' before 'ISBYREF'

Это в С коде ошибки? или как-то можно это обработать?


Спасибо: 0 
Профиль
nbatocanin



Пост N: 3
Зарегистрирован: 06.05.14
ссылка на сообщение  Отправлено: 12.06.14 17:37. Заголовок: ошибки


Паша,

Можете ли вы исправить эти ошибки, пожалуйста?

http://sourceforge.net/apps/phpbb/letodb/viewtopic.php?f=1&t=10
http://sourceforge.net/apps/phpbb/letodb/viewtopic.php?f=1&t=25

С уважением, Ненад

Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 3205
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 13.06.14 08:29. Заголовок: dimao пишет Как собр..


dimao пишет

 цитата:
Как собрать LETO ночной сборкой харбора? Что-то ничего не получается.



source/common/net.c для сборки теперь не нужен. Его надо удалить из скрипта для hbp

Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 3207
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 13.06.14 16:53. Заголовок: nbatocanin пишет: П..


nbatocanin пишет:

 цитата:
Паша,

Можете ли вы исправить эти ошибки, пожалуйста?

http://sourceforge.net/apps/phpbb/letodb/viewtopic.php?f=1&t=10
http://sourceforge.net/apps/phpbb/letodb/viewtopic.php?f=1&t=25

С уважением, Ненад



По второму вопросу - исправил. А по первому - разве не помог патч ? Вопрос еще остался ?

Спасибо: 0 
Профиль
nbatocanin



Пост N: 4
Зарегистрирован: 06.05.14
ссылка на сообщение  Отправлено: 18.06.14 02:37. Заголовок: Я попробовал его, и ..


Я попробовал его, и кажется, что он делает хорошо. Спасибо!

Ненад

Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 3208
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 09.07.14 14:19. Заголовок: Александр, я обнаруж..


Александр, я обнаружил, что ordBagExt() aka IndexExt() с конца прошлого года стал выдавать результат на верхнем регистре, а раньше выдавал на нижнем. Это сделано намеренно ?

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




Пост N: 407
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 06.09.14 19:35. Заголовок: Pasha как правильно..


Pasha
как правильно включить в версию v 1.350.2.199 2014/08/05 работу с AutoIncrement: RddInfo( RDDI_TABLETYPE, DB_DBF_VFP ) ?
раньше делал так:
 
FUNCTION hs_InitSet()
rddSetDefault( "DBFCDX" )

RddInfo( RDDI_TABLETYPE, DB_DBF_VFP ) // New

SET AUTOPEN ON
SET DELETE OFF

RETURN Nil


Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 3212
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 08.09.14 12:17. Заголовок: Это и не обязательно..


Это и не обязательно. Достаточно просто создать таблицу с полем AUTOINC - "+" для dbCreate

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




Пост N: 409
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 08.09.14 17:11. Заголовок: Pasha СПАСИБО ..


Pasha
СПАСИБО

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




Пост N: 410
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 08.09.14 20:33. Заголовок: Pasha начали пробов..


Pasha
начали пробовать LetoDb (v.m. 1.350.2.199 2014/08/05) и кое что поковыряли, может будет полезным
1. letomgmn.c:
line 901:
char ** pRetValue;
она объявлена, но не инициализирована, а в line 927 используется:
((cType=='3')? (char*)hb_parc(3) : szValue), uiFlags, ((bPrev)? pRetValue : NULL) );
а в line 949:
free( *pRetValue );
т.е. освободить память, которую не выделяли, что, наверное, не есть хорошо ?

2. несколько сервисов (от имени exe) на pc (с разных каталогов, переименовав letodb.exe в др. имя). leto_win.c
изменения помечены // BAA
Скрытый текст




Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 3213
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 09.09.14 08:23. Заголовок: pRetValue - это ссыл..


pRetValue - это ссылка на ссылку. Память в *pRetValue выделяется в функции LetoVarSet, и ее надо освободить.
Так что здесь все нормально.

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




Пост N: 411
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 09.09.14 08:58. Заголовок: Pasha пишет:Так что ..


Pasha пишет:
 цитата:
Так что здесь все нормально.


Это да, но лезет WARNING, а без него лучше.

Спасибо: 0 
Профиль
Ответов - 301 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 All [только новые]
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 216
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет