powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вопросы от нубов, или список для коллекции "Советы бывалых"
39 сообщений из 39, показаны все 2 страниц
Вопросы от нубов, или список для коллекции "Советы бывалых"
    #38585803
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предлагаю собирать здесь типичные вопросы от неофитов, относящиеся к:
1) написанию SQL-запросов
2) написанию PSQL-кода (как ХП, так и триггеров)
3) DDL (создание констрейнтов, индексов и проч.)
4) началам DBAйства

Когда коллекция будет достаточно полной, можно будет составить по ней сборник рецептов. Сборник буду ваять сам, по мере сил. Если кто хочет подключиться - велкам, разумеется.
Главными научными консультантами, ИМХО, должны быть WildSery, DS и ГР - люди, которые с ФБ знакомы гораздо больше мну.
Поэтому "сверку часов" буду проводить именно с этими монстрами рока (если никто из них не против :)).
(Источников Света дёргать лишний раз не хочется, у них и так полно забот).

Цель простая: сделать некий контент, достойный попадания в вечно-прилепленный топик FB-раздела. И отправлять уже всех неофитов именно ТУДА, дабы не тратить на них время.

Далее приведу в unsorted-виде типичные вопли нубов, про которые помню в данный момент. Дополняйте, плз. Желательно для всех вопросов, НЕ связанных с sql-выборками, давать префикс:
psql = процедурный код
ddl = как объявить констрейнт, следует ли добавить индекс етц.
dba = DBAйство
...

* таблицы "А" и "Б" соотносятся друг с другом как родительская и дочерняя. Но FK - нету. В итоге, в "Б" появились строки без родителей. Как их найти ? (т.е. запрос на left join / not exists);
* как сгруппировать значения по столбцу "Х", но вытащить в итоге поле, не участвовавшее в группировке, и соответствующее какому-то max()-значению (пример: получить значение курса на самую позднюю дату из какого-то диапазона);
* как преобразовать N строк столбца в кортеж из 1 строки и N полей (pivot); и обратно тоже (unpivot);
* как пронумеровать строки выборки (в версиях до 2.5 включительно)
* как выдернуть случайную запись
* как собрать ("сцепить") значения в строку (list()); особенность отсутствия порядка слов в итоговом списке (в общем случае)
* как разобрать строку на слова по заданному набору разделителей и вывести их в столбец (т.е. операция, обратная к list())
* как соединить N независимых выборок по номерам строк, причём для отсутствующих строк какой-либо выборки выводить NULL (использование курсоров; в версиях до 2.5 включительно)
* засада с выборкой where x NOT in(select ... from t), когда подзапрос содержит NULL'ы
* как обойти траблы,связанные с нестабильностью курсора при DML (в версиях до 2.5 включительно)
* изыски на тему вывода записей в хитром порядке (сортировка вида order by iif(..., expr1, expr2) etc)
* изыски на тему count( [ distnct ] ... ) + having
* рекурсивные запросы (найти всех предков / потомков et al)
* запросы к системным таблицам: "кто ссылается по FK на мою бедную таблицу ?!" и проч. (или просто продублировать - с разрешения kdv, ес-сно, - раздел с ibase.ru ?)
* case-insensitive кириллица
* max( id ) ищется медленно, хотя по ID создан ПК (ФБ не делает обратный скан по индексу, так что придется создавать descending)
* строки с завершающими пробелами: как они сравниваются и как поменять правило сравнения
* строки: удаление лишних ("задвоенных") пробелов
* "malformed string" при выборке НЕ-латинских строк из базы (aka "нарушение мантры DS'a: чарсет коннекта должен быть равен чарсету консоли")
* даты и время: особенность диалектов, как указывать при вводе (формат), арифметика, пересечение интервалов и т.п.
* double precision: особенности сравнения и округления (примеры выражений со "странными результатами";вот один такой)
* blob'ы, в т.ч. временные (или "от чего растёт моя бедная база ?!")
* как вытащить данные из другой ФБ-базы (execute statement on EXTERNAL datasource)


* (psql) в процедуре есть входной параметр a_some_id числового типа, для отбора записей по полю some_field. Он может быть передан как NULL и тогда надо отбирать записи с любыми значениями some_field. Как заставить ФБ использовать индекс еще и в этом случае ? (т.е. как обойтись без 'OR')
* (psql) when-обработка исключений в begin-end блоках
* (psql) почему foo не поменялась в итоге выполнения вот этого кода:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
execute block returns(foo int) as
begin
  foo = -123;
  select 456 from rdb$database 
  where 1=0  -- или что-то посложнее, но в итоге запрос вернёт ноль строк
  into foo;
  suspend;
