Показать сообщение отдельно
Старый 18.02.2008, 12:10 Вверх   #3
Admin
 
Аватар для RAMZA
RAMZA вне форума
Доп. информация
Лампочка

Если же речь идет о поочередном запуске двух разных версий сервера (или любых версий InterBase и Firebird), то например на Windows это делается очень просто:
устанавливаются оба сервера, по очереди. В момент установки нужно, чтобы "конкурирующий" сервер не был запущен ни как приложение, ни как сервис
перед стартом нужного сервера необходимо перейти в соответствующий каталог bin, и в командной строке (cmd) вызвать instreg <installpath> где <installpath> - путь к корню установки данного сервера, например D:\Firebird.
Также перед обращением к нужному серверу необходимо убедиться, что в path находится gds32.dll от запускаемого сервера. В частности IBExpert дает возможность для каждого алиаса указать свой файл gds32.dll. Использовать "чужой" gds32.dll можно, но по ходу работы могут возникать проблемы несовместимости (например с доступом через локальный протокол. коннект через localhost избавит как минимум от этой проблемы).

То есть, если на данном компьютере ведется разработка попеременно для одного и другого сервера, то лучше серверы НЕ запускать как сервис, а запускать как приложение (ibserver.exe -a, fbserver.exe -a). Создайте 2 bat или cmd файла, в которых пропишите вызовы instreg и запуск сервера как приложения. Помните о том, что обращение сервером к "чужой" БД может также вызвать проблемы (см. выше). По крайней мере вы будете видеть по иконке в таскбаре, какой именно сервер в данный момент работает на вашей машине. И не забудьте в конфигурации обоих серверов прописать одинаковые параметры, если вы сравниваете серверы по производительности или другим характеристикам.
после установки Firebird перестали работать кодировки

A: Скорее всего вы поставили не все файлы Firebird - дело в том, что в FB в районе билда 400 нашли ошибку, которая не позволяла в бесплатных версиях Interbase 6 и Firebird создавать собственные кодировки при помощи CollateKit. Исправление этой ошибки привело к несовместимости нового ibserver.exe со старыми gdsintl. Поэтому при установке новых версий Firebird (или файлов из архивов snapshot) нужно обновлять все файлы dll, exe (или соответствующие для unix), а не только ibserver.exe. Это же правило относится и к Yaffil.
после установки Yaffil стал падать сервер или udf

Yaffil начиная со сборки 867 компилируется MSVC7. Это означает, что теперь используется сервисная библиотека msvcr7.dll, а не msvcrt.dll как раньше (msvc6). В этой библиотеке есть функция malloc, отвечающая за аллокирование памяти.

Таким образом, если ваши udf содержат фунции с free_it, которые напрямую аллокируют память вызовом функции из msvcrt, или наоборот, делают это правильно через ib_util.dll но от сервера IB или FB, в результате получается что ваша udf использует один менеджер памяти, а сервер - другой. Что и приводит ко всяким проблемам с работоспособностью сервера.

Убедитесь, что ваша функция использует вызов не malloc, а ib_util_malloc, и что ib_util.dll имеет версию Yaffil не ниже 865 сборки (а также что на компьютере нет других ib_util.dll, которые могут быть найдены операционной системой ранее правильной ib_util.dll).
Не могу подсоединиться к серверу

Начнем с того, что надо убедиться, что сервер запущен и работает. При этом на сервере не должно быть FireWall-ов или прокси, которые не дают ему слушать порт 3050 по tcp/ip (или firewall/прокси надо настроить, чтобы не мешали Interbase). По WinXP SP2 (Firewall блокирует порт 3050) см. тут.

База данных должна находиться на сервере или компьютере, где установлен InterBase или Firebird, обычный или Desktop, Embedded, Personal и т.п.), и не должна быть "расшарена". InterBase, Firebird и Yaffil являются СУБД с клиент-серверным доступом к БД, то есть к файлу базы данных обращается только сервер, и ни в коем случае не клиентская часть или приложение (даже в случае embedded).

После этого надо убедиться, что если у вас в сети нет серверов Netware, то ни один клиент или сервер не имеет установленной поддержки протоколов IPX/SPX (NWLink и т.п). Этот протокол только мешает работе.

