Предположим, что у меня есть 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
Благодарность
источник
Как уже отмечалось, вы уже используете 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-разрядные целочисленные операции, которые имеют тенденцию повышать производительность шифрования, сжатия и даже некоторых операций файловой системы на больших файловых системах.
источник
/arch:SSE2
опцию для 32-битного кода, эквивалентного gcc / clang / ICC-msse2
. Я предполагаю, что в SQL нет большого количества векторизованных циклов SIMD, но хорошо копировать небольшие структуры с 16-байтовыми загрузками / хранилищами SIMD.__fastcall
передает аргументы в регистрах для многих функций. Соглашение о 32-битном вызове в Linux чисто в стеке, так что это довольно дерьмо для небольших функций, которые не встроены.Принципиально: да. Предполагая, что вы никогда не будете делать обновления, которые будут только 4-битными - не уверен, что есть даже 32-битный SQL Server, более поздний, чем 2008.
Проблемы с вашим вопросом: «64-битные версии разрешают доступ к более чем 4 ГБ ОЗУ», - сделайте это 3 ГБ;) не 4. 1 ГБ всегда зарезервировано.
источник
Потенциальная проблема: для библиотек DLL пользовательских функций CLR потребуются их 64-битные версии.
Если вы используете библиотеку пользовательских функций CLR , она станет битовой несовместимой. 32-битные библиотеки DLL не могут быть использованы в 64-битном программном обеспечении и наоборот. Если вы не можете получить 64-битную версию какой-либо библиотеки UDF, которую вы используете, вы потеряете это конкретное расширение.
По сути, это та же проблема, что и при обновлении любого 32-разрядного программного обеспечения с его надстройками до 64-разрядной версии. Вам также необходимо переключить все надстройки на их 64-битные версии. Как правило, это легко, но проблема прекращается, когда замены не доступны.
источник
Производительность!
Здесь уже есть несколько технических ответов, но не слишком технически, и в зависимости от вашего приложения вы должны увидеть повышение производительности.
Основные части:
https://teratrax.com/sql-server-64-bit/
Наиболее впечатляющие результаты, которые я увидел при переходе с 32-разрядного на 64-разрядный SQL Server (это был SQL Server 2005), показали увеличение скорости на 40% в основном приложении клиента. Все, что мы сделали, это установили 64-битный SQL Server, все остальное было таким же! Это было значительное повышение производительности в реальном мире.
источник
Вы можете добиться лучшей производительности многозадачности, особенно с программами, в которых встроена многопоточность. Более того, вы можете установить больше оперативной памяти с 64-битной ОС. Но делайте это только в том случае, если процессор поддерживает 64-битные инструкции.
источник