end

* (psql) получить в некоторой ХП стек вызовов до неё (да, я знаю, что это есть в официальной ФБ-доке, но туда всё равно никто из нубов не лезет)
* (psql) текст ошибки вместо кода - как получить его на сервере ? (и можно ли вообще ?)

* (ddl) особенности при FK on delete cascade ( проскакивало недавно, кстати)
* (ddl) особенности устанавливаемого check'a (ФБ *не* проверяет старые записи на соответствие новому правилу)
* (ddl) особенности UNIQUE в сравнении с PK (допускаются NULL'ы). В составных unique-констрейнтах две записи вида {100, null} и {100, null} считаются одинаковыми, хотя в них присутствует null:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
recreate table ttt( x int, y int, constraint ttt_unq unique(x,y));
commit;

insert into ttt values(null, null);
insert into ttt values(null, null); -- OK

insert into ttt values(100, null);
insert into ttt values(100, null); -- "violation on PK or UK..."

* (ddl / performance ?) что будет, если задать поле с ФИО как varchar( 32760 )

* (dba) "Object in use и как мне с этим дальше жить..."
* (dba) как найти тормозящий запрос (до 2.5 и начиная с 2.5)
* (dba) как найти и отрубить того, кто ОАТ ?
* (dba) как отрубить все транзакции, за исключением RO RC, длящиеся свыше NNN минут, но ничего не менявшие в базе ?
* (dba) backup / restore: как быстро понять, база вообще живая или нет ? (изучаем ключик -m)
* (dba) backup / restore: как ускорить выполнение ? (сказание про сервисы)
* (dba) "кто сидит в моей бедной базе ? и что он сейчас делает ?" (запросы к mon$'ам)
* (dba) "в течение рабочего дня внезапно наступают тормоза! Что делать ?" (для тех, кто не читает ibase.ru)

... to be continued ...
...
Рейтинг: 0 / 0
Вопросы от нубов, или список для коллекции "Советы бывалых"
    #38585817
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Научными консультантами по чему - по вопросам нубов? :)
Кстати, на некоторые вопросы я ответа не знаю, например.
Если понадобятся - найду ответ, конечно, но не сталкивался.

P.S. Распространенные вопросы от новичков - это FAQ, в
любом его виде и оформлении. Любые сложные вопросы и
различные best practice - совсем другое дело, это уже некий
более фундаментальный сборник и труд (безусловно, тоже
очень нужный, в т.ч. лично мне).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вопросы от нубов, или список для коллекции "Советы бывалых"
    #38585824
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Паша,тебе готовые ответы на почту слать?
Сразу кстати уточнение есть -
Код: plaintext
* (dba) backup / restore: как быстро понять, база вообще живая или нет ? (изучаем ключик -m) 
переформулируй вопрос, бэкап только метаданных и последующий рестор, кмк, не обязательно покажут что база жива/мертва. Будут видны ошибки DDL. Поправь меня если неправ.
...
Рейтинг: 0 / 0
Вопросы от нубов, или список для коллекции "Советы бывалых"
    #38585868
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GallemarПаша,тебе готовые ответы на почту слать? Давай :-)
GallemarСразу кстати уточнение есть -
Код: plaintext
* (dba) backup / restore: как быстро понять, база вообще живая или нет ? (изучаем ключик -m) 
переформулируй вопрос, бэкап только метаданных и последующий рестор, кмк, не обязательно покажут что база жива/мертва. Будут видны ошибки DDL. Поправь меня если неправ.При ресторе я с таким не сталкивался. При бекапе - да, такое было. Валился на середине, хотя перед этим метаданные бекапил ОК.
...
Рейтинг: 0 / 0
Вопросы от нубов, или список для коллекции "Советы бывалых"
    #38585869
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMaxВозможно, имеет смысл сделать сборник Hint'n'Tricks. Что туда например может войти: FIELD + 0, FIELD1 IS DISTINCT FROM FIELD2, . Да, описание DISTINCT есть, но, мне кажется, стоит на нем заострить внимание.а ведь верно :-) Он до сих пор натуралом прёт, даже когда индексы есть.
И пока не забыл:
(ddl) что лучше, составные индексы или отдельно по каждому полю.
...
Рейтинг: 0 / 0
Вопросы от нубов, или список для коллекции "Советы бывалых"
    #38585876
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще один вопрос попался:
* этюды на тему similar to (например, проверка строки на то, что там записаны только цифры; проверка на то, что это адрес e-mail etc).
* предостережения по произв-сти similar to (это я уже по своим печалькам буду говорить :))
...
Рейтинг: 0 / 0
Вопросы от нубов, или список для коллекции "Советы бывалых"
    #38585909
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может я излишне скептик, но многие вопросы звучат так:
* (dba) "У меня ничего не работает! Что делать ?" (для тех, кто не читатель)
...
Рейтинг: 0 / 0
Вопросы от нубов, или список для коллекции "Советы бывалых"
    #38586226
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давайте так: топик открыт для всех, в нем можно обсудить некую проблему, потом она оформляется в виде "вопрос+ответ под спойлером", когда общественность решила, что вопрос интересный и ответ правильный, я загоняю этот вопрос-ответ в стартовый пост и обсуждение этого вопроса в данном топике отправляется в утиль.
...
Рейтинг: 0 / 0
Вопросы от нубов, или список для коллекции "Советы бывалых"
    #38586233
