Проблема производительности SQL Server - PullRequest
0 голосов
/ 29 февраля 2012

На моем сервере запущено 7 анализаторов XML (сбор данных со сторонних веб-сайтов).

Когда я запускаю каждый XML-парсер отдельно, требуется около 1 минуты, чтобы перейти к 15 МБ XML (что довольно много).

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

Каждый XML добавляет много информации в БД и выполняет около 50 000 запросов.

Сервер, на котором я запускаю мои парсеры:

  • Тип сервера: Hp Dl180 g6
  • Тип процессора: Intel Xeon E5504
  • Частота процессора: 2000 МГц
  • Количество процессоров: 2
  • Количество ядер: 4
  • RAM: 16 ГБ

Запуск SQL Server Web Edition на 2 процессорах

Проблема возникает, когда все анализаторы работают параллельно, загрузка ЦП SQL Server достигает 100%.

И действительно большая проблема в том, что в будущем мне понадобится около 50 парсеров XML: (

Что вы посоветуете, ребята? я должен обновить сервер XML возможно? или сам сервер?

Может быть, SQL Server работает на 1 ЦП, а не на 2 ЦП? как я могу это проверить?

Любой совет поможет ...

Ответы [ 2 ]

1 голос
/ 29 февраля 2012

Была такая же проблема. у меня было 600 000 строк XML, которые не заканчивались даже через час. Для меня было полезно разбить XML на более мелкие куски и вставить куски в временную таблицу (в моем XML-описании описывались телевизионные ботинки, поэтому я разбил его на 200 различных каналов), и теперь это занимает 1 минуту для всего XML

0 голосов
/ 29 февраля 2012

Несмотря на то, что процессор на 100%, я думаю, что ваше узкое место здесь - это ввод / вывод. Тем более, что вы сказали, что у вас есть несколько процессов чтения и записи данных на диск одновременно. Можете ли вы проверить ввод-вывод на вашем сервере?

Если процессы работают с разными таблицами, вы можете сделать что-то, например, использовать Filegroups для разделения вашей БД на разные HD.

Если они обращаются к одним и тем же таблицам, возможно, у вас есть проблема с блокировкой, когда анализатор A пытается прочитать данные в тот же самый анализатор таблицы B, который записывает. Я бы порекомендовал, ПРОСТО ИСПЫТАТЬ и выяснить, действительно ли это проблема, запуск вашего процесса с уровнем изоляции, считанным без коммитов. Если он работает нормально, вы будете знать, в чем проблема.

...