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