Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» InterBase и FireBird: вопросы по работе и их решение

Автор: Silla
Дата сообщения: 13.07.2006 17:45
Спасибо. Проверю с понедельника.
Огромное спасибо Всем.
Автор: ShadowMen
Дата сообщения: 19.07.2006 11:14
При первом подключении к базе данных заметно сильное торможение. Потом все Ок!
Сервер - Yafil, операционка XP. В FAQ вычитал что может помочь переименование расширения базы gdb на что нибудб другое - не помогло. Кто нибудь встречался с подобной проблемой?
Автор: vshersh
Дата сообщения: 19.07.2006 11:19
ShadowMen
Подключение по сети или локально?

Попробуй выключить восстановление системы...

Добавлено:
А еще фаервол XP-вый можно попробовать отключить
Автор: ShadowMen
Дата сообщения: 19.07.2006 14:02
vshersh
Подключение локально. Фаерволы - отключал, не помогает. Попробую отключить восстановление системы
Автор: vshersh
Дата сообщения: 19.07.2006 14:22
ShadowMen
Вот еще нашел в факе

Цитата:
медленный (долгий) коннект на Win2003
Это происходит только на старых версиях IB/FB/YA, например Interbase 6, Firebird 1.0.x. Причина - изменения в ядре Win2003, в результате чего существующие ошибки синхронизации в коде IB/FB/YA стали проявляться в виде очень долгого коннекта (20 секунд и более).

Избавиться от этой проблемы можно либо переходом на InterBase 7.1, Firebird 1.5, последнюю версию Yaffil, или возвратом на Windows 2000.

Написано для 2003 сервера... Но возможно актуально и для XP SP2
Автор: Silla
Дата сообщения: 25.07.2006 09:45
Доброго времени суток!
Проблема "медленной" выборки осталась, но есть дополнения.
Исходные данные:
TpFIBDatabase - есть транзакция по умолчанию и на обновление
TpFIBDataSet: tFolder, tDoc - подчиненная
на каждую есть своя транзакция на чтение и запись (на фоме: слева дерево папок, справа писок документов принаджлежащие выбранной папке)
tTheme, tTypeDoc - вставляются в tDoc - есть транзакция общая для чтения
У всех TpFIBDataSet - AutoCommit := True;
При коннекте и последующем открытии таблиц всё вроде идет нормально.
Но как только добавляю запись (tDoc), то сразу после этого просходит торможение (медленна выборка списка документов при выборе другой папки).
Например:
TransWriteDoc.StartTrans;
tDoc.Append;
Modal := TFrmDoc.Create(Application);
if Modal.ShowModal = mrOK then
begin
tDoc.Post;
//TransWriteDoc.Commit;
end
else
begin
tDoc.Cancel;
TransWriteDoc.Rollback;
end;

Подскажите, где я что-то делаю не так.
Заранее спасибо.

Добавлено:
Теперь какая-то другая фича
При коннекте, выдает, что имя и пароль неправильные
Автор: OXDBA
Дата сообщения: 25.07.2006 10:13
Silla
Эээ..ммм.. что-то мне подсказывает солдатская смекалка, что
tDoc.UpdateTransaction <> TransWriteDoc.
Иначе при включенном автокоммите у tDoc (что не есть хорошо)

Код:
tDoc.Post;
TransWriteDoc.Commit;
Автор: Silla
Дата сообщения: 25.07.2006 11:02
Да уж, действительно лишний Коммит
Исправил.
tDoc.UpdateTransaction = TransWriteDoc
Так вот, после аппенда уже не важно, запостил запись или отменил
Все равно тормозит, т.е. при открытии таблиц вначале, время выборки 0,5-1с
после аппенда - 4-10с
Автор: OXDBA
Дата сообщения: 25.07.2006 13:54

Цитата:
Да уж, действительно лишний Коммит

