Firebird embed server low connection speed

14 отговора 575 прегледа
#1

Firebird embed server low connection speed

Здравейте,
използвам Firebird embebed server.Всичко е ОК но connect-ването към базата става много бавно.Какъв

може да е проблема?

ОС Win XP .
Firebird_embed 1.5.2
Delphi 7.
IBComponets.

сървъра е в директорията където се намира приложението:

C:\MyApp\bin\App.exe
C:\MyApp\bin\gds32.dll {fbclient.dll}
C:\MyApp\bin\ib_util.dll
C:\MyApp\bin\firebird.conf
C:\MyApp\bin\intl\
C:\MyApp\bin\udf\

Отговор
в отговор на ^Mem #2

Re: Firebird embed server low connection speed

Базата ти с разширение GDB ли е? И пуснат ли ти е System Restore на Windows-а? Ако да - или промени разширението на базата или изключи System Restore за диска, на който е базата

Отговор
в отговор на andrew_nikoloff #3

Re: Firebird embed server low connection speed

System Restore е пуснат, а базата ми не с разширение GDB нито IB и FB.Сложил съм си мое разширение.Забелязах че приложението ми се държи много странно когато създавам базата данни с метода CreateDatabase() на IBDatabase компонентата.Целия компютър се забавя и не става за работа.Всичко реагира със закъснение (бутони, менюта и др. контроли).
Какво трабва да се направи за да се избегнат тези проблеми?
Какво трябва да е разширението на базата?
А това да изключвам System Restore не ми харесва- необходимо ли е?

Отговор
в отговор на ^Mem #4

Re: Firebird embed server low connection speed

Не е необходимо да изключваш System Restore. Windows XP следи за промени на файловете с разширение GDB и им прави копия. Затова под XP базата ти не трябва да е с него. Според мен си нацелил пак разширение (не си казал какво е), което е следено от System Restore. Или го изключи за момент (ще ти изтрие съществуващите restore points) или си сложи на базата разширение FDB. Ако нещата се оправят - проблемът е ясен.

Отговор
в отговор на andrew_nikoloff #5

Re: Firebird embed server low connection speed

Разширението което бях сложил е .ST. Сложих разширение FDB - съшата работа.Спрях System Restore - пак същата работа.Така че проблема си остана.
Иначе след connect-a сървъра работи много бързо.

Отговор
в отговор на ^Meм #6

Re: Firebird embed server low connection speed

Хм... Значи трябва да е нещо друго.
Предполагам си проверил, че точно свързването към базата се бави, а не нещо друго по време на стартиране на програмата, нали? Какъв е connection string-а, който ползваш? При стартиране на програмата Database компонента свързан ли е към някаква база или го правиш runtime? Опитвал ли си на други машини/OS как се държи програмата?
Постни и малко сорс. Може да е от полза

Отговор
в отговор на andrew_nikoloff #7

Re: Firebird embed server low connection speed

Ето малко сорс как става връзката с БД.

const
dbPath = 'C:\Pr1\Data\STDATA.FDB';

{$J+}
const
IBdb: TIBDatabase = nil;
IBtr: TIBTransaction = nil;

procedure CreateIBConnection(DataFile: String);
begin
if not Assigned(IBdb) then
IBdb := TIBDatabase.Create(nil);
if not Assigned(IBtr) then
IBtr := TIBTransaction.Create(nil);
with IBdb do begin
try
DatabaseName := DataFile;
DefaultTransaction := IBtr;
LoginPrompt := False;
SQLDialect := 3;
with Params do begin
Clear;
Add('user_name=sysdba');
Add('password=masterkey');
Add('lc_ctype=WIN1251');
end;
Connected := True;
with IBtr do begin
DefaultDatabase := IBdb;
Active := True;
end;
except
FreeAndNil(IBdb);
FreeAndNil(IBtr);
end;
end;
end;


procedure LibExit(Reason: Integer);
begin
if Reason = DLL_PROCESS_DETACH then begin
FreeAndNil(IBdb);
FreeAndNil(IBtr);
end;
end;
{$J-}

function GetDB: TIBDatabase;
begin
Result := IBdb;
end;

exports
GetDB;

begin
CreateIBConnection(dbPath);
DLLProc := @LibExit;
end.



Отговор
в отговор на ^Meм #8

Re: Firebird embed server low connection speed

Това е един DLL който Create-ва IBDatabase и IBTransaction Осъществява връзката и връща References към IBDatabase.Всичко е Ок освен забавянето което е от порядъка на 10 секунди на процесор AMD 1.1 GHz i Win XP с NTFS

Отговор
в отговор на ^Meм #9

Re: Firebird embed server low connection speed

Изключи антивирусната програма.

Отговор
в отговор на ^Meм #10

Re: Firebird embed server low connection speed

Пробвах го тоя код. При мен зареждане на DLL, връзка, изпълняване на проста заявка и освобождаване на DLL-а минават за по-малко от секунда (Cel 1 GHz). Пусни си някой профайлър (например аз ползвам GPProfiler) и виж къде точно се бави. Причината може да е или в друга част на кода или в обкръжението, в което ти е стартирана програмата. Виж как се държи на други компютри. Ако там е добре - виж какви са разликите с твоя (както каза колегата - например антивирусна програма, конфигурация, версия на сървъра и т.н.).



ПП Сетих се нещо. Може би няма значение, но юзнал си ShareMem и в DLL-а и в програмата, нали?

Редактирано от andrew_nikoloff на

Отговор
в отговор на andrew_nikoloff #11

Re: Firebird embed server low connection speed

И с ShareMem - и без него същата работа.

Отговор
в отговор на ^Mem #12

Re: Firebird embed server low connection speed

ако имаш големи view-та в базата данни, при осъществяване на връзка към нея се получава такова забавяне.

Отговор
в отговор на nettle #13

Re: Firebird embed server low connection speed

Това сериозно ли

Я дай малко повече инфо, че аз нещо май не мога да си представя такъв ефект като как ще възникне.

2 ^Mem
Ти сигурен ли си че ползваш точно ембедед-а. Защото, ако не се лъжа, библиотеката беше fbembed.dll, а не fbclient

Отговор
в отговор на NDeu #14

Re: Firebird embed server low connection speed

При мен се е получавало подеобно нещо. Даже си беше с истински сървър, а не ембеднат. Но базата беше 800-900 MB. Имаше забавяне от 30-120 секунди. Дори повече. Опитвахме с IB и Firebird, все тая. После работи добре. Затова се отказахме да търсим проблема и го зарязахме.

Отговор
в отговор на NDeu #15

Re: Firebird embed server low connection speed

Да точно така. Преименувал съм fbembed.dll на gds32.dll.
Грешката е моя, че съм написал fbclient.dll.

Отговор