Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

FireBird - тормоз.... [D7]


serko ©   (2007-01-02 13:39:00) 

Сетевая база! База установлена на серваке! На каждом компе сети из 10 компов стоит клиентская прога которая записывает данный в базу. Так вот процесс Открытия... Записи...Закрытия происходит очень долго....
Клентские компы - Pentium 233. Не ахти но все-таки. Сервак нормальный Athlon 2000!
Почему так далго?


Дмитрий Белькевич   (2007-01-06 04:22:00) [1]

А еще правильней - батон 'обновить' никто не отменял...


Carmen   (2007-01-05 20:21:00) [2]

правильно работать с транзакциями и изменения будут видеть все.
и правильней будет использовать компонент Query з командой SQL Insert а потом ExecQuery.


vitv   (2007-01-04 09:30:00) [3]

Почитай про транзакции.
> ь классная книжка "Мир InterBase".Там довольно понятно описаны
> основные приемы работы с сервером и методы построение клиентских
> приложений.

Книга Супер.


vlad-mal   (2007-01-03 20:54:00) [4]

Есть классная книжка "Мир InterBase".
Там довольно понятно описаны основные приемы работы с сервером и методы построение клиентских приложений.


Ученик чародея   (2007-01-03 00:10:00) [5]


> serko ©   (02.01.07 22:54) [10]
>
>
> > 1. На кой хрен для каждой записи подключаться, а потом
> отключаться
> > от БД?
>
> Потому как без отключения от БД данные на других компах
> не отображаются!


Я ПлакалЪ! Только ЙАД!


serko   (2007-01-02 22:54:00) [6]


> 1. На кой хрен для каждой записи подключаться, а потом отключаться
> от БД?

Потому как без отключения от БД данные на других компах не отображаются!


> 2. MainForms.IBDataSet1.Open;  MainForms.IBDataSet1.InsertRecord
> - это еще больший ламеризм. Зачем открывать набор данных,
>  если нужнотолько на сервер загнать запись в таблицу?

Хорошо что подметили! Сначала в голове было одно, потом другое вот и забыл убрать...


Desdechado   (2007-01-02 19:20:00) [7]

1. На кой хрен для каждой записи подключаться, а потом отключаться от БД? Это мазохизм какой-то...
2. MainForms.IBDataSet1.Open;  MainForms.IBDataSet1.InsertRecord- это еще больший ламеризм. Зачем открывать набор данных, если нужнотолько на сервер загнать запись в таблицу?


atruhin   (2007-01-02 17:50:00) [8]

> Вопрос, ты что на каждую вставку, изменение заново подключаешься
> к базе?

Судя по коду да! И помимо глобальной глупости, тормоза как видимо,
возникают из-за кривой настройки DNS.


Ученик чародея   (2007-01-02 17:31:00) [9]

Я бы все таки через Insert и ExecSQL сделал.

FB какой версии?
Как открывается транзакция Read Commited или Snapshot?
IBExpress обновлены?(сам пользуюсь SQLDirect)

Вопрос, ты что на каждую вставку, изменение заново подключаешься к базе?


serko   (2007-01-02 16:55:00) [10]

Первичный ключ - это первое поле! оно у меня ID - которое генерируется автоматически +1....


Ученик чародея   (2007-01-02 15:58:00) [11]


> serko ©   (02.01.07 15:49) [3]


Сразу бы посоветовал разработчику изучит 4 команды SQL - Select,Insert, Update,Delete и пользоватся ими.


Ученик чародея   (2007-01-02 15:56:00) [12]


> serko ©   (02.01.07 15:49) [3]


А что из них первичный ключ, и есть ли он там?


serko   (2007-01-02 15:49:00) [13]


MainForms.IBDatabase1.DatabaseName:='Server:c:\Base.fdb';
MainForms.IBDatabase1.Open;
Try
   If not MainForms.IBDataSet1.Active then
           MainForms.IBDataSet1.Open;
   MainForms.IBDataSet1.InsertRecord([nil,
                                          datetimeTostr(now),
                                          Fam,
                                          Inttostr(Gr),
                                          Zur_ot,
                                          Oc,
                                          '',
                                          Pc]);
    MainForms.IBTransaction1.Commit;
Except
    MainForms.IBTransaction1.Rollback;
    Raise;
End;
MainForms.IBDataSet1.Close;
MainForms.IBDatabase1.Close;

Вот такой код на клиентской программе! На серваке висит только база! Вот когда начинает выполняться этот код программа подвисает, и через некоторое время все становится ОК! Данные записываются нормально... Но где то около 1 минуты


sniknik   (2007-01-02 14:13:00) [14]

> Почему так далго?
1% за то что глюк/недоработка в FireBird.
99% за кривые руки использующего(того кто делал эти "Открытия... Записи...Закрытия"...).

т.е. можеш смело предъявлять претензии разработчику "клиентской проги", хотя, желательно сменить формулировку с "очень долго" на чтонибудь поконкретнее типа "время сохранения одной записи, размера ...,  в среднем равно ... что считаю неприемлимым для данной программы".


Sergey Masloff   (2007-01-02 14:05:00) [15]

Руки у разработчиков потому что...
С 10 пользователями P233 с 64 Мб оперативки сервером быть может и ничего тормозить не будет.


Наверх

Титульная страница Поиск, карта сайта Написать письмо