powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Guid как id для многомилионной таблицы (тормоза)
6 сообщений из 31, страница 2 из 2
Guid как id для многомилионной таблицы (тормоза)
    #40054493
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
medoed
zeon11
medoed,

Про логику синхронизации не пояснили, но судя по по приведённому Вами запросу с DELETE
в этой логике не всё оптимально. Т.е. по всей видимости сначала "набиваем под завязку" данными таблицу, а потом из таблицы "вычёркиваем" то, что не пригодилось.
Закономерно при таком подходе с ростом количества записей механизм будет проседать по производительности всё сильнее и сильнее, и замена GUID на любой другой идентификатор
только даст временную отсрочку.
Может быть есть возможность пересмотреть алгоритм синхронизации?

Скорее вы правы. План и то что в нём не нравится прилагаю.

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


я бы подумал насчет тригера но простого
вставлять ид-ки УДАЛЕННЫХ записей в ОТДЕЛЬНУЮ ТАБЛИЦУ
DEL_IDS - А ЕЕ уже юзать для удаления - она ж по идее будет небольшая - и удаление возможно будет быстрее

Если я правильно понял по I/U проблем нет - но в принципе если пишется
то можно lastupdate тоже по тригеру (I/U) писать (или вставлять в исх) - и выщемить Дельту по этой дате

ps Я видел подход с тригером для удаленных записей вообще универсальный
была одна таблица id , <table_name> и для каждой таблицы в OLTP был сделан тригер к-й писал
и эта таблица закачивалась и юзалась для удаления старых записей потом в DWH.
Имхо вполне рабочий и разумный подход.
...
Рейтинг: 0 / 0
Guid как id для многомилионной таблицы (тормоза)
    #40054497
Фотография medoed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гулин Федор
medoed
пропущено...

Скорее вы правы. План и то что в нём не нравится прилагаю.

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


я бы подумал насчет тригера но простого
вставлять ид-ки УДАЛЕННЫХ записей в ОТДЕЛЬНУЮ ТАБЛИЦУ
DEL_IDS - А ЕЕ уже юзать для удаления - она ж по идее будет небольшая - и удаление возможно будет быстрее

Если я правильно понял по I/U проблем нет - но в принципе если пишется
то можно lastupdate тоже по тригеру (I/U) писать (или вставлять в исх) - и выщемить Дельту по этой дате

ps Я видел подход с тригером для удаленных записей вообще универсальный
была одна таблица id , <table_name> и для каждой таблицы в OLTP был сделан тригер к-й писал
и эта таблица закачивалась и юзалась для удаления старых записей потом в DWH.
Имхо вполне рабочий и разумный подход.

Видел системы на триггерах, организованные подобным способом - давали жуткие блокировки они.
...
Рейтинг: 0 / 0
Guid как id для многомилионной таблицы (тормоза)
    #40054542
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
medoed

Видел системы на триггерах, организованные подобным способом - давали жуткие блокировки они.


вообще-то фраза ни о чем
...
Рейтинг: 0 / 0
Guid как id для многомилионной таблицы (тормоза)
    #40054642
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
medoed
Владислав Колосов,
С утра разовая вставка порядка 50 к записей. Ну и днём могут прилетать небольшие изменения(каждые 15 минут) по 100-500 записей.


Вопрос с таким объёмом можно решить при помощи триггера. но пока не ясно, что представляет из себя синхронизация при совпадении ключей в источнике и получателе, в каких случаях происходит удаление строк на получателе?
...
Рейтинг: 0 / 0
Guid как id для многомилионной таблицы (тормоза)
    #40054718
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин
medoed

Видел системы на триггерах, организованные подобным способом - давали жуткие блокировки они.


вообще-то фраза ни о чем

Напомнило фильм о Калиостро.

- Видел я их Италию на карте. Сапог - сапогом...
...
Рейтинг: 0 / 0
Guid как id для многомилионной таблицы (тормоза)
    #40054733
Gerros
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
medoed
1) Внешняя система заливает данные по проводкам в первичную таблицу как есть, при этом в виде guid каждой строки генерится рандомно и уникально набор символов, близкий по смыслу к GUID. По этому полю построен индекс (некластерный).
Не совсем понятно, в первичную таблицу только вставка идёт или удаления и обновления тоже есть?
Первичная таблица не чистится перед заливкой?
Можете показать пример запроса, который выполняет внешняя система?
medoed
2) Есть уже реальная таблица в витрине с таким же именем и почти такой же структурой, которая синхронизируется с таблицей из пункта 1)
Кроме удаления что-то ещё делается с реальной таблицей? Можете показать пример запроса (запросов), который синхронизирует реальную таблицу с первичной?
...
Рейтинг: 0 / 0
6 сообщений из 31, страница 2 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Guid как id для многомилионной таблицы (тормоза)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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