Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » InterBase и FireBird: вопросы по работе и их решение

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104

Открыть новую тему     Написать ответ в эту тему

OXDBA

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Просто устал писать собственные фибы. Дома ibx, на работе fib. Вот и пишу собственные реопены/релокейты. Пробовал искать, неполучилось.

Цена вопроса - 1500 рублей. Ты оцениваешь свои мучения в эту сумму?

Цитата:
Понимаю, что логики нет и для 2008 года 1500 тысячь айдишников - это предел скуль запроса.

Ничего не понял, какие полтора миллиона, каких ID? Горбы радости опять же...
P.S. Некий Ковязин

Всего записей: 426 | Зарегистр. 19-01-2005 | Отправлено: 10:07 01-07-2008 | Исправлено: OXDBA, 10:08 01-07-2008
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
OXDBA

Цитата:
Ничего не понял, какие полтора миллиона

для 2008 года 1500 тысячь айдишников - это предел скуль запроса.
Может слово смалинт Вам что нибудь скажет? Если нет то может будет понтно что написано в функции (c): ExecQueryIDs А если и это не поможет то попробуйте написать запрос типа:
select id from mytable where id in (" 2000 разных айдишников через запятую ").
В mssql я с такими ограничениями не встречался. Файрбёрд 2.0 - пожалуйста.
Написать Вам преобразование такой строки в инт массив на ассемблере? Пара секунт. А вот в берд сервер пока нельзя.
 
логики нет
Как сделать TBooleanField в IBX датасете? Низнаю, пока никто не объяснил.
Только фбёрд бесплатный

Цитата:
Цена вопроса - 1500 рублей.

Так ответ то один, нзвините но геморой у на пока бесплатно. Спасибо
 
 
 
 
Добавлено:
ps:
Нет возможности в FB20 узнать активна ли сессия айдишники которой остались болтаться в темповой таблице предназначенной для джойна. Мне тупо проще написать TClientSocket и устройть аську в проге чем в "секретной" базе узнать активность сессий чтобы темпы подчистить. Вот темп:
Подробнее...
 
Опять же в msde эти удовольствия есть и они бесплатны...
 
И ещё. Например некий бог скриптового программирования почему то на один из моих ответов тупо запарился и слил свежий RemObject с свн-ки. Незнаю что я ему сказал. Наверное то что перечислил свои лицензии. У нас бы так реагировали.

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 13:18 01-07-2008 | Исправлено: delover, 13:24 01-07-2008
OXDBA

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
delover
Блин, Опера дурканула, извиняюсь, сейчас кину полный ответ  

Всего записей: 426 | Зарегистр. 19-01-2005 | Отправлено: 14:12 01-07-2008 | Исправлено: OXDBA, 14:38 01-07-2008
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
OXDBA
Ой весьма прошу пардону, цыфру 1500 я видимо наобарот прочитал. Это же не 300$!
А как это мы можем решить? У меня Visa Classic.
 
Добавлено:

Цитата:
ключевыми здесь ... mssql,

А это не отожжёт, ибо мои окошечки сейчас уже работают с лёгкостью в таблицах с 25000 записей, как с текстовым редактором. Работает клипбоард, перетаскивания, счётчики выбранного на узлах в тмс-овском thtmltreeview-е. Разницы между текстовым редактором и моими окошечками невидно мне.
 
Влияние Билли? Нет, скорее роботрона z80.
 
 
Добавлено:
и Йёды. Тёмная сторона опасна.

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 14:18 01-07-2008
OXDBA

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Продолжаем разговор mssql значит... Значит по Вашему FireBird должен быть бесплатным клоном mssql?
Если Вы используете FB, то не надо прикручивать к нему костыли от mssql, используйте его достоинства и обходите недостатки.
По существу

Цитата:
select id from mytable where id in (" 2000 разных айдишников через запятую ").

