powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Косяк или Почему так?
39 сообщений из 39, показаны все 2 страниц
Косяк или Почему так?
    #40056135
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем зрасте! :-)
Всё началось с хорошего стеба и глума на мюскулистами.
Потом таки решил проверить FB.

По порядку.
Имеем:
- сервер Wi-V6.3.7.33374 FB 3.0
- БД на всего-то 4 232 810 записей.

Запускаю в IB-Experte простенький запрос select count(*) from ТАБЛЯ
Получаю:
PLAN (ТАБЛЯ NATURAL)
------ Информация о производительности ------
Время подготовки запроса = 0ms
Время выполнения запроса = 2s 953ms

Переписываю запрос: select count(ID) from ТАБЛЯ
На поле ID есть свежесозданный уникальный индекс.
Получаю:
PLAN (ТАБЛЯ NATURAL)
------ Информация о производительности ------
Время подготовки запроса = 0ms
Время выполнения запроса = 3s 156ms


PS: Вини - отдельный респект и уважуху передайте.
...
Рейтинг: 0 / 0
Косяк или Почему так?
    #40056137
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select count(1) что покажет?
...
Рейтинг: 0 / 0
Косяк или Почему так?
    #40056139
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Di_LIne,

ну ты же не первый день на форуме. Знаешь Firebird не умеет делать Only Index Scan. Поэтому с NATURAL всё очевидно.

count(*) быстрее count(ID), потому что во втором случае требуется распаковка записей. В первом просто считаются записи по смещениям.
...
Рейтинг: 0 / 0
Косяк или Почему так?
    #40056145
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фигасе, явление блудного сына... :)

P.S. Винни нынче мишка и трезвый.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Косяк или Почему так?
    #40056146
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис
ну ты же не первый день на форуме. Знаешь Firebird не умеет делать Only Index Scan. Поэтому с NATURAL всё очевидно.

Мапед не мой, а отцов разрабов, а я только объяву повесил.
Для меня - не очевидно такое поведение FB.
Как для кляузы WHERE индекс найти и устроить скан по нему - так FB всё умеет, а тут - нет...

За 2 десятка лет можно было и подрихтовать, что б ползатели по таблям не впадали в шок.

PS: Говорят мускулисты признали багом указанное поведение при select count(*) from и внесли в баг-лист.
...
Рейтинг: 0 / 0
Косяк или Почему так?
    #40056149
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman
select count(1) что покажет?


План
PLAN (S_WORD NATURAL)
------ Информация о производительности ------
Время подготовки запроса = 15ms
Время выполнения запроса = 2s 454ms
...
Рейтинг: 0 / 0
Косяк или Почему так?
    #40056150
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам
Фигасе, явление блудного сына... :)

P.S. Винни нынче мишка и трезвый.

- И тебе привет, Рустам!
...
Рейтинг: 0 / 0
Косяк или Почему так?
    #40056156
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
- Надеюсь ковидло вас всех обошло стороной.

Если чё - я привился Спутником-V, 1 марта была вторая доза.
...
Рейтинг: 0 / 0
Косяк или Почему так?
    #40056157
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Di_LIne,

вот только у мускулистов OIT есть. У нас его отродясь не было.
В Firebird чтобы узнать указывает ли ключ индекса на существующую запись обязательно надо обязательно прочитать страницу данных.
Поэтому говорить что это баг нельзя. Просто нет такого метода доступа и всё.

Вот тут http://www.ibase.ru/dataaccesspaths/ всё подробно описано.
Да в 3.0 появилось кое-что новое (HASH JOIN, буферизация записей для оконных функций), но в целом статья актуальна.
...
Рейтинг: 0 / 0
Косяк или Почему так?
    #40056159
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Di_LIne> За 2 десятка лет можно было и подрихтовать

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

С ним всё в порядке?