Далее, проверьте видимость сервера с клиента простым ping. Однако, не всегда если ping работает, это означает что с настройками сети все в порядке.

В общем, если операционные системы установлены корректно, и сеть правильно настроена, то InterBase и Firebird должны тоже работать нормально. По поводу настройки сети обращайтесь к документации на используемые операционные системы.

Если используется локальный коннект к БД, то причиной невозможности подсоединения к серверу может быть: некорректная gds32.dll (от другого сервера), или конкретная gds32.dll не поддерживает локальный коннект вообще (см. далее пункт "Ошибка unavailable database"); сервер запущен как сервис. В этих случаях нужно просто использовать протокол доступа tcp, например localhost:c:\dir\data.gdb. Путь к базе - диск и каталог - всегда являются "локальными" для сервера. То есть, диск c:, d: и т.п. - это логический диск, существующий на том же компьютере, где установлен InterBase или Firebird. Использовать mapped drive или subst недопустимо.

На Windows с IB можно работать по NetBeui и по TCP. На Unix - только по TCP. Лучше всего netbeui не использовать, т.к. этот протокол требует выдачи прав на доступ к каталогам и файлам баз данных на сервере, чего делать категорически не рекомендуется.

Часто путают протоколы коннекта -
Netbeui - \\srv\c:\dir\data.gdb

причем это вовсе не означает, что каталог c:\dir на сервере srv должен быть "расшарен".
TCP/IP - srv:c:\dir\data.gdb

(разделители \ и / можно использовать как угодно и вперемешку. сервер сам разберется).

Для всех версий InterBase (кроме Yaffil и Firebird) есть правило - если поддержка протокола tcp/ip в операционной системе установлена после установки сервера или клиента IB, то в файл services (без расширения) надо добавить строку
gds_db 3050/tcp

и после нее сделать перевод строки (пустую строку).

После чего, если это сделано на сервере, сервер IB надо перезапустить.

p.s. если речь идет о "локальном коннекте", и об ошибке "Unavailable database" - у вас или клиентская часть от другого сервера, или сервер работает как сервис, и поэтому не обязан поддерживать локальный коннект. Используйте доступ по протоколу tcp.
Не работает или перестал работать Classic (CS)

Скорее всего речь идет о Windows. Причем, если Classic перестал работать или не работает, то SuperServer может работать.

Причиной проблемы является установка на сервере программы, которая перехватывает соединения tcp, и "не дает" главному процессу Classic запускать новые процессы перенаправляя на них новые коннекты пользователей. К такому ПО относятся как серверные так и клиентские части разнообразных proxy - WinProxy, MS Proxy, WinGate и т.п. -, некоторые антивирусы (совершенно однозначно - NOD32), или другое подобное ПО.

В случае появления проблемы необходимо указать такому ПО в его настройках, чтобы fb_inet_server.exe (или ibremote.exe для Yaffil) не "обрабатывался".
Ошибка unavailable database

Вы пытаетесь подсоединиться к БД через "локальный протокол" (см. пункт выше) - c:\dir\data.gdb. Вместо этого нужно использовать сетевой протокол, например localhost:c:\dir\data.gdb. Причиной ошибки может быть:
Вы пытаетесь использовать локальный протокол (см. выше) на Windows Vista. Работать через локальный протокол под этой ОС будут только
InterBase 2007 SP 1 и выше
Firebird 1.5/2.x с установленным параметром IpcName=Global\FIREBIRD в firebird.conf
причем, если запуск IB/FB идет как приложения, а не как сервиса, то также наверняка потребуется запуск не из обычной консоли, а из консоли с административными правами.
клиентская часть (gds32.dll, fbclient.dll) не соответствует версии сервера
локальный протокол может быть несовместим даже между минорными (Firebird 1.5.0, 1.5.1, InterBase 7.0, 7.5) версиями одного и того же сервера
клиентская часть не поддерживает локальный протокол вообще
такое бывает. Например, в Firebird 1.5.1 for Windows, Classic.
сервер запущен как сервис
в этом случае локальный протокол, реализуемый через shared memory (есть еще реализация xnet) просто "не виден" между клиентом и сервером. Иногда такое работает, но в случае если и клиент запускается из под сервиса (IIS и т.п.) - не работает точно. Также локальный протокол не работает если на Win2003 или WinXP запущены службы Terminal Services.
Локальный протокол совершенно точно не работает под Windows Vista, если соединение идет от приложения к IB/FB как к сервису. Если IB/FB запущен как приложение, то локальный протокол работает, но примерно на 20% медленнее чем под Windows XP.
особенности конкретного логина или версии операционной системы
бывают случаи, когда локальный протокол не работает, даже если сервер запущен как приложение, и клиентская библиотека точно соответствует версии сервера. Это выглядит как "на одной машине работает, а на другой - нет".

