Должен ли я установить 32-битную базу данных или 64-битную базу данных?
(Я много читал о 64-битных и 32-битных ОС / приложениях, но этот вопрос конкретно касается баз данных.)
Я пытаюсь понять плюсы и минусы 32-битных и 64-битных баз данных, а именно, при каких условиях имеет смысл использовать 64-битные установки.
Системы баз данных, которые меня интересуют: SQL Server 2008, MySQL и PostgreSQL 9.0.
Я читал, что версии PostgreSQL до 9.0 доступны только в 32-битной версии для Windows, и эта статья о запуске 32-битной версии PostgreSQL в 64-битной Windows устраняет некоторые мои недоразумения, но мне нужна дополнительная информация.
Когда я получу выгоду от использования 64-битных баз данных (т. Е. Размер базы данных / дисковое пространство, доступная системная память, типы данных sernarios, которые, как известно, выиграют от этого, какой механизм базы данных используется и т. Д.)?
5 ответов
при каких условиях это начинает иметь смысл использовать 64-битные установки.
Под всем кроме идиотизма. Извините - что хорошего в установке 32-битной базы данных на 64-битном сервере? И, представьте себе, SERVER 2008R2 доступен ТОЛЬКО в 64-битной версии.
Сегодня нет сценария, в котором имеет смысл установить 32-битную версию SQL Server, если у нее есть такая возможность.
Базы данных специфичны в этом - так как они хотят использовать много памяти в качестве кеша при необходимости. Намного больше, чем скудные 2 ГБ / 3 ГБ 32-битный процесс может дать им. PAE не то же самое. Даже игнорируя ограничения, память PAE не равна реальной памяти для SQL Server´(она используется только для ОДНОЙ вещи - кэширование страниц БД).
32-битная ОС - на одном уровне. на 32-битной ОС вообще не имеет смысла устанавливать современное оборудование.
PostgreSQL выигрывает от наличия 64-битной сборки двумя основными способами. Во-первых, типы данных, которые могут вписываться в 64-битные данные (в основном, большие целые числа и типы меток времени), могут более эффективно передаваться непосредственно в регистрах, а не с помощью указателей. Во-вторых, можно выделить больше памяти для выделенного буферного кеша базы данных. Точка уменьшения отдачи для этой настраиваемой переменной (shared_buffers) обычно составляет около 8 ГБ, но она будет ограничена значением <2 ГБ в 32-разрядной системе.
Тем не менее, если вы работаете в Windows, PostgreSQL не обрабатывает разделяемую память так эффективно, как на платформах UNIX. Точка уменьшения отдачи обычно заканчивается выделением <=512 МБ выделенной памяти для базы данных, независимо от того, используете ли вы 32-битную или 64-битную сборку PostgreSQL. Лучше оставить остаток для кэша операционной системы, а не выделять его для базы данных. Соответственно, при использовании PostgreSQL для Windows действительно не так много прироста производительности от 32 до 64 бит; основная настройка, которая обычно выигрывает от наличия большего количества оперативной памяти, на самом деле не использует ее очень хорошо.
Я запускаю MySQL на 64-битной архитектуре, потому что хочу, чтобы они наиболее эффективно использовали более 4 ГБ памяти на поток. Вообще говоря, это должно относиться ко всем базам данных.
Одним из основных различий между архитектурами является повышенная адресация, позволяющая повысить эффективность обработки памяти. Хотя расширение физических адресов Intel позволяет адресовать более 4 ГБ, оно по-прежнему ограничено 4 ГБ на поток. PAE позволяет до 64 ГБ максимум.
В Википедии есть сравнение 64-битного и 32-битного, которое включает в себя более низкий уровень детализации.
Обратите внимание, что если у вас есть только 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-разрядный установщик.,
(все это при условии, что вы всегда будете использовать очень маленькие наборы данных)
Для многих вещей 32-битная система - это выигрыш (если вы можете жить с адресным пространством), но БД - это то, что даже небольшие базы данных могут получить реальное ускорение в 64-битной среде. Конечно, я ничего не знаю о сервере MS SQL, но я видел тесты (например, на Sun 5 (более старый 64-битный рабочий стол Sun), 32-битная версия была немного быстрее, за исключением mysql, который был 30% быстрее в 64 бит.