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

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

Автор: delover
Дата сообщения: 13.06.2012 18:56
Повторюсь - двоешники.
AnGo

Цитата:
не понимаю его размышления

Вы тут с птицами разберитесь кто гадкий утёнок а кто местные. Если не доверяете писать демку могу заказать студенту - сделает за пару суток. (возможно с самокритикой перегибаю). Я то гадкий, но в DECIMAL(8,2) тоже плаваю.

salexn1

Цитата:
читать этот поток сознания

За этим потоком реальный человек в трезвом уме (, который незнает чего он больше хочет - чтобы рубордовцы были асами индексов или чтобы сервера были скоростными), однако в течении потока сознания (все промежуточные посты) нет ниодного вразумительного замечания что автор был неправ. "Ты знаешь я читал Утреннюю Зарю Ницше, почти за 10 минут прочитал - ничё интересного - поток сознания... Ва прочитал сценарий Михалкова, это клёвая тема но я все равно не всё понял..."

ant0ni02004
О, сказка про тридевятое царство которое очень много стоит... Переписывать запрос с нуля это самое эффективное средство, ну может исключая Оракл. Пользователю всегда импонирует игра в которой пользователь идиот способный угадать под каким колпачком шарик. Вспоминая что Посгрест иногда лучше Мускулов, потягиваясь от уверенности что Майкрософт стабилен, понимая, что за последние 5 лет он впервые скачал новый сервер SQL. Из того что он знал про физику индексов решил чтото найти нового - за последние 20 лет всё так же плохо - нет такой кнопки нигде - хоть тресни.


Добавлено:
Кстати можно задавать вопросы если не боитесь быть заклёванными, так уж комуто есть дело. Хе-хе.

Добавлено:
Да и предлагаю не трогать эту тему 1 год. Было бы прикольно если бы странички можно было прочесть через год два.
Автор: ant0ni02004
Дата сообщения: 13.06.2012 19:38
delover

Цитата:
мой vdb сделает тоже что IB в 100 раз быстрее

сделает всё то же что умеет делать ФБ или что-то одно? (а остальное медленнее )
или упадёт в 100 раз быстрее лучше детально объяснить что вы имеете в виду


Цитата:
Пользователю всегда импонирует игра в которой пользователь идиот способный угадать под каким колпачком шарик

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

ок, ФБ, предположим обошли вы в 100раз, а если сравнить с Postgres, MSSQL, MySQL - какой выигрыш предполагается?
Автор: delover
Дата сообщения: 13.06.2012 20:14
ant0ni02004

Цитата:
будет демка мой vdb сделает

Немного погорячился, у меня не готов логотип, демки не будет в течении года двух.


Цитата:
а в том какие индексы, как и в каком порядке применять при выборке

Истинные слова художника, а не сантехника которому нужен ключь на 80.
Автор: ant0ni02004
Дата сообщения: 13.06.2012 20:31
delover

Цитата:
демки не будет в течении года двух

вы так и не объяснили с чем вы тягаться собираетесь с ФБ эти 2 года - выборка из одной таблицы?

Цитата:
сантехника которому нужен ключь на 80

ну так ФБ есть SQL-БД прежде всего. вот нас и интересует в первую очередь как оно запросы выполняет, особенно ко многим таблицам, с аналитикой, группировками, функциями. не говоря уже о транзакциях, триггерах, процедурах, UDF, бекапах, итд

а то ж есть еще всякие FVMas да TJ7 (не к ночи будь помянуты)...
Автор: miwa
Дата сообщения: 14.06.2012 08:30
ant0ni02004
Есть мысль, что мы имеем честь лицезреть еще одного автора TJ7, который знает только слово "индекс", а обо всем остальном, упомянутом и не упомянутом вами, не имеет ни малейшего понятия.

delover
Душевно вас прошу, создайте отдельную тему, в который вы будете просвещать людей о работе индексов, и не мусорьте в текущей. Пожалуйста.
Автор: delover
Дата сообщения: 14.06.2012 19:14
miwa

Цитата:
и не мусорьте в текущей.

Передам Ваши слова ФБ. Пусть действительно не мусорит временем.

ant0ni02004

Цитата:
в первую очередь

