Преимущества обновления 32-разрядных Windows Server и SQL Server до 64-разрядных?


13

Предположим, что у меня есть 32-битный Windows Server, который работает с несколькими серверными приложениями вместе с SQL Server, с использованием оперативной памяти около 2 ГБ в часы пиковой нагрузки.

Каковы будут преимущества обновления ОС Windows Server и SQL Server до соответствующих 64-разрядных версий, когда серверные приложения остаются 32-разрядными? 64-разрядные версии обеспечивают доступ к более чем 4 ГБ ОЗУ, но, поскольку 4 ГБ используются не полностью, это может привести к срыву обновления?

Версии: Windows Server 2008 R2, SQL Server 2008 R2 Datacenter Edition

Благодарность

Ответы:


19

Сильно связаны: веские причины сохранить 32-битные операционные системы Microsoft Windows для настольных ПК

Вы которые с помощью 64 разрядных ОС. Server 2008 R2 был первым, кто поддерживал только 64-битные процессоры.

«Более новые» версии Windows даже не рассчитаны на 32-разрядную версию. Вы, возможно, не будете пользоваться ничем, но не должно быть никаких недостатков. Тем не менее, обновление в любом случае, поскольку Server 2008 R2 SP1 (который, я надеюсь, вы используете) будет EOL с 2020-01-14 .

Что касается 32-битного / 64-битного SQL Server: ваше понимание верно, если вам никогда не понадобится> ~ 3,75 ГБ ОЗУ (или> 2 ГБ на процесс), вы можете без проблем использовать 32-битную версию. Но для более новых версий не нужно устанавливать 32-битную версию, поскольку Microsoft перешла только на 64-битную версию.


6
В OP упоминается «2 ГБ в часы пиковой нагрузки», поэтому вполне возможно, что SQL Server захочет использовать более 2 ГБ, но это невозможно из-за ограничения 32-разрядного процесса.
MonkeyZeus

Может быть, я действительно не знаю, использует ли MS SQL Server 2008 несколько процессов для разных задач / экземпляров / баз данных / и т. Д.
Lenniey

11

Как уже отмечалось, вы уже используете 64-битную ОС. Существует два преимущества перехода на 64-разрядную версию SQL Server и один недостаток.

Единственным недостатком является то, что 64-разрядная версия SQL Server будет использовать 64-разрядные указатели. Это означает, что указатели будут занимать вдвое больше памяти, потреблять вдвое больше пропускной способности памяти и так далее. Это, вероятно, довольно незначительно, но это недостаток. Это частично компенсируется тем фактом, что переключение на 64-битное приложение позволит вам снизить накладные расходы уровня совместимости, которые 32-битные приложения должны использовать для доступа к функциям 64-битной ОС.

Основным преимуществом является то, что со временем были сделаны многочисленные существенные улучшения в наборе команд ЦП. Некоторые из них были сделаны вместе с переходом на 64-битные, а некоторые были сделаны ранее.

Но даже для тех, что были сделаны ранее, 32-битная сборка должна обрабатывать процессоры, которые не имеют этих функций, и избегать проблем с обнаружением и переключением между несколькими экземплярами, просто не использует их даже там, где они присутствуют. Например, 64-разрядные процессоры должны иметь SSE2, а 32-разрядные - нет. Таким образом, большинство 32-битных кодов просто не проверяют и не предполагают SSE2. 64-битный код гарантированно присутствует инструкции SSE2 и будет использовать его, если это лучший вариант.

Самый большой - это увеличение числа именованных регистров общего назначения с 8 до 16. Количество 128-битных регистров XMM также удвоилось, с 8 до 16.

Кроме того, 64-разрядный процесс может использовать большие объемы виртуальной памяти. Это особенно важно для процессов, которые обращаются к большим объемам структурированных данных на диске. И, конечно же, они могут использовать 64-разрядные целочисленные операции, которые имеют тенденцию повышать производительность шифрования, сжатия и даже некоторых операций файловой системы на больших файловых системах.


Действительно ли инструкции AVX и co оказывают заметное влияние на производительность SQL Server? Я бы предположил (но я никогда не тестировал и не проверял это), что это будет в основном подсистема ввода-вывода, от которой он зависит.
Во

Некоторые современные 32-битный код делает предположим , SSE2, особенно при работе на операционной системе , которая поддерживает только процессоры нового достаточно , чтобы иметь SSE2 (наряду с некоторыми другими необходимыми функциями). Я предполагаю, что Microsoft компилирует свои вещи с помощью MSVC, который имеет /arch:SSE2опцию для 32-битного кода, эквивалентного gcc / clang / ICC -msse2. Я предполагаю, что в SQL нет большого количества векторизованных циклов SIMD, но хорошо копировать небольшие структуры с 16-байтовыми загрузками / хранилищами SIMD.
Питер Кордес