Не надо так зло с FB, если джойн не идет, то возьмите эти 2000 ID  for select'ом в конце концов.
Как сделать TBooleanField в IBX датасете?
Не спрашиваю зачем, понимаю, что этим вопросом уже достали, но эмуляция интом и люминь, если есть желание пообсуждать Bool в SQL прошу в ПМ, не будем здесь разводить ...

Цитата:
Нет возможности в FB20 узнать активна ли сессия айдишники которой остались болтаться в темповой таблице

ИМХО не лучше ли в таком случае ON COMMIT DELETE ROWS?

Цитата:
А как это мы можем решить?  

Так не со мной надо решать, а с Востриковым на Devrace, пока еще не у кого проблем не было. Если совсем не Россия, Беларусь, Украина, Казахстан то я думаю через ibase попробуем.
 
Добавлено:
Ох, не посмотрел на USER_TEMPORARY, см. в двойке README.global_temporary_tables.txt
25000 записей, снова нахлынули воспоминания, теперь о фоксе 2.0

Всего записей: 426 | Зарегистр. 19-01-2005 | Отправлено: 14:53 01-07-2008 | Исправлено: OXDBA, 15:05 01-07-2008
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
OXDBA
Mssql не значит. Он у меня в коробке вместе с именной лицензией на BDS2006 архитект. В АСКУэ системе, где я трудился, прежде использовался этот сервер. Что общего между Билом и mssql не знаю, думаю то же, что и у Буша с Техасом. Про костыли весьма справедливо.
 

Цитата:
Не надо так зло с FB, если джойн не идет, то возьмите эти 2000 ID  for select'ом в конце концов.

Именно джоин я и использую. Но ID сначала должны попасть в базу, например из селекта в DBGridEh в узле "Все элементы", по клавише Ctrl+A. Для  Insert from select sp_split_ids это точно, убедился на тестах. Delete id in select sp_split_ids работает на порядки медленнее delete id in (...), про "убийство" по одиночке я молчу. )))
 

Цитата:
Как сделать TBooleanF... не будем здесь разводить ...  

Не будем, мой компоненты xxxValues работают как датасет и добавляют в IDE-хе филды так же. Это делается на другом уровне. Поверьте приятно смотреть на код пробежки по вариантам разных типов. Лучше плохая поддержка, чем никакой. Я пробовал свою GridEh-у науськать, но что-то делаю не так, всё стало медленно и глючно.
 

Цитата:
ON COMMIT DELETE ROWS

Ой... Хто ито? В pdf пока не найдено.
 

Цитата:
Украина, Казахстан  

Екатеринбург.
 

Цитата:
в двойке README.global_temporary

В двойке нет, есть в 2.1. Искал в инете, только про 2.1.
 

Цитата:
25000 записей, снова нахлынули воспоминания, теперь о фоксе 2.0  

Радутет, что не совсем забыто.
 
Ладно, цыфирьки... Тестил вчера выборку - окно с деревом(счётчики выбранного в узлах и потомках, отдельный запрос), гридех в узле "все...", внизу датасет крыжовника. Локальной сортировки нет, чек - калкфилд. Пример 50000 записей. Жмем Ctrl+A мышой в попапине стойм на Check и засекаем время. Сетевая база - 12 секунд. Отмена 35 тыс из выбранных 50 тыс - 9 сек. Это с фибами. Все результаты с IBX и тд могу выложить. В среднем на операцию с 50 тыс около 15-и секунд. На троечку потянет?
 

Цитата:
Так не со мной надо решать, а с Востриковым на Devrace

Ладно, не буду. Надо батенька, чтобы нармальные хипы которые все это делают, чтобы тоже деньгу имели, а не только ms. Отстаём от графика по доморощенным Билгейтсам. Так мы коммунизм никогда не построим товарищ.

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 13:39 02-07-2008 | Исправлено: delover, 09:03 03-07-2008
OXDBA

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
delover

Цитата:
В двойке нет, есть в 2.1. Искал в инете, только про 2.1.