И там же лишний RollBack Хотя мне непонятно как оно раньше работало, exception'ы должны были валиться на каждый Post/RollBack. Ну да ладно.
Насчет "торможения". Вариантов слишком много. Пройдись отладчиком, посмотри в каком месте программа встает, если в явном виде точку не найдешь, зацепи FIBSQLMonitor и посмотри чего ты шлешь на сервер. Но очень похоже на то, что при переходе на другую папку выполняется куча "лишних" действий, типа переоткрытия большого количества датасетов.
Если при коннекте говорит, что имя/пасс неправильные, значит так оно и есть.
Автор: Silla
Дата сообщения: 25.07.2006 17:40
По поводу старта, коммита и роллбэка - пыталс переделать по явной транзакции.
Да осталось ... после этого
Если Роллбэк не выполнять, у меня в гриде остается строка, как будто пытался всётаки добавить запись.
По поводу имя/пасс не знаю что произошло,
Переставил firebird и всё вернулось на свои места.
По поводу монитора посмотрю уже завтра.
Спасибо, что не оставили утопающего.
Пытаюсь плавать, а ласты еще не нарастил.
Автор: GUNski
Дата сообщения: 25.07.2006 19:42
Вопрос. Что в ИбЭксперте означает надпись на статусбаре: "Осталось 253 изменения таблицы [Имя таблицы]"
Автор: vkramnik
Дата сообщения: 25.07.2006 21:10
Вот что сказано в хелпе по ИБ-Эксперту :
http://www.ibexpert.info/documentation
/%20%201.%20Getting%20Started/%20%204.%20IBExpert%20Screen
/%20%208.%20(7)%20Status%20Bar/253%20%20changes%20of%20table%20left/4144.html
(адрес - в одну строчку)

Цитата:

253 changes of table left

Note: each table in an InterBase/Firebird database has its own metadata changes counter. Each table can be altered 255 times (add or remove columns, change field type etc.). When any of these counters reaches the value of 255 it is not possible to alter any tables any further, and a database backup and restore is necessary.

IBExpert indicates in the status bar how many changes my be made in the database before being forced to perform a database backup and restore. This message may be deactivated, if wished, using the IBExpert menu item, Database / Register Database or Database / Database Registration Info, and checking the option "Don't display metadata changes counter info" on the Additional page.

Document-ID: 4144
25.07.2006


Т.е., смысл в том, что каждая таблица имеет счетчик изменений (добавлений/удалений столбцов, изменений типов полей и т.д.). Как только счетчик дойдет до 255, нужно будет сделать бэкап/ресторе базы, чтобы снова можно было редактировать таблицы.
Автор: ProDman
Дата сообщения: 26.07.2006 15:42
Помогите с запросом

Делаю запрос:

Код: select id_some from some_table
Автор: vshersh
Дата сообщения: 26.07.2006 16:35
ProDman
Выполнить можно так

Код: select *
from some_table d
where EXISTS(select * from test_function(d.id_some))
Автор: OXDBA
Дата сообщения: 26.07.2006 17:09
ProDman

Код:
select
t.id_some,
p.some_value_from procedure
from some_table t
left join some_procedure(t.id_some) p
on (0=0)
Автор: vshersh
Дата сообщения: 26.07.2006 17:16
OXDBA
Я просто написал первое, что пришло в голову...
Твой метод лучше
P.S. Извините за флуд...
Автор: OXDBA
Дата сообщения: 26.07.2006 17:28
Понятно, просто с exists надо быть предельно внимательным, а то я тут как-то натуралом по 17млн. записей слева прошелся, а потом натуралом справа....
Автор: ProDman
Дата сообщения: 27.07.2006 14:37
OXDBA

Запрос выполняется, но процедура ни чего не возвращает. Пробовал вместо id_some, передаваемой в процедуру, вписывать это значение вручную, так же результата не получил. Метод vshersh так же не получился.
Более того запрос вида

Код: slect * from test_function('0000001')
Автор: vshersh
Дата сообщения: 27.07.2006 14:42
ProDman
Текст процедуры, в студию!

Добавлено:
В общем [more=вот]
Код: SET TERM ^ ;

CREATE PROCEDURE TEST (
APARAM INTEGER)
RETURNS (
X INTEGER)
AS
BEGIN
x = 2 * aparam;
SUSPEND;
END^

SET TERM ; ^