miwaonline
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_Pisarevsky,

Идея хорошая. Я - за.
...
Рейтинг: 0 / 0
Вопросы от нубов, или список для коллекции "Советы бывалых"
    #38586249
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_PisarevskyДавайте так: топик открыт для всех, в нем можно обсудить некую проблему, потом она оформляется в виде "вопрос+ответ под спойлером", когда общественность решила, что вопрос интересный и ответ правильный, я загоняю этот вопрос-ответ в стартовый пост и обсуждение этого вопроса в данном топике отправляется в утиль.Хорошо.
...
Рейтинг: 0 / 0
Вопросы от нубов, или список для коллекции "Советы бывалых"
    #38586603
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
... "продолжаем разговор" (С).

* (ddl) "как мне обеспечить уникальность в столбце Х" (для тех, кто думает, что это делается триггерами :))
* (ddl) как обеспечить соблюдение правила, выходящего за пределы одного кортежа таблицы (например, чтобы общее число строк с some_field = :some_value было или ноль, или пять - и только эти два значения)
* как наращивать счетчик без дырок (или с минимальным их кол-вом) - счета-фактуры и прочая пурга от бух-ов
* как найти дырки в нумерации (прислал в мыло miwaonline, дублирую сюда на всякий)
* как в(ы)ключить сразу все триггера (кроме системных, ес-сно)
* как пересчитать статистику по всем индексам
* чем плохо отсутствие свежесобранной статистики по индексам (примеры)
* (dba) чем плохо невнимание к параметрам DefaultDBCachePages и TempCacheLimit (примеры)
* "разве может выборка из таблицы вернуть строки не так, как показываает ИБЭ ?" (а он по дефолту показывает упорядоченными по PK)

. . . to be continued . . .
...
Рейтинг: 0 / 0
Вопросы от нубов, или список для коллекции "Советы бывалых"
    #38586620
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> * (ddl) "как мне обеспечить уникальность в столбце Х"
> (для тех, кто думает, что это делается триггерами :))

Это о чём речь? О том, что надо создавать индексы,
потому что триггеры транзакционны? Ну так уникальность
на триггерах итак мало кто рожает, тем более из новичков.

> * (ddl) как обеспечить соблюдение правила, выходящего
> за пределы одного кортежа таблицы (например, чтобы
> общее число строк с some_field = :some_value было или
> ноль, или пять - и только эти два значения)

Не будучи редактором, настаивать не буду, но я против
таких вопросов а FAQe - и этого конкретно и ему подобных.

> * как наращивать счетчик без дырок
> * как найти дырки в нумерации (прислал в мыло miwaonline, дублирую сюда на всякий)

+

> * как в(ы)ключить сразу все триггера (кроме системных, ес-сно)
> * как пересчитать статистику по всем индексам

По идее это в раздел ddl/запросы к систаблицам/дба.
Это в тему того, что нужно сначала структуру продумать.

> * чем плохо отсутствие свежесобранной статистики по индексам (примеры)

Тоже против. Это статья, а не FAQ и она есть у Димы,
насколько я помню. Впрочем, если не писать много
текста, а просто в двух словах и дать ссылку - можно.