Да, действительно, забыл уже, на 2.1 с RC1 сижу.
Для сравнения быстренько набросал тест  использования GTT в FB 2.1, выбираем 50000 записей, Insert в GTT, update, в TABLE1 500 000 записей.
50000 record(s) was(were) updated in TABLE1
50000 record(s) was(were) inserted into TEMP_ID
------ Performance info ------
Prepare time = 32ms
Execute time = 4s 391ms
подробности см. в ПМ

Всего записей: 426 | Зарегистр. 19-01-2005 | Отправлено: 18:17 02-07-2008
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
OXDBA
Очень неплохо. Да и полный фетчь датасета дерево/грид и датасета в "подвале" это грид чтоб гулять по выбранному. Подчёркиваю cетевая база - 12 секунд. Это 11сек выборка (я вижу что переоткрылась таблица внизу и выполнился SELECT COUNT() GROUP BY TREE_ID, т.е. появились циферки в дереве). Далее через 1сек можно увидеть крыжики. Очевидно, что серверная сторона - 4 сек заполнение темпорари, 4 сек выборка данных с джойном, 1 сек счётчики на сервере, 1 сек на калькулируемое поле у меня, 1 сек на перерисовку графики/организацию потоков/виндовых сообщений. Что такое TServerSocket и TClientSocket я рассказывать не буду. Там много чего: пакеты, CRC, slip-ы и т.д. Возможно у меня потерялась секунда на сортировку ID перед тем как я делаю строку. Но мы увлеклись... Фокс 2.0 Вам это больше не напоминает?  
 
Да я тут подумал, что знаю почему INSERT FROM SELECT SP_SPLITIDS_HUGE эффективен, а DELETE ... WHERE ID IN SELECT ... не эффективен. Возможно в случае с удалением SELECT рассматривается не как серилизатор условий, а как поле для нахождения выполнимости условия. Объяснил туманно конечно, но в этом моменте стоит копать. Будет оптимизовано. Это точно.
 
Ещё могу добавить, что такие скорости должны удивлять, так как для калькулируемых полей у программистов только Field.Value:=CheckedList.IndexOf(ID)>=1. Список в этом случае содержит 50 тыс, и произойдёт поиск каждого ID из 50 тыс. Для обычного TList (не TStringList) эта операция на 50 тыс займёт гораздо больше одной секунды.
 
ПМ я сейчас изучаю. У меня три вопроса:
1. ON COMMIN это на транзакцию или на сессию? Я не могу оставаться в пределах транзакции.
2. CREATE я полагаю делается один раз?
3. Я не использую констрейнт примарикей id. Есть мнение, что это может замедлить работу. Что есть на этот счёт?

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 08:48 03-07-2008
OXDBA

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GTT создается один раз, аналогично обычной таблице, но хранит временные данные. Время жизни:
 ON COMMIT PRESERVE ROWS - данные в GTT хранятся до закрытия соединения.
 ON COMMIT DELETE ROWS - данные в GTT хранятся до завершения транзакции.
т.е GTT - общие метаданные и изолированные между соединениями/транзакциями данные.

Цитата:
Есть мнение, что это может замедлить работу. Что есть на этот счёт

Древняя holy war на тему "естественные ключи против искусственных ключей", на этот счет есть пословица о том, что умеючи можно и запросом к RDB$DATABASE сервер на колени поставить.

