Firebird embed server low connection speed
14 отговора
575 прегледа
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\
използвам 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\
Re: Firebird embed server low connection speed
Базата ти с разширение GDB ли е? И пуснат ли ти е System Restore на Windows-а? Ако да - или промени разширението на базата или изключи System Restore за диска, на който е базата
Re: Firebird embed server low connection speed
System Restore е пуснат, а базата ми не с разширение GDB нито IB и FB.Сложил съм си мое разширение.Забелязах че приложението ми се държи много странно когато създавам базата данни с метода CreateDatabase() на IBDatabase компонентата.Целия компютър се забавя и не става за работа.Всичко реагира със закъснение (бутони, менюта и др. контроли).
Какво трабва да се направи за да се избегнат тези проблеми?
Какво трябва да е разширението на базата?
А това да изключвам System Restore не ми харесва- необходимо ли е?
Какво трабва да се направи за да се избегнат тези проблеми?
Какво трябва да е разширението на базата?
А това да изключвам System Restore не ми харесва- необходимо ли е?
Re: Firebird embed server low connection speed
Не е необходимо да изключваш System Restore. Windows XP следи за промени на файловете с разширение GDB и им прави копия. Затова под XP базата ти не трябва да е с него. Според мен си нацелил пак разширение (не си казал какво е), което е следено от System Restore. Или го изключи за момент (ще ти изтрие съществуващите restore points) или си сложи на базата разширение FDB. Ако нещата се оправят - проблемът е ясен.
Re: Firebird embed server low connection speed
Разширението което бях сложил е .ST. Сложих разширение FDB - съшата работа.Спрях System Restore - пак същата работа.Така че проблема си остана.
Иначе след connect-a сървъра работи много бързо.
Иначе след connect-a сървъра работи много бързо.
Re: Firebird embed server low connection speed
Хм... Значи трябва да е нещо друго.
Предполагам си проверил, че точно свързването към базата се бави, а не нещо друго по време на стартиране на програмата, нали? Какъв е connection string-а, който ползваш? При стартиране на програмата Database компонента свързан ли е към някаква база или го правиш runtime? Опитвал ли си на други машини/OS как се държи програмата?
Постни и малко сорс. Може да е от полза
Предполагам си проверил, че точно свързването към базата се бави, а не нещо друго по време на стартиране на програмата, нали? Какъв е connection string-а, който ползваш? При стартиране на програмата Database компонента свързан ли е към някаква база или го правиш runtime? Опитвал ли си на други машини/OS как се държи програмата?
Постни и малко сорс. Може да е от полза
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.
Re: Firebird embed server low connection speed
Това е един DLL който Create-ва IBDatabase и IBTransaction Осъществява връзката и връща References към IBDatabase.Всичко е Ок освен забавянето което е от порядъка на 10 секунди на процесор AMD 1.1 GHz i Win XP с NTFS
Re: Firebird embed server low connection speed
Пробвах го тоя код. При мен зареждане на DLL, връзка, изпълняване на проста заявка и освобождаване на DLL-а минават за по-малко от секунда (Cel 1 GHz). Пусни си някой профайлър (например аз ползвам GPProfiler) и виж къде точно се бави. Причината може да е или в друга част на кода или в обкръжението, в което ти е стартирана програмата. Виж как се държи на други компютри. Ако там е добре - виж какви са разликите с твоя (както каза колегата - например антивирусна програма, конфигурация, версия на сървъра и т.н.).
ПП Сетих се нещо. Може би няма значение, но юзнал си ShareMem и в DLL-а и в програмата, нали?
ПП Сетих се нещо. Може би няма значение, но юзнал си ShareMem и в DLL-а и в програмата, нали?
Редактирано от andrew_nikoloff на
Re: Firebird embed server low connection speed
И с ShareMem - и без него същата работа.
Re: Firebird embed server low connection speed
ако имаш големи view-та в базата данни, при осъществяване на връзка към нея се получава такова забавяне.
Re: Firebird embed server low connection speed
Това сериозно ли
Я дай малко повече инфо, че аз нещо май не мога да си представя такъв ефект като как ще възникне.
2 ^Mem
Ти сигурен ли си че ползваш точно ембедед-а. Защото, ако не се лъжа, библиотеката беше fbembed.dll, а не fbclient
Я дай малко повече инфо, че аз нещо май не мога да си представя такъв ефект като как ще възникне.
2 ^Mem
Ти сигурен ли си че ползваш точно ембедед-а. Защото, ако не се лъжа, библиотеката беше fbembed.dll, а не fbclient
Re: Firebird embed server low connection speed
При мен се е получавало подеобно нещо. Даже си беше с истински сървър, а не ембеднат. Но базата беше 800-900 MB. Имаше забавяне от 30-120 секунди. Дори повече. Опитвахме с IB и Firebird, все тая. После работи добре. Затова се отказахме да търсим проблема и го зарязахме.
Re: Firebird embed server low connection speed
Да точно така. Преименувал съм fbembed.dll на gds32.dll.
Грешката е моя, че съм написал fbclient.dll.
Грешката е моя, че съм написал fbclient.dll.