> * "разве может выборка из таблицы вернуть строки не так, как
> показываает ИБЭ ?" (а он по дефолту показывает упорядоченными по PK)

Во-первых, против. Во-вторых, это чепуха, потому что это не так.
Хвастунов в курсе, что у него ИБЕ якобы по PK без просьбы сортит?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вопросы от нубов, или список для коллекции "Советы бывалых"
    #38586633
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамХвастунов в курсе, что у него ИБЕ якобы по PK без просьбы сортит?


В курсе. С самого начала по дефолту по ПК сортирует.
...
Рейтинг: 0 / 0
Вопросы от нубов, или список для коллекции "Советы бывалых"
    #38586655
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамО том, что надо создавать индексы,
потому что триггеры транзакционны?Да.Гаджимурадов Рустамуникальность на триггерах итак мало кто рожает, тем более из новичков.
Хе-хе-хе... не поверишь, но речь НЕ о новичках.
В одной ERP-системе, которую мы шесть лет взад приобрели и начали переделывать, уникальность обеспечивалась... триггерами. Потому что там изначально была заложена EAV, и как обеспечить уникальность одной группы записей, но не трогать ("уникальностью") другую - разрабы этой системы, видимо, не допёрли :-)

Гаджимурадов Рустам> * (ddl) как обеспечить соблюдение правила, выходящего
> за пределы одного кортежа таблицы (например, чтобы
> общее число строк с some_field = :some_value было или
> ноль, или пять - и только эти два значения)

Не будучи редактором, настаивать не буду, но я против
таких вопросов а FAQe - и этого конкретно и ему подобных.Why ? слишком сложно будет осилить нубам ?

Гаджимурадов Рустам> * как наращивать счетчик без дырок
> * как найти дырки в нумерации (прислал в мыло miwaonline, дублирую сюда на всякий)

+

> * как в(ы)ключить сразу все триггера (кроме системных, ес-сно)
> * как пересчитать статистику по всем индексам

По идее это в раздел ddl/запросы к систаблицам/дба.
Это в тему того, что нужно сначала структуру продумать.Вопросы про дырки возникают регулярно.
Как систему не продумывай, всё равно что-то останется невыясненным вплоть до ввода в эксплуатацию. А там уже придется с этими дырками жить.
Вопросы про систаблицы - они и на самой продуманной структуре будут возникать, это не связано, КМК.

Гаджимурадов Рустам> * чем плохо отсутствие свежесобранной статистики по индексам (примеры)

Тоже против. Это статья, а не FAQ и она есть у Димы,
насколько я помню. Впрочем, если не писать много
текста, а просто в двух словах и дать ссылку - можно.Согласен, ссылку только нужно.

Гаджимурадов Рустам> * "разве может выборка из таблицы вернуть строки не так, как
> показываает ИБЭ ?" (а он по дефолту показывает упорядоченными по PK)

Во-первых, против. Во-вторых, это чепуха, потому что это не так.
Хвастунов в курсе, что у него ИБЕ якобы по PK без просьбы сортит?Пардон, я наврал тут. ИБЭ выводит именно так, как записи в базе лежат (проверил только что). Так что отбой по этому вопросу.
...
Рейтинг: 0 / 0
Вопросы от нубов, или список для коллекции "Советы бывалых"
    #38586660
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpertГаджимурадов РустамХвастунов в курсе, что у него ИБЕ якобы по PK без просьбы сортит?В курсе. С самого начала по дефолту по ПК сортирует.А тогда я теперь "НЕ в курсе"! В где сейчас эта настройка сидит ? Глаза устал пялить, найти не смог. А по тексту найти в этизх окнах опций ничего нельзя - ты бы сделал, как в TOAD'e, там можно текст вводить и она сама на нужную настройку показывает.
...
Рейтинг: 0 / 0
Вопросы от нубов, или список для коллекции "Советы бывалых"
    #38586670
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpert> В курсе. С самого начала по дефолту по ПК сортирует.

Ты про "Данные" таблицы или про что?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вопросы от нубов, или список для коллекции "Советы бывалых"
    #38586677
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид> Хе-хе-хе... не поверишь, но речь НЕ о новичках.

Стало быть, в FAQ этому не место, наверное?

> Why ? слишком сложно будет осилить нубам ?

Да, в т.ч. Сложно и редко нужно.

> Вопросы про дырки возникают регулярно.