Всего записей: 426 | Зарегистр. 19-01-2005 | Отправлено: 10:54 03-07-2008
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Жаль, но у меня FireBird 2.0 ничего не понимает про ON COMMIT. Ну да это в общем пока не так важно. Всё остальное совместимо. Когда перейдём на 2.1 особо переделывать не придётся. Да и сами навороты про GTT нужны постольку поскольку:
1. Нет (не было) способа узнать активность другой сессии по индексу. Я уже смотрел в интернете про MON$ATTACHMENTS.
2. Нет способа писать на сессию триггер, как на таблицу. Я так и не понял зачем в IBExpert в регинфе базы Scriptc\Before Disconnect. Конечно on commit это по идее стандартизованный триггер.
3. Ограничение SmallInt на IB SQL. Не могу себе представить, зачем нужна GTT там где такое ограничение отсутствует? Если бы потери скорости (на то чтобы переварить на сервере строку с цифирей) составляли бы 4 секунды плюсом, то я бы даже не заморачивался и сэкономил бы своего личного времени огромное количество!
 
зы:
Нашёл у BDS2006 замечательную глюковину-багу. Если в обциях проекта добавить в Unit aliases строку GridsEh=DBGridEh (Project Options\Directories/Conditionals), то когда открываю проект, дельфа сначала ругается на ресурс, говорит типа Setup не тот и сваливает в аут. Думаю что dcc32.exe с нормальным *.cfg всё сделает как надо, а вот IDE помирает. Кстати она помирает даже если у Application сделать хелпер для CreateForm с добавочным параметром и указать этот параметр в project.dpr. Но это уже отдельная тема.

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 11:16 07-07-2008
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору


Приветы.
 
А в IBExpert можно раскрашивать SQL?

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 09:02 11-07-2008 | Исправлено: delover, 12:33 24-09-2008
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Поставил FIB-ы 4.4.12 ... Правда есть ещё пляски с FIBBooleanField...
 
зы
Ex principio interno.

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 07:07 22-07-2008
Tantos



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
delover
А зачем такую древнюю версию? 6.8.5 Давно уже вышла.

Всего записей: 1038 | Зарегистр. 31-05-2005 | Отправлено: 03:27 23-07-2008
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Tantos
А уже и 6.9.5 скоро будет.

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 10:50 23-07-2008 | Исправлено: delover, 09:40 28-08-2008
sergiuz1303



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброе время суток!
 есть три поля t1 t2 t3 char (255) как получить строку t4 char(255)  
к примеру  
t1   'test                                                '
t2   'tyutiiutiutitiiytiutuy                            '
t3   'kjhkhkjhkhkhkjh                                 '
как получить строку с видом  
t4   'test  tyutiiutiutitiiytiutuy kjhkhkjhkhkhkjh'
 
Заранее благодарен
ПС Срази извиняюсь за ламерский вопрос

Всего записей: 46 | Зарегистр. 11-06-2007 | Отправлено: 23:41 29-08-2008
EZH



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
sergiuz1303
А какая версия Firebird? Или это Interbase?
В Firebird 1.5 функция TRIM идет через подключение UDF, а во 2-м уже встроенная.

Всего записей: 1738 | Зарегистр. 02-09-2004 | Отправлено: 01:17 30-08-2008
sergiuz1303



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
EZH
FB 2.0 уже нашел сенкс

Всего записей: 46 | Зарегистр. 11-06-2007 | Отправлено: 12:58 30-08-2008
DmitryKz

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как можно (с помощью какой программы) можно восстановить SQL-скритпы, которыми была создана БД с ее объектами (таблицами, триггерами, генераторами и т.п.)? Я про Firebird 2.1.

Всего записей: 3142 | Зарегистр. 29-09-2005 | Отправлено: 14:19 06-09-2008 | Исправлено: DmitryKz, 20:53 06-09-2008
DmitryKz

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ребята, извиняюсь, протупил - это называется извлечь метаданные

Всего записей: 3142 | Зарегистр. 29-09-2005 | Отправлено: 01:15 07-09-2008
Coltrain

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DmitryKz
Извлекать метаданные умеет IBExpert (меню "Инструменты" -> "Извлечение метаданных") http://www.ibexpert.com/

Всего записей: 160 | Зарегистр. 31-07-2002 | Отправлено: 17:13 11-09-2008
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » InterBase и FireBird: вопросы по работе и их решение


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru