Restart Unicorn with a USR2 - quitting old master

В таблице без кластерного индекса (таблица "кучи"), страницы данных не соединены - настолько пересекающие страницы требуют поиск в Карту распределения индексов .

, которую имеет кластеризованная таблица, однако, это страницы данных, связанные в двунаправленном связанном списке - создание последовательных сканирований немного быстрее. Конечно, в обмен, у Вас есть издержки контакта с поддержанием в порядке страниц данных на INSERT, UPDATE, и DELETE. Таблица "кучи", однако, требует, чтобы вторая запись ко мне БЫЛА.

, Если Ваш запрос имеет RANGE оператор (например: SELECT * FROM TABLE WHERE Id BETWEEN 1 AND 100), затем кластеризованная таблица (находиться в гарантируемом порядке) была бы более эффективной - поскольку она могла использовать индексные страницы для нахождения соответствующей страницы (страниц) данных. "Куча" должна была бы просканировать все строки, так как она не может полагаться на упорядочивание.

И, конечно, кластерный индекс позволяет Вам сделать, КЛАСТЕРНЫЙ ИНДЕКС ИЩЕТ, который в значительной степени оптимален для производительности..., "куча" без индексов всегда приводила бы к сканированию таблицы.

Так:

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

  • Для запроса с WHERE пункт, который может быть (по крайней мере, частично) удовлетворен кластерным индексом, Вы выйдете вперед из-за упорядочивания - таким образом, Вы не должны будете сканировать всю таблицу.

  • Для запроса, который не является satisified кластерным индексом, Вы в значительной степени даже... снова, единственная разница, являющаяся тем двунаправленным связанным списком для последовательного сканирования. В любом случае Вы являетесь субоптимальными.

  • Для INSERT, UPDATE, и DELETE "куча" может или не может победить. "Куча" не должна поддерживать порядок, но действительно требует, чтобы вторая запись ко мне БЫЛА. Я думаю, что относительное различие в производительности было бы незначительно, но также и довольно информационно-зависимо.

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

  • INSERT производительность: кластерный индекс побеждает приблизительно на 3% из-за второй записи, необходимой для "кучи".
  • UPDATE производительность: кластерный индекс побеждает приблизительно на 8% из-за второго поиска, необходимого для "кучи".
  • DELETE производительность: победы кластерного индекса приблизительно на 18% из-за второго необходимого поиска и второе удаляют необходимый из меня, для "кучи".
  • единственный SELECT производительность: кластерный индекс побеждает приблизительно на 16% из-за второго поиска, необходимого для "кучи".
  • диапазон SELECT производительность: кластерный индекс побеждает приблизительно на 29% из-за случайного упорядочивания для "кучи".
  • параллельный INSERT: таблица "кучи" побеждает на 30% при загрузке из-за расщеплений страницы для кластерного индекса.

22
задан Rob Cameron 26 April 2011 в 17:53
поделиться

1 ответ

Похоже, что отправка сигнала HUP ведущему Unicorn является лучшей альтернативой, если preload_app - false.

Из http://unicorn.bogomips.org/SIGNALS.html :

HUP - перезагружает конфигурационный файл и корректно перезапускает всех рабочих. Если директива preload_app имеет значение false (по умолчанию), то при перезапуске работники также поймут любые изменения кода приложения.

8
ответ дан 29 November 2019 в 05:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: