Переваги оновлення 32-бітного Windows Server та SQL Server до 64 біт?


13

Припустимо, у мене є 32-бітове вікно для сервера Windows, яке оперує декількома серверними програмами разом із SQL сервером, з використанням оперативної пам’яті близько 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 розрядних ОС. Сервер 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
ОП згадує "2 Гб у пікові часи", тому цілком можливо, що SQL Server хоче використовувати більше 2 ГБ, але це не може через 32-бітний ліміт процесу.
MonkeyZeus

Можливо, я справді не знаю, чи MS SQL Server 2008 використовує кілька процесів для різних завдань / екземплярів / баз даних / тощо
Леннієв

11

Як уже зазначалося, ви вже використовуєте 64-бітну ОС. Є дві переваги переходу на 64-бітну версію SQL Server та один недолік.

Єдиним недоліком є ​​те, що 64-бітна версія SQL Server використовує 64-бітні покажчики. Це означає, що покажчики будуть займати вдвічі більше пам’яті, споживають удвічі більше пропускної здатності пам’яті тощо. Це, ймовірно, досить незначно, але це недолік. Частково це компенсується тим, що перехід на 64-бітну програму дозволить вам викопати накладні шари сумісності, які 32-бітні програми повинні використовувати для доступу до 64-бітних функцій ОС.

Головною перевагою є те, що в часі в інструкціях CPU було внесено чимало значних удосконалень. Деякі з них були зроблені разом зі зміною на 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 Гб завжди зарезервовано.


Якщо ми цей нерозумний, чому б не бути правильним і згадати, що 32-бітна програма може легко отримати доступ до сотень ГБ оперативної пам’яті? ;) Обмежений лише віртуальний адресний простір.
Во

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

6

Потенційна проблема: бібліотекам DLL CLR-заданих користувачем функцій (UDF) буде потрібна їх 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.