powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Статистика индексов считается и используется не сразу (а после перезапуска сервера)
15 сообщений из 15, страница 1 из 1
Статистика индексов считается и используется не сразу (а после перезапуска сервера)
    #40009320
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такая проблема.
И странное поведение.

Создаю новую таблицу (на самом деле - две, вторая - агрегаты за период), в ней пк и еще один индекс.
Эта таблица - 1 к 1 с существующей большой таблицей, с доп. данными.
Начинаю наполнять её.
Сразу скажу, что совет "вначале наполняй, а потом - создавай индексы" не поможет, т.к. одновременно происходит заполнение второй агрегатной таблицы уже заполненными данными из этой (по INNER JOIN с большой, основной таблицей).

Основная таблица - 10 млн записей, из нее берется 1 млн.
Для каждой записи из этого 1 млн. происходит еще запрос некоторых данных и некоторые рассчеты, затем сохраняется запись.
Когда за период заполнили - связываем основную и рассчитанную, группируем и заносим данные в агрегатную.
Периодов - примерно 10 тыс.
Т.ч. индексы нужны сразу.

Так вот, если только создать таблицы с индексами и сразу запустить рассчет - дождаться невозможно, прождал минут 10, ребутнул сервер.
Запускаю рассчет малой доли данных - она рассчитывается за 3 секунды. В основную таблицу зашло около тысячи записей.
Коммичу, захожу в ИБЕ в индексы этой новой таблицы - у всех статистика 0, включая ПК.
Пересчитываю статистику, удаляю все данные, запускаю рассчет этой же малой доли данных - то же самое, 3 секунды.
Несколько раз повторил эти сценарии - всё то же самое.

Перезапустил сервер.
Еще раз запускаю рассчет этой же малой доли данных - и о чудо! 78 миллисекунд!
Рассчет всех данных - 30 секунд!


Для верности еще пару раз повторил кейс, который приводит к быстрой работе:
1. Рассчитать малую часть данных;
2. Рассчитать статистику индексов на этой таблице;
3. Перезапустить сервер.

Всегда помогает.

Объяснение пока одно - сервер начинает использовать статистику не сразу после перерасчета, а после перезапуска.
Можно это как-то объяснить?
И можно как-то добиться этого эффекта (использования статистики) без перезапуска сервера?

А то это тестовая база, а в реальных данных будет больше на порядок-два, да и просто сервер ребутать не охота...

Спасибо.

FB 3.0.6 x64 win, dialect 1
...
Рейтинг: 0 / 0
Статистика индексов считается и используется не сразу (а после перезапуска сервера)
    #40009322
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забыл добавить, SS.
...
Рейтинг: 0 / 0
Статистика индексов считается и используется не сразу (а после перезапуска сервера)
    #40009324
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробуй для начала реконнект.

зы: выводы в большинстве своём не верные
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Статистика индексов считается и используется не сразу (а после перезапуска сервера)
    #40009325
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockМожно это как-то объяснить?

Статистика собирается при коммите транзакции в которой был выполнен запрос "SET STATISTICS".
Статистика используется при препарировании запроса.

Если у тебя первое произошло после второго - ты ССЗБ.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Статистика индексов считается и используется не сразу (а после перезапуска сервера)
    #40009326
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Новые подробности :)

Оказалось, ребут не нужен, достаточно переконнектиться к БД.
Это уже намного проще.

Остался такой, скорректированный вопрос: пересчитанная статистика индексов начинает использоваться только после реконнекта? Это нормально?
...
Рейтинг: 0 / 0
Статистика индексов считается и используется не сразу (а после перезапуска сервера)
    #40009327
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий
попробуй для начала реконнект
Не успел :)

Мимопроходящий
зы: выводы в большинстве своём не верные
Это привычно
...
Рейтинг: 0 / 0
Статистика индексов считается и используется не сразу (а после перезапуска сервера)
    #40009328
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
YuRockМожно это как-то объяснить?

Статистика собирается при коммите транзакции в которой был выполнен запрос "SET STATISTICS".
Статистика используется при препарировании запроса.

Если у тебя первое произошло после второго - ты ССЗБ.К сожалению, нет, после коммита рассчета статистики, я делаю новый запрос, новое препарирование, и он всё равно ее не использует.
Только реконнект к базе помогает пока.
...
Рейтинг: 0 / 0
Статистика индексов считается и используется не сразу (а после перезапуска сервера)
    #40009330
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock

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


не верится. Тестовый примерчик можно?
...
Рейтинг: 0 / 0
Статистика индексов считается и используется не сразу (а после перезапуска сервера)
    #40009334
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Рассчёт в процедуре ?
...
Рейтинг: 0 / 0
Статистика индексов считается и используется не сразу (а после перезапуска сервера)
    #40009346
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad
Рассчёт в процедуре ?
Да
...
Рейтинг: 0 / 0
Статистика индексов считается и используется не сразу (а после перезапуска сервера)
    #40009347
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис
YuRock

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


не верится. Тестовый примерчик можно?
Сложно уже, уехал.
Там EXECUTE BLOCK, в нем FOR SELECT DO EXECUTE PROCEDURE
...
Рейтинг: 0 / 0
Статистика индексов считается и используется не сразу (а после перезапуска сервера)
    #40009348
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock
hvlad
Рассчёт в процедуре ?
Да
Это как-то связано, я так понял? ;)
...
Рейтинг: 0 / 0
Статистика индексов считается и используется не сразу (а после перезапуска сервера)
    #40009353
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock
YuRock
hvladРассчёт в процедуре ?

Да
Это как-то связано, я так понял? ;)Конечно. Запрос самой процедуры кеширован сервером.
Выбить его из кеша можно только альтером процедуры.
Ну или заново загрузить в кеш в новом коннекте.
...
Рейтинг: 0 / 0
Статистика индексов считается и используется не сразу (а после перезапуска сервера)
    #40009366
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock,

ей-богу, чего вы такие дикие, ну одни и те же вопросы на протяжении 20ти лет.
...
Рейтинг: 0 / 0
Статистика индексов считается и используется не сразу (а после перезапуска сервера)
    #40009395
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad
YuRock
пропущено...
Это как-то связано, я так понял? ;)
Конечно. Запрос самой процедуры кеширован сервером.
Выбить его из кеша можно только альтером процедуры.
Ну или заново загрузить в кеш в новом коннекте.
Благодарю.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Статистика индексов считается и используется не сразу (а после перезапуска сервера)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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