Во всех случаях проблем с локальным протоколом рекомендуется проверить все вышеперечисленные варианты проблем, и если их не удалось устранить - использовать локальный сетевой протокол для соединения с БД (localhost:c:\dir\data.gdb).
Не берется база с расшаренного диска

И не должна. Файл базы данных должен находиться на том же компьютере, что и сервер IB/FB/YA. Причем строка подключения должна содержать диск и путь к базе данных в именах локальных для этого сервера дисков (c:, d:, e: и так далее).
Теоретически файл БД можно положить на другой компьютер, если организовать том Networking File System (чаще встречается на unix). Однако это может привести к нестабильной работе и безусловной порче данных в случае обрыва соединения между компьютером с БД и компьютером с IB/FB/YA. Кроме того, при связи например в 100 мегабит сервер будет очень медленно работать с БД (сравните скорость обмена данными по сети со скоростью доступа к IDE HDD).
Не удается сделать больше 10, 70, 150 подключений

Проверьте в настройках сервиса IB - должна стоять галочка в "Allow service to interact with Desktop". Если галочка установлена, но проблема остается, значит дело не в IB, а в настройках операционной системы или приложений, которые контролируют доступ по tcp/ip к серверу.
как найти сервер Interbase, Firebird, Yaffil в сети?

Никак. Собственно, вам это может понадобиться только если вы хакер.
Interbase во время работы "слушает" порт 3050, но например при заходе на этот порт телнетом никак себя не проявляет. Порт вместо 3050 может быть любым другим, если в services он указан иначе для gds_db
При отключении клиентов остаются коннекты на сервере
После некоторого времени отключаются клиенты

Сначала проверьте, нет ли на вашем сервере прокси или firewal. Если да - в первую очередь проверьте их настройки по отключению неактивных коннектов, если таковые настройки есть. Если proxy, firewall и т.п. на сервере нет (включая как серверную часть, так и клиентскую часть proxy, например), то можно прочитать статью

www.ibase.ru/devinfo/keepalive.htm

для Windows можно посмотреть и изменить настройки tcp:

http://support.microsoft.com/default.aspx?kbid=140325
http://support.microsoft.com/default.aspx?kbid=120642 (см. настройку KeepAliveTime)

Для Linux - то же самое, т.е. конфигурирование tcp.
Что такое UDF, и где их взять?

UDF - это пользовательские функции, находящиеся в разделяемых библиотеках (dll, so), которые можно использовать при выполнении запросов на сервере. Есть ряд библиотек готовых функций, в том числе с исходными текстами, а также можно писать UDF самостоятельно.

Если вы пишете UDF на Delphi, то портировать эти функции под Linux можно при помощи среды разработки Kylix. Функции на C/C++ можно скомпилировать любым подходящим компилятором (MSVC, Borland C++, GNU ...).

По написанию UDF есть хорошая статья, и масса примеров включая готовые библиотеки UDF. Используйте примеры или готовые библиотеки функций в качестве "болванок", если вам нужна своя функция.

Самые большие наборы функций - FreeUDFLib, RFunc.
не могу подключить UDF

