Репликация - синхронизация большей части данных иногда - PullRequest
0 голосов
/ 28 апреля 2010

У меня есть некоторые данные, которые неправильно "разбиты" (из-за отсутствия лучшего слова).

Все операции вставки, обработки и отчетности выполняются в одной таблице. Большая часть обработки происходит вскоре после вставки и вскоре после этого становится неизменной (мы говорим дни).

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

Насколько это плохая идея? То есть редактирование хранимой процедуры репликации. </ Edit1>

Это кажется привлекательным на данный момент (я еще не спал), потому что это могло бы уменьшить проблему с производительностью только с очень небольшими изменениями в приложении. Также кажется, что это хороший способ выстрелить себе в ногу.

Edit1:

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

Я мог бы захотеть использовать репликацию, потому что одна таблица может быть в другой базе данных (я знаю, я не упоминал об этом), и поэтому мне не нужно беспокоиться о фиксации двух таблиц, я просто позволяю репликации справиться с этим .

Моя реальная проблема (которую я не прояснил) заключается в том, что редактирование хранимой процедуры репликации может в конечном итоге стать головной болью при развертывании / обслуживании.

1 Ответ

0 голосов
/ 28 апреля 2010

Я бы не рекомендовал репликацию для решения проблемы производительности (если только это не проблема физического распределения данных); во всяком случае, это замедлит работу вашей системы, так как изменения будут распространяться по назначению. Если вы используете один сервер, я бы предложил добавить вторую таблицу с той же схемой, что и первая, но с вашими индексами, оптимизированными для той работы, которую вы выполняете на этапе обработки. Затем создайте представление, которое выбирает из обеих таблиц, и используйте это представление в любом запросе, где требуется объединение обеих таблиц. Затем вы можете добавить больше оборудования для второй таблицы (я имею в виду отдельную файловую группу для большего количества шпинделей) и затем перенести данные с еженедельной задержкой в ​​первую таблицу во время доступного периода обслуживания.

...