Одним из наиболее важных изменений в x86-64 является относительная к ПК адресация для эффективного позиционно-независимого кода. 32-битные библиотеки PIC обычно имеют замедление ~ 10% или ~ 15% (IIRC) по сравнению с 32-битными не PIC. Большое количество целочисленных регистров тоже очень помогает. Одно большое преимущество в 64-битной среде - более приятное соглашение о вызовах, но в Windows (в отличие от Linux) 32-битный код __fastcallпередает аргументы в регистрах для многих функций. Соглашение о 32-битном вызове в Linux чисто в стеке, так что это довольно дерьмо для небольших функций, которые не встроены.
Питер Кордес

Если векторизация действительно имеет большое значение для производительности вместо того, чтобы предполагать / требовать какого-то определенного уровня поддержки, код, вероятно, проверяет новейшую версию SSE / AVX, которую поддерживает ЦП, и вызывает соответствующую реализацию, чтобы получить максимальную скорость от любой системы, в которой он работает. на.
Дэн возится от Firelight

@DanNeely Это предполагает, что тот, кто сделал сборку, приложил усилия для повышения производительности 32-битной версии. По крайней мере, по моему опыту, они часто предполагают, что люди, которые заботятся о производительности, будут использовать 64-битную сборку.
Дэвид Шварц

6

Принципиально: да. Предполагая, что вы никогда не будете делать обновления, которые будут только 4-битными - не уверен, что есть даже 32-битный SQL Server, более поздний, чем 2008.

Проблемы с вашим вопросом: «64-битные версии разрешают доступ к более чем 4 ГБ ОЗУ», - сделайте это 3 ГБ;) не 4. 1 ГБ всегда зарезервировано.


Если мы придирчивы, почему бы не быть правы и упомянуть, что 32-битная программа может легко получить доступ к сотням ГБ ОЗУ? ;) Только виртуальное адресное пространство ограничено.
Voo

3
@ Voo: SQL Server - одна из немногих программ, которая знает как.
Джошудсон

6

Потенциальная проблема: для библиотек DLL пользовательских функций CLR потребуются их 64-битные версии.

Если вы используете библиотеку пользовательских функций CLR , она станет битовой несовместимой. 32-битные библиотеки DLL не могут быть использованы в 64-битном программном обеспечении и наоборот. Если вы не можете получить 64-битную версию какой-либо библиотеки UDF, которую вы используете, вы потеряете это конкретное расширение.

По сути, это та же проблема, что и при обновлении любого 32-разрядного программного обеспечения с его надстройками до 64-разрядной версии. Вам также необходимо переключить все надстройки на их 64-битные версии. Как правило, это легко, но проблема прекращается, когда замены не доступны.


3

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

Здесь уже есть несколько технических ответов, но не слишком технически, и в зависимости от вашего приложения вы должны увидеть повышение производительности.

Основные части:

Адресация большой памяти: 64-битная архитектура обеспечивает больший объем памяти, адресуемой напрямую. SQL Server 2005 (64-разрядная версия) не ограничен объемом памяти в 4 ГБ для 32-разрядных систем. Следовательно, больше памяти доступно для выполнения сложных запросов и поддержки основных операций с базой данных. Эта большая вычислительная мощность уменьшает количество задержек ввода / вывода за счет использования большего объема памяти, чем в традиционных 32-разрядных системах.

Улучшенный параллелизм: 64-битная архитектура обеспечивает расширенный параллелизм и многопоточность. Усовершенствования параллельной обработки и архитектуры шин позволяют 64-разрядным платформам поддерживать большее количество процессоров (до 64), обеспечивая при этом почти линейную масштабируемость для каждого дополнительного процессора. При большем количестве процессоров SQL Server может поддерживать больше процессов, приложений и пользователей в одной системе.

https://teratrax.com/sql-server-64-bit/

Наиболее впечатляющие результаты, которые я увидел при переходе с 32-разрядного на 64-разрядный SQL Server (это был SQL Server 2005), показали увеличение скорости на 40% в основном приложении клиента. Все, что мы сделали, это установили 64-битный SQL Server, все остальное было таким же! Это было значительное повышение производительности в реальном мире.


-2

Вы можете добиться лучшей производительности многозадачности, особенно с программами, в которых встроена многопоточность. Более того, вы можете установить больше оперативной памяти с 64-битной ОС. Но делайте это только в том случае, если процессор поддерживает 64-битные инструкции.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.