A: На этот вопрос есть несколько ответов:
В IB 6 изменились правила подключения UDF - теперь подключаемые библиотеки должны лежать только в подкаталоге udf установленного сервера. Это сделано для обеспечения безопасности. Кроме того, в Firebird введен параметр ibconfig
EXTERNAL_FUNCTION_DIRECTORY
при помощи которого можно указать несколько дополнительных каталогов для хранения UDF.
Есть еще сообщения о том, что UDF, компилируемые Delphi 6 Update Pack 2 "не видны" сервером под WinNT 4.0. При этом якобы проблему можно устранить установкой SP6 на WinNT.
Нужно убедиться, что имя функции экспортируется из dll в точном соответствии с тем, которое указано в declare external function. На некоторых операционных системах могут быть проблемы с регистрочувствительностью экспортируемых из dll функций.
базовая библиотека (или другие) ib_udf.dll зависит от библиотеки ib_util.dll. Соответственно, зависимую библиотеку загружает не сервер, а именно оригинальная dll. Поэтому правила загрузки подчиняются правилам, действующим например для Windows для функции Win32 - LoadLibrary. А это значит что ib_udf.dll должна находиться в системном пути или в общем пути переменной PATH (для embedded допускается в текущем каталоге).
Как правильно аллокировать память для UDF с FREE_IT?

Нужно делать следующим образом - начиная с InterBase 5.0 в комплект сервера входит ib_util.dll содержащая функцию ib_util_malloc. Ее объявления для C и Pascal есть в каталоге include:
ib_util.h - extern void * ib_util_malloc (long);
ib_util.pas - function ib_util_malloc(l: integer): pointer; cdecl; external 'ib_util.dll';

Для аллокирования памяти и FREE_IT нужно использовать эту функцию. Поскольку сервер сам освобождает занятый участок памяти, функция для освобождения памяти в этой библиотеке не предусмотрена.

При этом ib_util.dll должна находиться в PATH или рядом с вашей dll UDF. Позаботьтесь о том, чтобы на сервере не было двух или более ib_util.dll от разных серверов. В противном случае возможна некорректная работа сервера, его падение или что еще хуже - повреждение базы данных.
Причиной такой несовместимости может быть то, что сервер (ibserver.exe, fbserver.exe и т.п.) для Windows компилируется определенной версией MSVC (5, 6, 7), использующей свою версию менеджера памяти. Соответственно, аллокировать в UDF память надо функцией этого же менеджера. На сегодняшний момент есть msvcrt.dll, msvcr60, msvcr70, msvcr71, поэтому игнорировать ib_util.dll и принудительно указывать malloc как функцию из msvcrt нельзя.

Использование ib_util является 100% переносимым, т.к. эта библиотека является стандартной для Interbase (всех версий выше 5.0), Firebird и Yaffil и поставляется под все платформы.

Если вы сами аллокируете/деаллокируете память внутри UDF (с FREE_IT или без), то можете для этих целей использовать любые функции, в том числе getmem/freemem в Delphi.
Как правильно объявлять функции UDF - stdcall или cdecl?

Правильно - cdecl, как на C так и на Pascal (Delphi). Например
function Add_A(var iSmall: SmallInt; var iLong: Integer): Integer; cdecl; export;
begin
Result := iSmall + iLong;
end;

В документации по InterBase вплоть до версии 7.0 ошибочно указана необходимость использования stdcall. Документация в этом плане исправлена только в InterBase 7.1.
что такое IBX?

A: IBX - это набор компонент для Delphi и C++Builder, позволяющий работать с серверами IB 4.x, 5.x, 6.x напрямую. Поддерживает диалекты 1-3 для IB 6. Содержит компоненты Services API IB6, позволяющие управлять серверами IB, их параметрами, делать удаленный backup/restore, проверять базы данных и др.
IBX "унаследован" от FreeIBComponents (FIBC), но кроме общих черт содержит массу design-time редакторов свойств, упрощающих выбор типов транзакций, параметров подсоединения, запросов и т.п.

Самое последнее обновление IBX x.08 находится на codecentral.borland.com, или здесь. Также можно взять исходные тексты IBX с sourceforge.net/projects/ibx, но обновляются они достаточно редко.

Services API IBX работает только с серверами архитектуры SuperServer. Services API в серверах архитектуры Classic поддерживается только в Yaffil Classic и Firebird 1.5.1 Classic.
Почему не обновляются данные?