GRANT EXECUTE ON PROCEDURE TEST TO PUBLIC;
Автор: OXDBA
Дата сообщения: 27.07.2006 16:50
ProDman
Добавь Suspend в процедуру и будет тебе счастье
Автор: ProDman
Дата сообщения: 09.08.2006 12:34
OXDBA

Прошу прощения, за долгое молчание. Дело было действительно в SUSPEND
Автор: Silla
Дата сообщения: 18.09.2006 10:40
Доброго времени суток!
Возможно ли в триггере написать запрос на выполнение
после апдейта и/или после inserta
если возможно, то как?
Запрос:
insert into t_doc_arh select id_doc, name, type_doc from t_doc
where
t_doc.id_doc = : old_id_doc
Структуры таблиц одинаковые за исключением того, что t_doc_arh.id_doc not primary key
Зранее спсибо.

Добавлено:
Спасибо, уже нашел ответ!
Буду рзбираться

Добавлено:
http://www.p-stone.ru/libr/db/interbase/data/public4/
Автор: OXDBA
Дата сообщения: 18.09.2006 11:35
Насколько я понял требуется это

Код:
insert into t_doc_arh(Field1, Field2 ..)
values (new.field1, new.field2 ...
Автор: NewbieCnt
Дата сообщения: 19.09.2006 17:07
А есть ли стандартные ActiveX/Java applet для запроса клиентских данных из Html, чтобы не надо было компилировать, а просто писать sql запрос например в VB скрипте? Или надо знать какие - то гуиды?
Автор: igorwz
Дата сообщения: 25.09.2006 15:03
Уважаемые коллеги, помогите пожалуйста определиться с вариантом модернизации базы данных (БД).
Был программный комплекс (ПК), работавший с базой Firebird, содержащей около 80 таблиц (файл БД на сегодня имеет размер около 200 мб), из которых половина - нормативные данные (справочники), другая половина - текущие данные (документы).
Возникла задача написания 2-го программного комплекса, который бы использовал те же нормативные таблицы, а текущие данные хранил в своих таблицах, структура которых отличается от текущих таблиц 1-го ПК.
Вопрос: что лучше, с точки зрения минимизации нагрузки на сервер, сеть и клиентские ЭВМ -
1) добавить таблицы с текущими данными 2-го ПК в существующую базу, при этом работать оба ПК будут с единой большой базой;
2) разделить существующую базу на две - нормативную и текущую для 1-го ПК, + создать третью базу для текущих данных 2-го ПК, при этом каждый ПК будет работать с двумя файлами БД: единой нормативной базой и своей текущей.
Автор: DroN_S
Дата сообщения: 25.09.2006 22:39
igorwz
тут уже трёхзвенкой попахивает...
на мой взгляд лучше сделать единую базу, располжить её на серваке и к ней отправлять запросы, сервер всё это дело обработает и вышлет нужную информацию по запросу... затраты должны быть минимальные...
Автор: Sexton
Дата сообщения: 26.09.2006 15:06
igorwz, согласен с DroN_S. Хотя последние версии FIBPlus, вроде как, поддерживают работу с несколькими базами одновременно, пользоваться этим имеет смысл только при особой необходимости.
Автор: pzaytsev
Дата сообщения: 26.09.2006 15:07
Кто может подсказать инструмент аналогичный BlazeTop SQL Monitor для работы с Firebird 2. На двойке при массивных запросах BT SQL Monitor умирает.
Devrace (которые выпускают FIBPlus, Athlant, а также BlazeTop) выпустили вместо BlazeTop новый продукт - SQLHammer - но он поддерживает только Firebird 1,5.
Какие у кого варианты?

IBExpert не предлагать - там только внутренний SQL Monitor.
Автор: test_testov
Дата сообщения: 27.09.2006 09:22
писать свой
Автор: pug
Дата сообщения: 11.10.2006 11:58
Коллеги! Подскажите - кто нибудь втречал
Цитата:
"Firebird Руководство разработчика баз данных"
в электронном виде в сети? И ели да, то где?
Спасибо!

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465

Предыдущая тема: Сравнение двух строк


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.