(Я много читал о 64-битных и 32-битных ОС / приложениях, но этот вопрос конкретно касается баз данных.)
Я пытаюсь понять плюсы и минусы 32-битных и 64-битных баз данных, а именно, при каких условиях имеет смысл использовать 64-битные установки.
Системы баз данных, которые меня интересуют: SQL Server 2008, MySQL и PostgreSQL 9.0.
Я читал, что версии PostgreSQL до 9.0 доступны только в 32-битной версии для Windows, и эта статья о запуске 32-битной версии PostgreSQL в 64-битной Windows устраняет некоторые мои недоразумения, но мне нужна дополнительная информация.
Когда я получу выгоду от использования 64-битных баз данных (т. Е. Размер базы данных / дисковое пространство, доступная системная память, типы данных sernarios, которые, как известно, выиграют от этого, какой механизм базы данных используется и т. Д.)?
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 бит.
источник