Как правило это означает, что вы работаете с компонентами прямого доступа, и не настроили свойства компонента IBTransaction. Этот компонент по умолчанию не содержит параметров транзакции, а такие транзакции в InterBase API имеют уровень изолированности SNAPSHOT. Т.е. транзакция не может видеть чужих committed изменений. Вам нужно сделать двойной щелчок мышью на компоненте, и выбрать тип транзакции read committed.

Подробнее по транзакциям см. документ.
Как выполнять запросы параллельно в приложении?
Как работать с IB/FB из threads?

A: Начиная с IB 4.2 клиентская часть InterBase поддерживает параллельное выполнение операций в разных коннектах (соответственно, клиентские части Firebird и Yaffil обеспечивают ту же функциональность, ни больше ни меньше). Т.е. для того чтобы работать параллельно из приложения, надо в каждом thread приложения (там где это нужно) открыть свое соединение (TIBDatabase для IBX, для BDE см. пример BKQUERY в поставке Delphi и C++Builder).
Кроме того, желательно открытие коннекта (IBDatabase.Connected:=True) выполнять монопольно, т.е. в отсутствие других параллельно выполняющихся операций.

Пример работы с thread в IBX - ibx_mt.zip, ibxthreads.zip

Для параллельной работы существует еще одно требование - коннект к БД не должен быть локальным. При локальном коннекте (c:\dir\data.gdb, это часто используют при размещении приложений на сервере БД - web, midas и т.п.) невозможно подключение из сервисов (например IIS, Baikonur и т.п.), а если и возможно, то такие коннекты не будут работать параллельно - пока выполняется запрос в одном коннекте, все остальные коннекты будут "висеть". Поэтому коннект к БД у таких приложений должен быть localhost:c:\dir\data.gdb.
Будьте внимательны! В вышеуказанных примерах ошибочно используется подключение к БД через локальный коннект, что приведет к невозможности параллельной работы threads.

Также, при одновременном вызове функции подсоединения к БД (isc_attach_database) из разных threads может возникнуть ошибка. Открывайте БД "последовательно" (еще лучше isc_attach_database производить в главном thread).
где взять ODBC для 6.0?

A: ODBC-драйверы для 6.0 появляются как грибы после дождя. См. ссылки на ODBC в IB6.
русские буквы с InterClient

A: С разрешения Сергея Астахова, владельца страницы http://people.comita.spb.ru/users/se...schars.html#db, приводится часть раздела, описывающая работу с русскими буквами в InterClient:

InterBase (interbase.interclient.Driver)

Для этого драйвера работает параметр "charSet":

// Параметры соединения с базой
Properties connInfo = new Properties();

connInfo.put("user", username);
connInfo.put("password", password);
connInfo.put("charSet", "Cp1251");

// Устанавливаем соединение
Connection db = DriverManager.getConnection(dataurl, connInfo);

