Идентификационная вставка - производительность - PullRequest
0 голосов
/ 26 октября 2010

У меня есть одно решение, где я вставляю строки, где вместо идентификатора я использую GUID. Guid генерируется в c #.

У меня есть другое решение, где таблица, индексы и т. Д. Идентичны, но вместо идентификаторов GUID я использую идентификаторы и позволяю Sql-серверу генерировать их.

В последнем случае я получаю проблемы с производительностью .... Идеи?

EDIT

Мне очень жаль! Я добрался до дома, установил профилировщик и увидел, что я сравниваю яблоки и груши ... С моей стороны большая мисс. Я использовал разные sql. Теперь продолжительность примерно одинакова.

Ответы [ 2 ]

1 голос
/ 26 октября 2010

Честно говоря, я ожидаю, что проблема с производительностью будет связана с идентификатором guid.Когда вы используете guids, если вы используете newid () вместо newsequentialid (), у вас есть возможность разделения страниц из-за того, что новая запись вставляется в середину таблицы вместо конца.

0 голосов
/ 26 октября 2010

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

Окружающая среда:

  • Какой выпуск SQL Server вы используете?
  • Что такое спецификации процессора и оперативной памяти?
  • Какова конфигурация вашей подсистемы хранения?
  • Укажите схемы таблиц и соответствующие определения индексов.
  • Укажите тестовый код, демонстрирующий, как выполняются вставки.

Производительность:

  • Какие wait_types вы видите на сервере во время ваших вставок, т. Е. Какой ресурс ожидает SQL Server? Вы привязаны к процессору или к диску или, возможно, у вас конфликт страниц.
  • Отличаются ли wait_types в зависимости от того, когда вы запускаете тест с идентификатором V GUID?

Начальная гипотеза / спекуляция:

Возможно, вы столкнулись с конфликтом страниц при выполнении вставки идентификаторов, так как ведущий столбец в индексе постоянно увеличивается, ресурс-соперник будет последней страницей в B-дереве.

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

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