powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Ухудшение производительности при заполнении значений столбца
17 сообщений из 17, страница 1 из 1
Ухудшение производительности при заполнении значений столбца
    #38996595
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеется таблица с 3 млн. записей. В таблице есть поле GUID CHAR(32), все значения - NULL. Запрос select count(*) для этой таблицы выполняется за 5 секунд. После того, как для каждой записи проставили значение поля GUID, запрос select count(*) стал отрабатывать более часа. Индекс на это поле есть. После выполнения backup-restore базы, производительность восстанавливается до исходной. В чем может быть причина такого падения производительности и как ее избежать?
...
Рейтинг: 0 / 0
Ухудшение производительности при заполнении значений столбца
    #38996612
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterloperВ чем может быть причина такого падения производительности и как ее избежать?Мусор. Не избежать никак, апдейт гарантирует появление мусора. надо один раз убрать. бэкап-рестор для этого как из пушки по воробью, но таки да, мусор он уберет гарантированно.
Если нет заинтересованных транзакций, то можно просто прогнать неиндескное чтение по таблице, ну или свип запустить.

InterloperGUID CHAR(32),странный гуид, 16 октетс чаров понимаю, 36 чаров для хуман ридебл понимаю, 32 не понимаю.
...
Рейтинг: 0 / 0
Ухудшение производительности при заполнении значений столбца
    #38996638
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterloperПосле выполнения backup-restore базы, производительность восстанавливается до исходной.

Она и без b/r восстановится достаточно собрать мусор.

это ведь одноразовая операция? Тогда можно просто собрать мусор и не парится. В индексах сборка мусора сейчас не самая быстрая операция. Если такое выполняется постоянно, то это повод пересмотреть подход к проектированию.

Кстати какая версия сервера?
...
Рейтинг: 0 / 0
Ухудшение производительности при заполнении значений столбца
    #38996685
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисInterloperПосле выполнения backup-restore базы, производительность восстанавливается до исходной.

Она и без b/r восстановится достаточно собрать мусор.

это ведь одноразовая операция? Тогда можно просто собрать мусор и не парится. В индексах сборка мусора сейчас не самая быстрая операция. Если такое выполняется постоянно, то это повод пересмотреть подход к проектированию.

Кстати какая версия сервера?

Операция одноразовая, но новые записи в данную таблицу будут добавляться уже с заполненным GUID.
Версия сервера - 1.5.
...
Рейтинг: 0 / 0
Ухудшение производительности при заполнении значений столбца
    #38996688
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Каким образом можно инициировать сборку мусора непосредственно из скрипта?
...
Рейтинг: 0 / 0
Ухудшение производительности при заполнении значений столбца
    #38996699
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Interloper!
You wrote on 1 июля 2015 г. 11:58:09:

Interloper> Каким образом можно инициировать сборку мусора непосредственно из
скрипта?так же как ты её стартовал каунтом.
только перед этим не забудь закоммитить обновления.
чтобы каунт бежал в новой транзакции, собирая мусор.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Ухудшение производительности при заполнении значений столбца
    #38996713
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Interloper,

замечание о том, что произошло.
скорее всего ты сначала создал индекс по столбцу, где все 3млн значений были null. Потом сделал update с guid. В результате в индексе остался ключ null, указывающий на все 3 млн записей. Из-за чего при сборке мусора на каждую запись сервер искал номер этой записи в ключе из 3млн номеров записей.

Поэтому такие массовые операции надо делать без индексов, особенно по таким неуникальным столбцам. Гораздо быстрее будет
- сделать апдейт
- убрать мусор
- создать индекс.

до сборки мусора создавать индекс не стоит, потому что индекс проиндексирует все версии, в т.ч. "мусорные", и будет опять та же фигня.
...
Рейтинг: 0 / 0
Ухудшение производительности при заполнении значений столбца
    #38996716
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Interloper,

ну там дело совсем дрянь. У тебя индекс первоначально построен на поле с единственным значением NULL. В 1.5 сборка мусора в индексе с большим числом дубликатов ключей конкретный тормоз.

Можно было сначала грохнуть или отрубить индекс (если конечно есть возможность), потом обновить записи и сделать сборку мусора, а потом врубить его обратно. Так быстрее будет.
...
Рейтинг: 0 / 0
Ухудшение производительности при заполнении значений столбца
    #38996744
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

Попробовали такую последовательность действий:
1. Отключить индекс
2. Сделать update
3. Включить индекс

Работает нормально. Получается, сборку мусора можно явно не делать, она сама собой произойдет в процессе работы с таблицей?
...
Рейтинг: 0 / 0
Ухудшение производительности при заполнении значений столбца
    #38996757
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterloperПолучается, сборку мусора можно явно не делать, она сама собой произойдет в процессе работы с таблицей?Странное понимание, говорят одно, а человек понимает совершенно другое. Да, мусор в процессе уберется в любом случае, только этот "случай" может возникнуть в самый неподходящий момент.

Еще почитай про термин "версия" и "мусор" в какой момент что рождается и когда меняет свой статус.
...
Рейтинг: 0 / 0
Ухудшение производительности при заполнении значений столбца
    #38996761
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Ухудшение производительности при заполнении значений столбца
    #38996778
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Interloper
Попробовали такую последовательность действий:


1. Отключить индекс
2. Сделать update
3. Сделать сборку мусора (это ты забыл)
4. Включить индекс

Ты бы хоть читал что тебе пишут. А вообще надо было как то так

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
alter MyTable add GUID CHAR(32);

update MyTable -- где ты GUID проставишь

commit;

select count(*) from MyTable;

commit;

create index -- или PK. хз что там у тебя на GUID



Как и говорил kdv
...
Рейтинг: 0 / 0
Ухудшение производительности при заполнении значений столбца
    #38996781
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterloperСимонов Денис,

Попробовали такую последовательность действий:
1. Отключить индекс
2. Сделать update
3. Включить индекс

Работает нормально. Получается, сборку мусора можно явно не делать, она сама собой произойдет в процессе работы с таблицей?В данном сценарии мусор соберётся на 3-м шаге (есс-но, если OST не застряла)
...
Рейтинг: 0 / 0
Ухудшение производительности при заполнении значений столбца
    #38996815
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

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

Влад говорит что уберется. Но это если у тебя не застряло никаких транзакций, которые будут препятствовать сборке мусора. Прочитай уже статьи про мусор, сборку мусора и версионность.
...
Рейтинг: 0 / 0
Ухудшение производительности при заполнении значений столбца
    #38996823
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Interloper,

уберётся. Как и сказал Влад. Главное что ты должен понять так это то, что не надо создавать индекс раньше времени.
...
Рейтинг: 0 / 0
Ухудшение производительности при заполнении значений столбца
    #38996977
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

Это я понял. Спасибо.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Ухудшение производительности при заполнении значений столбца
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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