|
|
|
Статистика индексов считается и используется не сразу (а после перезапуска сервера)
|
|||
|---|---|---|---|
|
#18+
Такая проблема. И странное поведение. Создаю новую таблицу (на самом деле - две, вторая - агрегаты за период), в ней пк и еще один индекс. Эта таблица - 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2020, 18:15:11 |
|
||
|
Статистика индексов считается и используется не сразу (а после перезапуска сервера)
|
|||
|---|---|---|---|
|
#18+
Забыл добавить, SS. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2020, 18:19:45 |
|
||
|
Статистика индексов считается и используется не сразу (а после перезапуска сервера)
|
|||
|---|---|---|---|
|
#18+
попробуй для начала реконнект. зы: выводы в большинстве своём не верные Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2020, 18:22:46 |
|
||
|
Статистика индексов считается и используется не сразу (а после перезапуска сервера)
|
|||
|---|---|---|---|
|
#18+
YuRockМожно это как-то объяснить? Статистика собирается при коммите транзакции в которой был выполнен запрос "SET STATISTICS". Статистика используется при препарировании запроса. Если у тебя первое произошло после второго - ты ССЗБ. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2020, 18:26:25 |
|
||
|
Статистика индексов считается и используется не сразу (а после перезапуска сервера)
|
|||
|---|---|---|---|
|
#18+
Новые подробности :) Оказалось, ребут не нужен, достаточно переконнектиться к БД. Это уже намного проще. Остался такой, скорректированный вопрос: пересчитанная статистика индексов начинает использоваться только после реконнекта? Это нормально? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2020, 18:27:18 |
|
||
|
Статистика индексов считается и используется не сразу (а после перезапуска сервера)
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий попробуй для начала реконнект Мимопроходящий зы: выводы в большинстве своём не верные ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2020, 18:28:07 |
|
||
|
Статистика индексов считается и используется не сразу (а после перезапуска сервера)
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov YuRockМожно это как-то объяснить? Статистика собирается при коммите транзакции в которой был выполнен запрос "SET STATISTICS". Статистика используется при препарировании запроса. Если у тебя первое произошло после второго - ты ССЗБ.К сожалению, нет, после коммита рассчета статистики, я делаю новый запрос, новое препарирование, и он всё равно ее не использует. Только реконнект к базе помогает пока. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2020, 18:33:29 |
|
||
|
Статистика индексов считается и используется не сразу (а после перезапуска сервера)
|
|||
|---|---|---|---|
|
#18+
YuRock К сожалению, нет, после коммита рассчета статистики, я делаю новый запрос, новое препарирование, и он всё равно ее не использует. Только реконнект к базе помогает пока. не верится. Тестовый примерчик можно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2020, 18:43:09 |
|
||
|
Статистика индексов считается и используется не сразу (а после перезапуска сервера)
|
|||
|---|---|---|---|
|
#18+
Рассчёт в процедуре ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2020, 18:57:48 |
|
||
|
Статистика индексов считается и используется не сразу (а после перезапуска сервера)
|
|||
|---|---|---|---|
|
#18+
hvlad Рассчёт в процедуре ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2020, 19:36:42 |
|
||
|
Статистика индексов считается и используется не сразу (а после перезапуска сервера)
|
|||
|---|---|---|---|
|
#18+
Симонов Денис YuRock К сожалению, нет, после коммита рассчета статистики, я делаю новый запрос, новое препарирование, и он всё равно ее не использует. Только реконнект к базе помогает пока. не верится. Тестовый примерчик можно? Там EXECUTE BLOCK, в нем FOR SELECT DO EXECUTE PROCEDURE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2020, 19:38:17 |
|
||
|
Статистика индексов считается и используется не сразу (а после перезапуска сервера)
|
|||
|---|---|---|---|
|
#18+
YuRock hvlad Рассчёт в процедуре ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2020, 19:39:08 |
|
||
|
Статистика индексов считается и используется не сразу (а после перезапуска сервера)
|
|||
|---|---|---|---|
|
#18+
YuRock YuRock hvladРассчёт в процедуре ? Да Выбить его из кеша можно только альтером процедуры. Ну или заново загрузить в кеш в новом коннекте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2020, 19:51:46 |
|
||
|
Статистика индексов считается и используется не сразу (а после перезапуска сервера)
|
|||
|---|---|---|---|
|
#18+
YuRock, ей-богу, чего вы такие дикие, ну одни и те же вопросы на протяжении 20ти лет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2020, 20:47:09 |
|
||
|
Статистика индексов считается и используется не сразу (а после перезапуска сервера)
|
|||
|---|---|---|---|
|
#18+
hvlad YuRock пропущено... Это как-то связано, я так понял? ;) Выбить его из кеша можно только альтером процедуры. Ну или заново загрузить в кеш в новом коннекте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2020, 23:44:40 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=40009353&tid=1560223]: |
0ms |
get settings: |
6ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
41ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 208ms |
| total: | 336ms |

| 0 / 0 |