Однако не забудьте при создании БД и таблиц указать кодировку символов. Для русского языка можно использовать значения "UNICODE_FSS" или "WIN1251" (см. http://www.ibase.ru/devinfo/ibrusfaq.htm)
В версии 2.01 InterClient присутствует ошибка - классы ресурсов с сообщениями для русского языка там неправильно скомпилированы. Скорей всего разработчики просто забыли указать кодировку исходников при компиляции. Есть два пути исправления этой ошибки:
Использовать interclient-core.jar вместо interclient.jar. При этом русских ресурсов просто не будет, и автоматом подхватятся английские.
Перекомпилировать файлы в нормальный Unicode. Разбор class-файлов - дело неблагодарное, поэтому лучше воспользоваться JAD-ом. К сожалению JAD, если встречает символы из набора ISO-8859-1, выводит их в 8-ричной кодировке, так что воспользоваться стандартным перекодировщиком native2ascii не удастся - придётся написать свой (программа Decode). Если Вам не хочется заморачиваться с этими проблемами - можете просто взять готовый файл с ресурсами (пропатченый jar с драйвером - interclient.jar, отдельные классы ресурсов - interclient-rus.jar).

Но даже настроив JDBC-драйвер на нужную кодировку в некоторых случаях можно нарваться на неприятности. Например, при попытке использования новых замечательных скролируемых курсоров стандарта JDBC 2 в мосте JDBC-ODBC из JDK 1.3.x довольно быстро можно обнаружить, что русские буквы там просто не работают (метод updateString()).
поддерживает ли BDE третий диалект (IB 6 и выше)?

A: Да. Вот кусочек из readme.txt от Delphi 6 (туда входит BDE 5.2)

Для работы в диалекте 3 необходимо добавить в registry в ветке

HKEY_LOCAL_MACHINE\SOFTWARE\
Borland\Database Engine\Settings
\Drivers\Intrbase\Db Open\

строку (string) SQLDIALECT и установить ее значение в "3" (без кавычек).

Эта настройка действует только для вновь создаваемых алиасов BDE, т.е. существующие алиасы надо ПЕРЕСОЗДАТЬ.
Для работы с серверами 5.6 необходимо установить значение этого параметра в алиасе BDE в 1.

! Однако, даже такая настройка не даст полноценной работы из BDE с базами данных в третьем диалекте. Типы DATE/TIME/TIMESTAMP будут обрабатываться нормально, однако например тип NUMERIC(18,2), хранимый во внутреннем представлении INT64, будет восприниматься как неизвестный тип столбца, т.е. TBytesField. Понятно, что с числами через такой тип TField работать невозможно. Поэтому, для работы в третьем диалекте вам придется использовать dbExpress, IBX, FIBPlus, IBObjects и другие наборы компонент.
как указать роль (ROLE) в BDE?
ROLE поддерживаются начиная с BDE 5.01, однако был момент когда существовало несколько версий 5.01 (см. архив). Поэтому лучше всего использовать версии BDE выше, чем 5.01 (версию можно узнать посмотрев properties/version файла idapi32.dll).

Причем параметр ROLE NAME будет виден только для новых алиасов, а не для старых. Т.е. для появления новых параметров нужно пересоздать алиас. Если при этом параметр роли не появился, то следует взять файл sql_int.zip, распаковать его, и в BDE Administrator подключить этот файл через меню Object/Merge Configuration. После этого вновь создаваемые алиасы будут иметь параметры ROLE NAME для указания роли, WAIT ON LOCK для указания параметров транзакций wait/nowait (см. статью по транзакциям), и COMMIT RETAINING для явных транзакций (см. статью по транзакциям).

В Login Dialog параметр роли все равно выводиться не будет, поэтому нужно создавать свой собственный диалог логина для TDatabase.
чем можно работать с IB 6?

A: Если база данных в диалекте 1, то к ней можно обращаться из программ, поддерживающих IB4 или IB5. Если БД перенесена в диалект 3 (или создана в нем), то пока вариантов немного:
IBConsole. не очень удобный инструмент. Не рекомендуется делать им backup/restore в бете IB 6 и в релизе IB 6 (IBConsole build 308 и 309). IBConsole есть как для Windows, так и для Linux
IB_SQL. Поддерживает 6.0, диалекты 1 и 3.
Другие, намного более удобные инструменты третьих фирм, см. раздел http://www.ibase.ru/download.htm.
не могу открыть базы данных от 4/5.x из 6.0 или
unsupported on-disk structure for x.gdb;found 9(8), support 10

A: Сообщение гласит о том, что используемая версия IB не поддерживает базы данных старого формата (от 5.x). Для работы надо в 5.x сделать backup базе данных, и restore в 6.0. Или использовать другой билд (например FireBird), который поддерживает старый формат баз данных.

Основная проблема в том, что 6.0 поддерживает новую версию BLR (Binary Language Representation, формат скомпилированных процедур и триггеров), которая несовместима с использовавшейся в 5.x. В результате поддержка старых баз данных то появлялась, то пропадала. Например, бета-версия IB 6 не поддерживала формат ODS9. Также не поддерживают старые базы билд Borland InterBase 6.0.1 от 10 января 2000 (версий 6.0.1 было несколько). Наоборот, все версии FireBird поддерживают старые базы данных, и также обещают подобную поддержку в сертифицированных билдах Borland InterBase. См. FAQ от Borland.
под какие платформы выпускается InterBase, Firebird, Yaffil?

Приведен список версий серверов, операционных систем, и какой вариант сервера выбрать для двух и более процессорных систем.

По поводу использования HyperThreading см. документ www.ibase.ru/devinfo/ht.htm

Для каждой операционной системы версия сервера может быть Classic и/или SuperServer. Например, Yaffil и FB 1.5 есть и Classic и SuperServer, Firebird 1.0 for Windows - только SuperServer, Firebird for FreeBSD - только Classic, InterBase 6.5 и выше для любой платформы - только SuperServer, и т.д.

в столбце "2 и более процессоров":
"Нет" - не рекомендуется, или имеет смысл привязать процесс сервера к одному процессору (например для windows через утилиту ibaffinity или через параметр CPU_AFFINITY в ibconfig/firebird.conf).
"Да" - этот вариант сервера под данной операционной системой будет использовать все процессоры. Для IB 7.x требуется приобретение процессорных лицензий на каждый +1 физический процессор.
для облегчения выбора "да" выделено жирным шрифтом.Сервер Тип сервера Операционная система 2 и более процессоров
InterBase 6.0 SuperServer Windows нет
Linux нет
Solaris-SPARC нет
Classic Linux да
InterBase 6.5 SuperServer Windows нет
Linux нет
Solaris-SPARC нет
InterBase 7.x SuperServer Windows да
Linux да
Solaris-SPARC да
Firebird 1.0 SuperServer Windows нет
Linux нет
Solaris-x86 нет
HP-UX нет
Classic Linux да
Solaris-x86 да
Solaris-SPARC да
FreeBSD да
MacOS/X да
HP-UX да
Firebird 1.5 SuperServer Windows нет
Linux нет
Classic Windows да
Linux да
FreeBSD да
MacOS/X да
sinixz да
Solaris-x86 да
Yaffil SuperServer Windows нет
Classic Windows да


Имена файлов дистрибутивов InterBase и Firebird могут содержать буквы cs (Classic) и ss (SuperServer). Дистрибутив Firebird 1.5 for Windows содержит в себе установку как Classic, так и SuperServer.

Для регулирования количества используемых сервером процессоров (только для Windows, SuperServer) существует параметр ibconfig CPU_AFFINITY (битовая маска).

Под Linux как правило имеется в виду Red Hat Linux. Допускается использование других вариантов этой ОС, с требованиями по минимальной версии kernel и glibc: например для InterBase 7.x - kernel 2.2 and 2.4. Обратите внимание что от версии ядра Linux также зависит поддержка размеров одного файла БД более 4 гигабайт.

Под Windows имеются в виду Windows 98, ME, 2000, 2003, XP. На Windows 2003/XP не рекомендуется использовать старые версии - IB 6, FB 1.0.
в чем разница между архитектурами SuperServer и Classic?

A: Если в двух словах, то Classic создает процесс для каждого пользовательского коннекта, а SuperServer - один процесс, который обрабатывает запросы клиентов в разных threads (этого же процесса). Архитектура Classic надежнее, но требует больше памяти, т.к. кэш данных и метаданных у каждого процесса (пользователя) свой. SuperServer - производительнее, и имеет общий кэш данных и метаданных, но не распараллеливает запросы разных пользователей на многопроцессорных машинах. Распараллеливаемый SuperServer выпущен только Borland в версии Interbase 7.

Подробнее см. документ.

В Windows архитектура SuperServer была введена с версии 4.2. С тех пор (1995 год) версия Classic для Windows не выпускается. Для Linux (Unix) большинство портов были Classic, однако порт SuperServer также существует. Firebird выпускается, как правило, для всех вариантов Unix как в архитектуре Classic, так и SuperServer.

Borland в версии 6.5 прекратил выпуск Classic для всех платоформ.
Для Windows есть Classic - Yaffil и Firebird 1.5
Borland Interbase 7 имеет архитектуру SuperServer, нормально распараллеливаемую на несколько процессоров (см. документ).
"Can not attach to password database" после установки
  Ответить с цитированием
 
Время генерации страницы 0.14391 секунды с 10 запросами