Чи слід встановлювати 32-бітну базу даних або 64-бітну базу даних?


16

(Я багато читав про 64-бітну порівняно з 32-бітною ОС / Програми, але це питання стосується баз даних.)

Я намагаюся зрозуміти плюси і мінуси 32-бітних проти 64-бітних баз даних, а саме, при яких умовах починає мати сенс використовувати 64-бітні установки.

Мене цікавлять такі системи баз даних: SQL Server 2008, MySQL та PostgreSQL 9.0.

Я читав, що версії PostgreSQL до 9.0 поставляються лише в 32-розрядному для Windows, і ця стаття про запуск 32-бітної PostgreSQL в 64-розрядної Windows очищує деяку мій плутанину, але я шукаю додаткову інформацію.

Коли я отримав би перевагу від використання 64-бітних баз даних (тобто розмір бази даних / простір диска, наявна системна пам'ять, типи сервірів даних, які, як відомо, користуються нею, який двигун бази даних використовується тощо)?

Відповіді:


20

за яких умов починає мати сенс використовувати 64-бітні установки.

При всьому, крім того, що ідіот. Вибачте - що б добре було встановити 32-бітну базу даних на 64-бітний сервер? І - уявіть - SERVER 2008R2 доступний ТІЛЬКИ у 64 бітах.

Сьогодні - жодного сценарію, де немає сенсу встановити 32-бітну версію SQL Server, якщо є можливість.

Бази даних в цьому специфічні - оскільки вони хочуть використовувати багато пам'яті як кеш при необхідності. Набагато більше, ніж мізерні 2gb / 3gb 32-бітний процес може дати їм. PAE - не те саме. Навіть ігноруючи обмеження, пам’ять PAE не дорівнює реальній пам'яті для SQL Server´ (вона використовується лише для ОДНОЇ речі - кешування сторінок db).

32-бітна ОС - знаходиться на одному рівні. В сучасному обладнанні немає сенсу встановлювати 32-бітну ОС.


4
+1 Амін Брат !!
DaniSQL

6
Що стосується 32-бітних ОС та додатків, є деякі незначні переваги, такі як менший розмір пам’яті.
JohnB

@TomTom: SQL Server 2008 R2 доступний у 32-розрядному режимі (злегка прокрутіть униз) msdn.microsoft.com/en-us/library/ms143506.aspx
JohnB

1
Так, менший слід. САДІЛЬНО, особливо для баз даних, що не має значення. База даних - це не слово. Він стосується - у більшості встановлень - ЛОТІВ даних, тому доступ до ЛОТИ ОЗУ має сенс.
TomTom

1
... Багато оперативної пам'яті, яка перевищує 4 Гб? Ви знаєте, скільки серверів SQL не забезпечують це для всього багатообробленого сервера? Я не стверджую, що погана ідея мати 64-бітну ОС та SQL-сервер, але я скажу, що існує маса конфігурацій, де це не має значення / взагалі /.
Еван Керролл

6

PostgreSQL виграє від 64-бітної збірки двома основними способами. По-перше, типи даних, які можуть вміщуватися в 64-бітні (переважно великі цілі числа та часові позначки), можуть бути більш ефективно передані навколо безпосередньо в регістри, а не за допомогою покажчиків. По-друге, можна виділити більше пам’яті для виділеного буфера кешу бази даних. Точка зменшення віддачі від цього налаштованого (shared_buffers) зазвичай становить близько 8 ГБ, але в 32-бітній системі вона буде обмежена <2 Гб.

Однак якщо ви працюєте в Windows, PostgreSQL не обробляє спільну пам'ять так ефективно, як на платформах UNIX-ish. Точка зменшення повернення зазвичай закінчується <= 512 Мб виділеної пам'яті для бази даних, незалежно від того, чи маєте ви 32-бітну або 64-бітну збірку PostgreSQL. Вам краще буде залишити решту для кешу операційної системи, а не присвятити її базі даних. Відповідно, насправді не так вже багато приріст продуктивності від 32 до 64 біт з PostgreSQL в Windows; основна настройка, яка, як правило, виграє від наявності більшої кількості оперативної пам’яті, фактично не використовує її дуже добре.


1
Зауважте, що деякі люди повідомили, що бачать користь від 64-розрядного Windows PostgreSQL, встановивши дуже великі значення для work_mem, що дозволяє серверу сортувати більшу кількість даних у пам'яті.
Грег Сміт

4

Я запускаю MySQL на 64-бітній архітектурі, тому що я хочу, щоб вони найбільш ефективно використовували більше 4 Гб пам'яті на потік. Взагалі це стосується всіх баз даних.

Однією з головних відмінностей між архітектурами є збільшена адресація, що дозволяє більш обробляти пам'ять. Незважаючи на те, що розширення фізичної адреси Intel дозволяє адресувати більше 4 Гб, воно все ще обмежене 4 ГБ на потік. PAE дозволяє до 64 ГБ максимум.

У Вікіпедії є порівняння 64-бітного та 32-бітного, яке включає більш детальну інформацію про низький рівень.


2
Це за процес, а не за нитку. Нитки ділять однаковий простір пам'яті.
Еван Керролл

3

Зауважте, що якщо у вас є лише 64-розрядні бібліотеки клієнтів MySQL, ви отримаєте помилки "неправильної архітектури" при спробі з'єднати їх разом з 32-бітовим кодом. Це сталося зі мною, коли я намагався встановити прив'язки python ("pip install MySQL-python").

Можна використовувати 64-розрядний сервер MySQL з 32-бітним клієнтом MySQL, і прикро, що сервер спільноти MySQL не включає в себе і 32-бітну, і 64-бітну версію клієнтської бібліотеки. Правильне рішення встановити додаткові 32-розрядні клієнтські бібліотеки MySQL. Однак, оскільки найпростішим способом встановлення MySQL є видалене завантаження бінарного сервера MySQL і, враховуючи, що 64-розрядний інсталятор постачається лише з 64-розрядними клієнтськими бібліотеками, шлях найменшого опору - просто завантажити 32-бітний інсталятор .

(все це, якщо припустити, що ви завжди будете використовувати дуже малі набори даних)


2

Для багатьох речей 32-бітний виграш (доки ви можете жити з адресним простором), але БД - це одне, де навіть невеликі бази даних можуть отримати справжній приріст, що працює в 64 бітах. Зрозуміло, я не знаю нічого про MS SQL-сервер, але я бачив орієнтири (наприклад, на Sun 5 (старший 64-бітний робочий стіл Sun), 32 біт, як правило, трохи швидше, за винятком mysql, який становив 30 % швидше в 64 бітах.


2
"Для стількох речей 32 біт - це виграш" - Приклади ??
Кріс С

1
Єдиний випадок, коли я можу уявити, де 32-бітна база даних буде швидшою, ніж 64-бітна, - це якщо код не був складений з відповідними оптимізаціями. Що стосується бізнес-програмного забезпечення, то, можливо, найкраще скористатися базами даних, що пропонують 64 біти.
Джон Гарденєр

1
Ну, велика кількість орієнтирів в епоху переходу RISC 32> 64, і, принаймні, на початку x86 показали мало, якщо якась користь для 64-бітових, якщо вам не потрібен адресний простір і db. Я теж не хотів у це вірити, і я ставлю на облік x86 сьогодні, 64 біт завжди швидший (тільки тому, що ви уникаєте цього набору інструкцій i32). Anandtech.com має орієнтири, поки очні яблука не кровоточать. Пам'ятайте: Покажіть мені дані.
Рональд Поттоль

1
За інших рівних причин, головний недолік, про який я можу подумати для 64-бітових, - це більш великі вказівники (64-бітні), які займуть більше місця в кеш-пам'яті, ніж еквівалентна 32-бітна динамічна структура даних (тобто пов'язані списки, дерева ...). Це зменшує кількість доступної кеш-пам’яті. Цей симптом зберігається і в основній пам'яті. Мій 64-розрядний сервер Debian з лише 64 Мб оперативної пам’яті використовує більше свопів і запускає менше додатків, ніж аналогічний 32-розрядний сервер установки.
sybreon

3
@sybreon: Я думаю, у мене є старий 128 Мб, якщо вам це потрібно!
JohnB
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.