Про дырки я плюсанулся, т.е. поддерживаю.
А про структуру - имелось в виду структуру
FAQ, а не БД - разделы, подразделы и т.д.
Как минимум, ddl, запросы к систаблицам
и dba - сильно пересекающиеся разделы.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вопросы от нубов, или список для коллекции "Советы бывалых"
    #38586679
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpertВ курсе. С самого начала по дефолту по ПК сортирует.нарыл я, в где это сидит.
Возможно, у мну дефолт этот сбит дано, ХЗ
...
Рейтинг: 0 / 0
Вопросы от нубов, или список для коллекции "Советы бывалых"
    #38586683
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамТаблоид> Хе-хе-хе... не поверишь, но речь НЕ о новичках.

Стало быть, в FAQ этому не место, наверное?ладно, отложу на десерт :-) подожду, пока очередной неофит(?) выпрыгнет сюда с этим.

Гаджимурадов Рустам> Why ? слишком сложно будет осилить нубам ?

Да, в т.ч. Сложно и редко нужно.ОК. Вычеркиваем.

Гаджимурадов РустамА про структуру - имелось в виду структуру
FAQ, а не БД - разделы, подразделы и т.д.
Как минимум, ddl, запросы к систаблицам
и dba - сильно пересекающиеся разделы.Укрупнять разделы не хочется. Винегрет ведь будет.
...
Рейтинг: 0 / 0
Вопросы от нубов, или список для коллекции "Советы бывалых"
    #38586688
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоиднарыл я, в где это сидит.Гм... Конкретизировать надо про "показываает ИБЭ".
Кто ж данные так смотрит-то? Я в SQL-эдиторе всегда
нужные данные вытаскиваю и смотрю, а когда нужно
чего найти/подправить - так всё равно сортируешь и
фильтруешь данные так, как тебе надо, а не по PK.
...
Рейтинг: 0 / 0
Вопросы от нубов, или список для коллекции "Советы бывалых"
    #38586691
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамТаблоиднарыл я, в где это сидит.Гм... Конкретизировать надо про "показываает ИБЭ".
Кто ж данные так смотрит-то? Я в SQL-эдиторе всегда
нужные данные вытаскиваю и смотрюну так у тебя ВКЛючена эта галка или нет ?
...
Рейтинг: 0 / 0
Вопросы от нубов, или список для коллекции "Советы бывалых"
    #38586696
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидГаджимурадов РустамТаблоид> Хе-хе-хе... не поверишь, но речь НЕ о новичках.

Стало быть, в FAQ этому не место, наверное?ладно, отложу на десерт :-) подожду, пока очередной неофит(?) выпрыгнет сюда с этим.Скорее, надо бы что-то про EAV-схему наваять. О тех бесчисленных муках и страданиях, которые она вызывает в реальной эксплуатации.
...
Рейтинг: 0 / 0
Вопросы от нубов, или список для коллекции "Советы бывалых"
    #38586701
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид> ну так у тебя ВКЛючена эта галка или нет ?

Понятия не имею, до сегодняшнего дня я не знал
о её существовании (не замечал или не помнил),
ибо не пользуюсь это вкладкой для "чтения".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вопросы от нубов, или список для коллекции "Советы бывалых"
    #38586703
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид> Скорее, надо бы что-то про EAV-схему наваять.

Про это статьи не хватит, не то что FAQ.
Так что даже пытаться не стоит, ИМХО.

> О тех бесчисленных муках и страданиях, которые
> она вызывает в реальной эксплуатации.

Зависит от... Есть и те, кто успешно пользуются
и не жалуются, в т.ч. отечественный её "автор".
Лично меня больше напрягают не семиэтажные
запросы, а то, чтобы написать их с ходу нельзя -
нужно подсматривать соотв. значения кодов.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вопросы от нубов, или список для коллекции "Советы бывалых"
    #38586715
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамЛично меня больше напрягают не семиэтажные
запросы, а то, чтобы написать их с ходу нельзя -
нужно подсматривать соотв. значения кодов.Во-во! Нас это в усмерть задолбало, практически на старте.
(думаешь, я просто так несколько раз вопил о мнемонических константах приложения ?.. :-))
...
Рейтинг: 0 / 0
Вопросы от нубов, или список для коллекции "Советы бывалых"
    #38586731
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обсуждение оргвопросов я зачистил.
...
Рейтинг: 0 / 0
Вопросы от нубов, или список для коллекции "Советы бывалых"
    #38586752
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид> (думаешь, я просто так несколько раз вопил
Таблоид> о мнемонических константах приложения ?.. :-))

