Производительность взаимодействия с базами данных и приложениями для сравнительного анализа и встроенных баз данных - PullRequest
1 голос
/ 03 октября 2011

Во встроенных базах данных запросы и ответы выполняются через сокеты, как при использовании базы данных с драйвером? Что лучше с точки зрения производительности?

Каков наилучший способ доступа к базе данных с точки зрения производительности для сравнительного анализа?

1 Ответ

0 голосов
/ 04 октября 2011

Это зависит от реального продукта, от того, как обрабатывается связь между приложением и базой данных. Я очень знаком с одним конкретным продуктом, который продается во «встроенном» пространстве, потому что я являюсь разработчиком этого продукта базы данных. Конечно, он не одинок в этом пространстве, поэтому эта информация относится и к другим встроенным базам данных. Этот конкретный продукт включает в себя как версию клиент / сервер, так и версию внутри процесса. Версия клиент / сервер использует сокеты для связи, когда процесс клиента и сервера находится на разных компьютерах, и использует IPC через общую память при работе на одном физическом компьютере. Как вы можете догадаться, внутрипроцессная версия запускается в пространстве процесса клиентского приложения в виде DLL (Windows) или общего объекта (Linux). Так что это только один пример, и он не уникален. Поэтому, в основном, вам необходимо прочитать документацию по продукту, который вы используете, чтобы определить конкретный ответ для вашего случая.

Что касается того, что лучше с точки зрения производительности, это не простой вопрос, чтобы ответить. Это зависит от многих факторов. Один запрос от клиента к серверу базы данных, как правило, будет быстрее с точки зрения самого вызова внутрипроцессной базы данных. Но некоторые механизмы IPC работают почти так же быстро. И если не будут сделаны миллиарды «маленьких / быстрых» запросов, это вряд ли может повлиять на общую производительность. И есть другие вопросы для рассмотрения. Если база данных работает как отдельный процесс, она может быть быстрее в целом, потому что она может выполнять более агрессивное кэширование, использовать преимущества нескольких ядер, иметь возможность работать как служба, возможно, работать как 64-битный процесс, пока клиент 32 Плюс есть стабильность, чтобы рассмотреть. Если база данных является отдельным процессом, она может, например, избежать проблем с повреждением, если клиентское приложение аварийно завершает работу, в то время как внутрипроцессная версия может в большей степени зависеть от стабильности клиента.

Для бенчмаркинга лучше всего протестировать с типом среды и запросами, которые будет использовать приложение. База данных может иметь поразительные цифры в некотором наборе тестов TPC, но если целевое приложение предназначено для одного пользователя и выполняет очень простые запросы и обновления, то, вероятно, не имеет значения, каковы его номера TPC. Поэтому, если это возможно, проводите тесты, которые будут максимально приближены к вашей реальной среде. Это, конечно, легче сказать, чем сделать во многих случаях, но это хороший способ начать думать об этом.

...