На моём счёте в первую очередь деревня которая не слышала про 3ю оперецию над индексами - парное катание. В библиотеке vdb этого нет, клиенты не просили, а в интернете не всегда актуальное vdb. Упрёк на счёт не известной библиотеки упирается в трудности связанные с незнанием современных школьников трудов Толстова. Я ждал что мне кто нибудь спросит а как ты будешь оператор IN вычислять... Не случилось.


Цитата:
с аналитикой, группировками, функциями.

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

Добавлено:
Вопрос был про Постгрес. У меня пока кроме восторга нет других эмоций. Юзаю сравнительно недавно. Трудно бывает представить что то интереснее чем MySQL.

Добавлено:
Кто-то здесь обронил фразу стандарт SQL. Ну и всё завертелось с этого. Отмечу, метафора не очень сложная. Есть объектное программирование, а есть и противоположность, обладающая качествами доступности. Стандарт SQL похоже возник до изобретения ООП. И в таком виде существует. Про всякие TSQL упоминать смысла нет. Вам дали набор процедур являющихся не объектом, распарсили запрос и отправили в эти процедуры. Когда было GO что-то произошло и на клиенте получилось счастье. Про применение virtual к запросу в стандартном SQL речи никогда не было. Иначе бы сейчас
Цитата:
TJ7
обгонял все сервера кроме Оракла. Писан SQL челом не смотревшим фильм Матрица. Тут трагическая пауза, для большего эффекта.
Автор: salexn1
Дата сообщения: 14.06.2012 21:56
Не пора ли модераторам применить свои скилы в познании SQL и просто drop-нуть данного мыслителя.

Прочитав посты на SQL.RU про TJ7(FVMas) и прочитав этот БРЕД можно с уверенностью сказать, что это секта... или одно и тоже лицо...

delover
что-же вы тут до сих пор делаете, раз все сервера дружно лажают перед вашим чудо изобретением...
Автор: miwa
Дата сообщения: 14.06.2012 22:36

Цитата:

Я ждал что мне кто нибудь спросит а как ты будешь оператор IN вычислять...

Лично меня больше интересует реализация аналитических функций, рекурсивных и вложенных запросов и ACID.
Автор: salexn1
Дата сообщения: 14.06.2012 23:46
delover
Вот чего я до сих пор не понимаю, так это каким боком in-memory dataset к базам данных????

Автор: delover
Дата сообщения: 15.06.2012 08:49
salexn1

Цитата:
на SQL.RU про TJ7(FVMas) и прочитав

Видимо неверно выразился, что такое TJ7 я совершенно не знаю. С Ваших слов подумал что какая-то очередная лажа, будет интересно глянуть.


Цитата:
так это каким боком in-memory

Датасет никаким боком, датасета вобще-то я не давал - в примере сказано - без компонентов, мой пример работает без установки пакета, ну если установили ничего страшного.


Цитата:
Вот чего я до сих пор не понимаю

С моим терпением уже бы материться пора. Речь шла о том что SQL не устраивает тем что в запросе нельзя явно указать 1 выбираемый в любом случае индекс. Не костылями которые может напридумывать программист используя планы индексов. Которые всё равно уже есть.

Есть запрос CREATE INDEX. Даже имена у индексов есть. Программисту пофиг на эти имена. Программист выделяет условие содержищее филды.

1)После этого запрос работает быстрее.
2)После этого проходит много времени и этого программиста уже нет на матушке земле.
3)И индексов уже нет на эти филды.
4)Но прочитав такой запрос очередной студент скажет:
- Дак ты индекс создай вот такой вот и всё опять быстро заработает.

Я в курсе что у программеров самый любимый метод - дурака включать, но тут уже просто тема выросла и не все помнят с чего начиналось.

ЛЮБОЙ Сервер всё равно выбирает этот первый индекс.

Добавлено:
miwa

Цитата:
Лично меня больше интересует реализация аналитических функций

Всё на всех серверах работает так же, но первый индекс выбирается не автоматом в некоторых запросах, о чём указывать будет синтаксис.

Добавлено:
miwa
А совершенно точно... В запросе:

Код:
select bla1 from
(
select bla3 from
(
select bla5 from
(

select bla7 from
bla888 on (bla_id in (1,2,3,4,5,6,7,8))
where
bla9

) z3
where bla6
) z2
where bla4
) z1
where bla2
Автор: ant0ni02004
Дата сообщения: 15.06.2012 16:33
delover
ну хоть немного по теме топика

Цитата:
1)После этого запрос работает быстрее.


Цитата:
3)И индексов уже нет на эти филды.

это как так? то в п.1 были индексы, а в п.3 уже и пропали?

Цитата:
ЛЮБОЙ Сервер всё равно выбирает этот первый индекс.

а вот тут индекс опять есть
о чем разговор-то?



Автор: delover
Дата сообщения: 15.06.2012 19:02
ant0ni02004
Всё круто за мня не беспокойтесь типо есть уже будет зделано. Всем желаю отдохнуть.

пятница, вечер, отписался, суббота, проснулся, удалил, мои извинения.
Автор: delover
Дата сообщения: 16.06.2012 07:00
ant0ni02004
Разговор о том что запрос 1 отличается от запроса 2


Код:
1)select * from t1
where
id>200000 and fig not null

2)select * from t1
on (id>200000)
where
fig not null
Автор: delover
Дата сообщения: 18.06.2012 18:25
Жаль что miwa не задал вопросов.

Цитата:
Индекс bla_id будет видно даже в выборке z1

Все индексы подселекта видны в этом случае. Я не имел ввиду мапирования исходных индексов в индексы внешнего селекта. Я имел ввиду - если для Delphi программеров - инлайн методы могут компилироваться так - что они не являются CALL процедуры, так же как подселект не является подселектом. Для Си программеров это макросы. Эта оптимизация тоже не доступна из аксиоматических норм синтаксиса SQL. В любом случае мои предложения были только плюсом к тому что есть а не отменой того что уже есть. Для серверов не обладающих кластерными индексами не доступна реальная статистика плотности последовательного чтения индекса на участке, по этой причине - автоматический выбор индекса в большинстве случаев гадание гадалки на кофейной гуще, чаще всего оправданное - то есть это псевдонаука.
Автор: ant0ni02004
Дата сообщения: 18.06.2012 20:11
delover
в ФБ можно и прямо указать, напр. PLAN(SOMETABLE INDEX(SOMEINDEX))
а индексы иногда и пересчитывать полезно, иногда даже пересоздавать
Автор: delover
Дата сообщения: 19.06.2012 21:01
ant0ni02004
Спасибо, пока не уверен, но золотая голова. У меня иногда роли руководителя хромают, но есть повод поднять дисциплину...

Добавлено:
На моих часах 20-Июня 2012, предыдущий пост 19го. Я отмечу в календаре.
Автор: delover
Дата сообщения: 20.06.2012 19:12
А если можно другой совсем вопрос. Надо это многим, но сразу же обозначу позицию - это баловство. Есть уже давно разработанный и 100% действующий метод - шаблон. Дело касается отвалившихся коннектов. Тут решение простое если запись о коннекте не заблокирована for update with lock то мы её удалаем и видим только тех кто реально находится в коннекте. Но если юрер залез в IBExpert то не видим его. Я хотел бы узнать есть или нет триггер на соединение с базой, не IBExpert. Я понимаю - политика безопасности, я вообще не собираюсь ничего делать в этом случае - хотят чтобы просто запись в моей гридине болталась. Когда я последний раз подымал тему - было это очень давно. Потом появились какиета таблицы маниторов, много всего изменилось. Если нельзя -то нельзя, мне не нужно чтобы эта возможность была, мне нужно знать - есть она или нет.

Добавлено:
Свой анализ предыдущего решения я опубликую в очередном порядке, чтобы не мешать форуму.
Автор: exteris
Дата сообщения: 21.06.2012 08:01
delover
DB Triggers - On Connect, On Disconnect, ...
Не помню с какой версии.
Автор: ant0ni02004
Дата сообщения: 21.06.2012 15:14
delover
когда-то это было геморно, через ServiceAPI только
начиная с 2.1 можна OnConnect-триггер вешать и смотреть MON$-таблицы
2.5 даже Audit and Trace Services API забабахал
Автор: delover
Дата сообщения: 21.06.2012 21:44
Ого, я действительно пещерный. На слудующую версию капну и в этом направлении. Блин даже настроение поднялось.