Что-то смутно припоминаю, но мненоники тут никак
не помогут, по сути, как и контекстные переменные и пр.
Помогут пакеты и константы/переменные, когда появятся.

Мне в своё время значительно помогло сохранение
запросов в IBE - накидаешь десяток-другой наиболее
часто встречающихся запросов и дальше как-то проще.
Щас вообще древовидные группы запросов появились, но
у меня никак руки не дойдут полностью на них перейти...

Впрочем, это несколько оффтоп, так что закругляемся.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вопросы от нубов, или список для коллекции "Советы бывалых"
    #38586753
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_Pisarevsky> Обсуждение оргвопросов я зачистил.

Ну и абсолютно зря.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вопросы от нубов, или список для коллекции "Советы бывалых"
    #38594673
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Продолжаем разговор... :-)

* неявное приведение типов и связанные с этим неприятности (например, не использование индекса при поиске с условием where some_varchar_field = :some_numeric_literal) - по мотивам одной из многочисленных бесед
...
Рейтинг: 0 / 0
Вопросы от нубов, или список для коллекции "Советы бывалых"
    #38594685
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Воооот!...

Я нашёл, кто будет эту самую таблицу лабать. :)
У тебя свободного времени много, так что не
поленись, составь по исходникам таблицу
приведения типов, с приоритетами.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вопросы от нубов, или список для коллекции "Советы бывалых"
    #38594693
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамУ тебя свободного времени много, так что не поленись, составь по исходникам таблицу приведения типов, с приоритетами.Гм... Найти бы еще это место в исходниках...
зы. а своб. времени у меня - как у всех, кстати :)
...
Рейтинг: 0 / 0
Вопросы от нубов, или список для коллекции "Советы бывалых"
    #38594701
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид> Гм... Найти бы еще это место в исходниках...

Я функцию не помню, но по названию можно будет
догадаться, наверное. Файл - или opt.cpp или btr.cpp
вроде бы, если шо ДЕ поправит.

> зы. а своб. времени у меня - как у всех, кстати :)

Ага, ага, заметно. :)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вопросы от нубов, или список для коллекции "Советы бывалых"
    #38594706
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамАга, ага, заметно. :)Тсс!.. я выполняю важное партийное задание, делаю OLTP-тест! а ты тут палишь на весь свет! :-)
...
Рейтинг: 0 / 0
Вопросы от нубов, или список для коллекции "Советы бывалых"
    #38594815
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так. Пока не забыл то, на что сам лбом недавно налетел.

* предостережение по использованию rand() /отсутствие материализации её результата и перевычисление на каждой обрабатываемой записи/
А именно - выбор случайной записи (в предположении, что есть и возрастающий, и убывающий индексы по ID).
var-1.
Код: sql
1.
2.
3.
select id from doc_list
where id >= (select min(id)-0.5 from doc_list) + rand()*( (select max(id)+0.5 from doc_list) - (select min(id)-0.5 from doc_list))
order by id;

- выдаст перекос (максимальные ID'шники будут выбираться крайне редко)

var-2.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
execute block returns(id int) as
  declare id_rnd int;
begin
  id_rnd = (select min(id)-0.5 from doc_list) 
             + rand() * 
             ( (select max(id)+0.5 from doc_list) - (select min(id)-0.5 from doc_list) );

  select h.id from doc_list h where h.id >= :id_rnd order by id into id;
  suspend;
end

- выдаст равномерное распределение.

PS. Способ на чистом SQL, с материализацией rand'a, - вроде бы есть:
Код: sql
1.
2.
3.
4.
5.
    select id from doc_list
    where id >= (select min(id)-0.5 from doc_list) 
                    + (select distinct rand() r from rdb$database) * 
                       ( (select max(id)+0.5 from doc_list) - (select min(id)-0.5 from doc_list))
    rows 1;

- но почему-то выдаёт самый первый ID'шник гораздо реже, чем все остальные.
Вот результат для таблицы с 10 строками (id=2...11), цикл 10 тыс итераций:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
execute block returns(id int, cnt int, cnt_avg double precision, deviation_percent double precision) as
declare r double precision;
declare variable id_rnd int;
declare variable n int = 10000;
begin
  delete from t;
  while (n>0) do begin
    insert into t -- log: t(id int);
    select id from doc_list
    where id >= (select min(id)-0.5 from doc_list) 
      + (select distinct rand() r from rdb$database) 
      * ( (select max(id)+0.5 from doc_list) - (select min(id)-0.5 from doc_list))
    rows 1;
    n=n-1;
  end

  for select id,count(*), avg(count(*))over(), 100.00 * (count(*)-avg(count(*))over()) / avg(count(*))over()
  from t group by id
  into id, cnt, cnt_avg, deviation_percent
  do suspend;
end


IDCNTCNT_AVGDEVIATION_PERCENT2518950-45,47310429509,68410179507,0559839503,47610089506,179609501,0589659501,5799979504,941010179507,05119939504,52
...
Рейтинг: 0 / 0
Вопросы от нубов, или список для коллекции "Советы бывалых"
    #38594841
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PS. нарыл в итоге, что надо подправить, дабы на pure-sql было равномерное распределение: к лимитным значениям надо единицу добавлять/отнимать, а не 0.5
ХЗ почему так, но - работает. Но грузит бедную rdb$database по самое не балуй :-)

