Рекомендации по производительности для выполнения повторных обновлений в базе данных - PullRequest
0 голосов
/ 06 января 2012

У меня есть таблица базы данных с полем, содержащим RTF (Rich Text Format). Мне нужно конвертировать RTF в HTML, чтобы правильно отобразить его позже в редакторе HTML.

Для этого я разработал консольное приложение, которое для каждой записи таблицы читает поле RTF и преобразует его в HTML. Этот шаг будет выполнен только один раз (это уникальный процесс миграции), и будет затронуто около 1500 записей .

Поскольку количество задействованных записей не столь велико, производительность не будет серьезно затронута, но на данный момент игнорируется объем данных, который я хотел бы знать, который был бы наилучшим шаблоном для такого рода сценариев:

1) Extract data from DB<br>
2) Execute modification on that data<br>
3) Update the relative row with modified values

Учитывая, что я использую LINQ to SQL, все еще допустимо выполнить submit () для каждой измененной записи или было бы лучше сохранить измененные записи в структуре данных (например, HashTable with ID ,ifiedValue) и сделать одну отправку () для всех?

1 Ответ

1 голос
/ 06 января 2012

Производительность на СУБД обычно зависит от оборудования в следующем порядке:

  1. пропускная способность сети
  2. задержка диска
  3. пропускная способность диска
  4. скорость памяти
  5. скорость процессора

Что касается программного обеспечения, узким местом обычно является по крайней мере один из них, не обязательно в этом порядке, и эффекты могут варьироваться от первого до последнего в приведенном выше списке:

  • алгоритм
  • индексы
  • план запроса
  • сделка

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

Вы упоминаете, что это одна вещь, поэтому я бы начал складывать все в одну транзакцию.

Если ваша СУБД - Microsoft SQL Server 2005 или более поздняя версия, вы можете запустить все это на самом сервере, используя CLR Integration и устранить аппаратную границу номер 1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...