P.S. Чак Норрис заболел короновирусом.
У короновируса большие проблемы... (с)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Косяк или Почему так?
    #40056170
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to ALL
В FB всё как всегда:
- 2 страницы будут доказывать, что сделать этого категоричеЦки низя.
- 3-я стр. - срачь всех со всеми
- 4-я - начнут думать как исправить.
...
Рейтинг: 0 / 0
Косяк или Почему так?
    #40056172
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис
Вот тут http://www.ibase.ru/dataaccesspaths/ всё подробно описано.
Да в 3.0 появилось кое-что новое (HASH JOIN, буферизация записей для оконных функций), но в целом статья актуальна.

Пасип!
Читаю....
...
Рейтинг: 0 / 0
Косяк или Почему так?
    #40056175
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Di_LIne,

ни кто не говорит что это сделать нельзя. Обсуждение этой темы было. Вариантов 2:

1. добавить в ключи индекса два номера транзакции: создавшую ключ и удалившую. Это считается слишком дорогим удовольствием
2. Сделать так как в Postgres, через карту видимости. То есть IOS если и будет, то только для таблиц которые меняются относительно редко.

Пока ни того ни другого нет.

Видишь ли багом это можно было бы считать, если бы Firebird принципиально умел Index Only Scan, но по какой-то причине не использовал его в конкретном запросе. А раз не умеет, то это не баг.
...
Рейтинг: 0 / 0
Косяк или Почему так?
    #40056183
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
informix по разному считает:

SELECT COUNT(id) FROM table;
SELECT COUNT(*) FROM table;

Первый честно сканирует. Даже не смотря, что поле not null. (800 тыс, >3 сек)
Второй - по индексу, мгновенно. (800 тыс, < 1с).

Микросекунд в софте нет. БД через впн на производстве.
...
Рейтинг: 0 / 0
Косяк или Почему так?
    #40056216
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman> Второй - по индексу, мгновенно. (800 тыс, < 1с).

Ну если там есть индексное покрытие (я не в курсе) - неудивительно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Косяк или Почему так?
    #40056217
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя опять же, странно, что его нет по PK.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Косяк или Почему так?
    #40056221
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Di_LInePS: Говорят мускулисты признали багом указанное поведение при select count(*) from и
внесли в баг-лист.

Внести-то просто, мы посмотрим когда они его оттуда вынесут. Ибо ихняя ИннаДБ тоже
версионная. Хотя с другой стороны мускулистам не привыкать к возврату неправильного
значения...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Косяк или Почему так?
    #40056246
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,

у Информикса версионность есть?
...
Рейтинг: 0 / 0
Косяк или Почему так?
    #40056247
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис1. добавить в ключи индекса два номера транзакции: создавшую ключ и удалившую. Это считается слишком дорогим удовольствием
этот вариант забраковали, даже просто id транзакции от версии в ключе - тоже забраковали.
...
Рейтинг: 0 / 0
Косяк или Почему так?
    #40056251
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv,

я помню. Остаётся второй вариант. Сделать как у Постргеса с присущими ему ограничениями.
...
Рейтинг: 0 / 0
Косяк или Почему так?
    #40056253
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ничего не забраковывали. Просто все варианты надо оценивать со всех сторон. А для этого надо сделать хотя бы грубый черновик реализации.
...
Рейтинг: 0 / 0
Косяк или Почему так?
    #40056265
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я думал вариант с номерами тразакций для отдельного типа индексов
(типа c доп. ключевым словом covering при создании) не забраковали.

Видимо, то ли делать некому/некогда, то ли тестировать особенно не на чём.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Косяк или Почему так?
    #40056274
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr,

я помню что Мата Хари Энн Харрисон оценивала этот вариант и высказалась о нем негативно.
В любом случае при добавлении номеров транзакции разбухнут индексы, и это даст отрицательный эффект на производительность вообще.
Стоит-ли count(field) таких жертв? Сильно сомневаюсь.

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

ну вот разве что "отдельный тип индексов" - это да. Включая индексы, которые индексируют только часть таблицы.
...
Рейтинг: 0 / 0
Косяк или Почему так?
    #40056283
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я предлагаю щотчег!
версионно-инкрементный/декрементный!
надо кому count(*)?
дык вот оно, уже посчитано!










[стёб]
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Косяк или Почему так?
    #40056301
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv> В каких еще случаях мог бы быть нужен

