Должен ли я установить 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-битных баз данных (т. Е. Размер базы данных / дисковое пространство, доступная системная память, типы данных sernarios, которые, как известно, выиграют от этого, какой механизм базы данных используется и т. Д.)?

Johnb
источник

Ответы:

20

при каких условиях это начинает иметь смысл использовать 64-битные установки.

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

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

Базы данных специфичны в этом - поскольку они хотят использовать много памяти в качестве кеша, если это необходимо. Намного больше, чем скудные 2 ГБ / 3 ГБ 32-битный процесс может дать им. PAE не то же самое. Даже игнорируя ограничения, память PAE не равна реальной памяти для SQL Server´ (она используется только для ОДНОЙ вещи - кэширование страниц БД).

32-х битная ОС - на одном уровне. на современном оборудовании вообще не имеет смысла устанавливать 32-битную ОС.

TomTom
источник
4
+1 Аминь Брат !!
DaniSQL
6
Что касается 32-разрядных ОС и приложений, то здесь есть некоторые незначительные преимущества, такие как меньший объем памяти.
JohnB
@TomTom: SQL Server 2008 R2 доступен в 32-разрядной версии
JohnB
1
Да, меньшая площадь SADLY особенно для баз данных, которые не имеют значения. База данных не слово. Он имеет дело с - при большинстве установок - с большим количеством данных, поэтому доступ к большому количеству оперативной памяти имеет смысл.
TomTom
1
... много оперативной памяти более 4 ГБ в процессе? Вы знаете, сколько SQL-серверов не предоставляют этого для всего многопроцессорного сервера? Я не утверждаю, что плохая идея иметь 64-битную ОС и SQL-сервер, но я скажу, что есть множество конфигураций, где это не имеет значения / вообще /.
Эван Кэрролл
6

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

Тем не менее, если вы работаете в Windows, PostgreSQL не обрабатывает разделяемую память так эффективно, как на платформах UNIX. Точка уменьшения отдачи обычно заканчивается выделением <= 512 МБ выделенной памяти для базы данных, независимо от того, используете ли вы 32-битную или 64-битную сборку PostgreSQL. Лучше оставить остаток для кэша операционной системы, а не выделять его для базы данных. Соответственно, при использовании PostgreSQL для Windows действительно не так много прироста производительности от 32 до 64 бит; основная настройка, которая обычно выигрывает от наличия большего количества оперативной памяти, на самом деле не использует ее очень хорошо.

Грег Смит
источник
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 Community Server не включает как 32-битные, так и 64-битные версии клиентских библиотек. Правильное решение установить дополнительные 32-разрядные клиентские библиотеки MySQL. Однако, поскольку самым простым способом установки MySQL, по-видимому, является бинарная загрузка MySQL Community Server , и, учитывая, что 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 do. Я тоже не хотел в это верить, и я готов поспорить, что для x86 сегодня 64-битная версия всегда быстрее (только потому, что вы избегаете этого набора команд i32). Anandtech.com имеет тесты, пока ваши глазные яблоки не кровоточат. Помните: ПОКАЖИ МНЕ ДАННЫЕ.
Рональд Поттол
1
При прочих равных условиях основной недостаток, который я могу придумать для 64-разрядных, связан с большими указателями (64-разрядными), которые занимают больше места в кэш-памяти, чем эквивалентная 32-разрядная динамическая структура данных (т.е. связанные списки, деревья). ...). Это уменьшает объем доступной кеш-памяти. Этот симптом также сохраняется в основной памяти. Мой 64-битный сервер Debian с только 64 МБ ОЗУ использует больше подкачки и запускает меньше приложений, чем 32-битный сервер с аналогичной настройкой.
sybreon
3
@Sybreon: Я думаю, что у меня есть старые 128 МБ, если вам это нужно!
JohnB