Добавлено:
А мон что загнулся? извините - я его не знаю - но помоему адекватное решение. Тогда печаль.
Автор: miwa
Дата сообщения: 25.06.2012 18:27
Нет, живет и здравствует. Начиная с 2.5 получил кучу дополнительных возможностей: срубание запросов, конектов, кучу дополнительной статистики, вобщем прелесть.

Добавлено:

Цитата:

delover

Жаль что miwa не задал вопросов.


Прошу извинить, был немного занят.
Вопрос должен был быть о возможностях оффтопного движка или о возможностях ФБ использовать ручные планы запросов? Ну, так возможности движка меня не интересуют ни разу, а о ручных планах я, судя по всему, знаю больше.

ant0ni02004

Цитата:
а индексы иногда и пересчитывать полезно, иногда даже пересоздавать

Хм. В каких случаях их полезно пересоздавать? Ну, кроме случаев когда они повреждены; но это уже повреждение базы данных, тут пересоздание индексов - только один из этапов восстановления.
Автор: ant0ni02004
Дата сообщения: 25.06.2012 22:35
miwa
та были случаи, когда простой пересбор статистики не помогал, а пересоздание помогало
но давно, на ФБ 2 и выше уже такого не случалось
Автор: AnGo
Дата сообщения: 26.06.2012 10:13
ant0ni02004

Цитата:
на ФБ 2 и выше

На ФБ 2.0 сделали существенные улучшения в индексах. Поэтому, наверное, и не встречалось.
Автор: delover
Дата сообщения: 26.06.2012 22:02
Алл
Сразу на счёт демки - там индесы временами косячные если дельфу сразу вырубать. Но это не оправдание, для статически построенных данных норамльно, но как плацдарм пока не советую.
Автор: AnGo
Дата сообщения: 27.06.2012 08:39
delover
Ты это о чем? Либо я что-то не понимаю, либо выпал из процесса. Где кривые индексы?
Автор: delover
Дата сообщения: 27.06.2012 18:39
AnGo
В моём примере используется библиотека где есть TvDatabaseServer. Мой сервер локальный - на уровне приложения. Там косячные индексы на уровне датасетов. Я сделал вставку - индекс не создан, я нажимаю отмена - датасет считает что уже можно удалять. Данные про это ничего не знают - удаляют данные удаляют несозданный индекс - количество там и там не сравнивают.

miwa

Сегодня оценил Ваш вопрос в полной мере с учётом Ре-инжинеринга и влиянии перепрофилактики специалистов. Вы действительно Ас в своей области. Ре-инжинеринг увеличивает число таких спецов. Из мемуаров - сегодня делали "идеальный справочник" EAN13 для торговой сферы который изначально может быть иногда ошибочным. То что делают вебслужбы в течении более недели происходит в течении трёх минут. Пофиг, в результате я вспомнил Ваш вопрос.

Цитата:
Лично меня больше интересует реализация аналитических функций,

Надеюсь я его правильно понял. Вы совершенно правы. Групбай отменяет мой синтаксис по Вашему убеждению. Я не спорю, просто есть предложения поднять уровень специалистов.

В случае если использован мой синтаксис

Код:
select from
TableName on ... N34=N98 by?
group by
AlgoritmicNaslajdenie
Автор: AlexCoRu
Дата сообщения: 28.06.2012 13:06
При изменении таблицы генерируется событие (POST_EVENT), его плучают все подписавшиеся клиенты в т.ч. и тот который изменение сделал. Как можно сделать, что б клиент, сделавший изменение, сообщение не получал? На ум пришло только: отписаться, сделать изменение, подписаться.
Автор: ant0ni02004
Дата сообщения: 28.06.2012 13:28
AlexCoRu
посылать TABLE_CHANGED_ID и смотреть - если приходит свой ID то не реагировать
Автор: AlexCoRu
Дата сообщения: 28.06.2012 13:52
TABLE_CHANGED_ID это что?
Автор: ant0ni02004
Дата сообщения: 28.06.2012 16:17
AlexCoRu

Цитата:
TABLE_CHANGED_ID это что?

если изменяется запись в таблице, например, CLIENTS, ID=123 то посылаете EVENT "CLIENTS_CHANGED_123"

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465

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


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