Ну вот опять, мочи мочало, начинай сначала.
Во всех случаях, когда хочется/достаточно
получить данные из индекса, а не из записи...

Речь же не только о Count/Exists и т.д.

Но это по дефолту для всех индексов я бы это
не включал, пожалуй.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Косяк или Почему так?
    #40056312
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий
я предлагаю щотчег!
версионно-инкрементный/декрементный!
надо кому count(*)?
дык вот оно, уже посчитано!

И настанет эра светлой бездырочной нумерации!


МП тебе тошь - персональный привет и респект!
...
Рейтинг: 0 / 0
Косяк или Почему так?
    #40056317
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov, kdv, dimitr - да обошли вас лавины и ковидло! (самайлик с пивом)
...
Рейтинг: 0 / 0
Косяк или Почему так?
    #40056322
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
23.03.2021 16:17, Di_LIne пишет:
> И настанет эра светлой бездырочной нумерации!
> МП тебе тошь - персональный привет и респект!

где пропадал-то всё это время?
изменял нам поди? ©
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Косяк или Почему так?
    #40056332
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий
23.03.2021 16:17, Di_LIne пишет:
> И настанет эра светлой бездырочной нумерации!
> МП тебе тошь - персональный привет и респект!

где пропадал-то всё это время?
изменял нам поди? ©

- Меня даже Мюскулем соблазняли! (Ц)
.
.
У П02 на форуме оттягиваюсь, после закрытия Джуждем.
...
Рейтинг: 0 / 0
Косяк или Почему так?
    #40056334
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. не изменял, а продолжает изменять. :)


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Косяк или Почему так?
    #40056345
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
//0FFF
Гаджимурадов Рустам
Т.е. не изменял, а продолжает изменять. :)

С августа 2018 по март 2021 - 100 тыщ постов отметил.
...
Рейтинг: 0 / 0
Косяк или Почему так?
    #40056355
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv
у Информикса версионность есть?

У нас трехвезнка, потому глубоко копать нужды не было.
Ощущение, что тут только анси
https://www.ibm.com/support/knowledgecenter/SSGU8G_14.1.0/com.ibm.sqls.doc/ids_sqs_0030.htm
...
Рейтинг: 0 / 0
Косяк или Почему так?
    #40056425
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Di_LIne
Всем зрасте! :-)

PS: Вини - отдельный респект и уважуху передайте.


Здарова :) Рад видеть :) Я здесь возбухаю периодицки когда проснусь вовремя :)

От выруса я тоже привился, вторая была 17 февраля. Но умудрился попасть в цепкие лапы отечественной медицины 1 марта по поводу, как оказалось, гриппера. Чудом вырвался из больнички не успев подцепить ни тиф ни сифилис. В смысле натурально сбежал на третий день. Как говорится - как бы попасть в ту страну, про которую рассказывают по телевизору. Язык чешется рассказать в деталях, но тему засирать неохота :)
...
Рейтинг: 0 / 0
Косяк или Почему так?
    #40056429
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Старый плюшевый мишка, рад видеть тебя!
И хорошо всё, что хорошо заканчивается.
Хоть через мосты прыгать, хоть из больнички свинтится.


Старый плюшевый мишка
Язык чешется рассказать в деталях, но тему засирать неохота :)

нешта и топик "Тяпница" враги изничтожили?
...
Рейтинг: 0 / 0
Косяк или Почему так?
    #40056448
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Di_LIne

нешта и топик "Тяпница" враги изничтожили?


Да выступление с бухты-барахты будет выглядеть как банальное нытьё, такие вещи хорошо идут репликой в тему разговора :)
...
Рейтинг: 0 / 0
Косяк или Почему так?
    #40056478
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящий
версионно-инкрементный/декрементный!

Страшно, нафиг
...
Рейтинг: 0 / 0
Косяк или Почему так?
    #40056579
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий
надо кому count(*)?
дык вот оно, уже посчитано!
Надо отдельную готовую функцию для max(id) + 1
Чтобы два раза не вставать.
...
Рейтинг: 0 / 0
39 сообщений из 39, показаны все 2 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Косяк или Почему так?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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