Код: plaintext
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.
recreate table doc_list(id int);
insert into doc_list values(0);
insert into doc_list values(1);
insert into doc_list values(2);
insert into doc_list values(3);
insert into doc_list values(4);
insert into doc_list values(5);
insert into doc_list values(6);
insert into doc_list values(7);
insert into doc_list values(8);
insert into doc_list values(9);

recreate table t(id int);
commit;
set term ^;
execute block returns(id int, cnt int, cnt_avg double precision, deviation_percent double precision) as
declare r double precision;
declare variable id_rnd int;
declare variable n int = 100000;
begin
  delete from t;
  while (n>0) do begin
    insert into t
     select id from doc_list
    where id >= (select min(id)-1 from doc_list) 
                + (select distinct rand() r from rdb$database) 
                * ( (select max(id)+1 from doc_list) - (select min(id)-1 from doc_list))
    rows 1; 
    n=n-1;
  end

  for select id,count(*), avg(count(*))over(), 100.00 * (count(*)-avg(count(*))over()) / avg(count(*))over()
  from t group by id
  into id, cnt, cnt_avg, deviation_percent
  do suspend;
end^
set term ;^
commit;
...
Рейтинг: 0 / 0
Вопросы от нубов, или список для коллекции "Советы бывалых"
    #38595005
mvb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидПродолжаем разговор... :-)

* неявное приведение типов и связанные с этим неприятности (например, не использование индекса при поиске с условием where some_varchar_field = :some_numeric_literal) - по мотивам одной из многочисленных бесед

тут есть еще один "образчик" получения разных результатов при неявном приведении типов. ))
...
Рейтинг: 0 / 0
Вопросы от нубов, или список для коллекции "Советы бывалых"
    #38595015
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mvbеще один "образчик" получения разных результатов при неявном приведении типов. ))а, так ты рецидивист со стажем, оказывается ? :-)
...
Рейтинг: 0 / 0
Вопросы от нубов, или список для коллекции "Советы бывалых"
    #38595057
mvb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоидmvbеще один "образчик" получения разных результатов при неявном приведении типов. ))а, так ты рецидивист со стажем, оказывается ? :-)

Да, жизнь ничему не учит, оказывается ))
...
Рейтинг: 0 / 0
Вопросы от нубов, или список для коллекции "Советы бывалых"
    #38607636
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Святое забыл: этюды на тему user-трейса.
* запускаю согласно доке , а ничего нет кроме стартового сообщения "Trace session ID 1 started" (на самом деле или не указан порт <> 3050; или неправильно указан шаблон в конфиге трейса для базы/алиаса);
* как видеть вывод трейса и на экране, и при этом чтобы он в лог шёл (т.е. просто сказать про mtee / supertee)
* как мне найти самые-пресамые тормозные запросы, а среди них - "наиболее пресамый" (grep + сортировка по убыванию значения времени; это вообще-то не к ФБ, но всё равно "рядом сидит")
* трейс внезапно остановился с сообщением "Session NN is suspended as its log is full" (по мотивам своих же шишек)
...
Рейтинг: 0 / 0
39 сообщений из 39, показаны все 2 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вопросы от нубов, или список для коллекции "Советы бывалых"
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]