Unix сокет подключения к MySql с Java, чтобы избежать издержек TCP / IP JDBC? - PullRequest
6 голосов
/ 22 сентября 2010

Можно ли установить сокет Unix для подключения к MySql с Java, чтобы избежать накладных расходов JDBC TCP / IP?

Кто-нибудь знает библиотеку (или несколько библиотек, возможно), которая делает это возможным?*

Ответы [ 4 ]

1 голос
/ 22 сентября 2010

Также драйвер mySQL JDBC долгое время был отшлифован и имеет несколько настроек оптимизации, таких как кэширование метаданных. Я был бы удивлен, что разработчики JDBC оставили бы много накладных расходов TCP / IP в драйвере.

Переход на JNI к реализации на основе C, вероятно, обойдется дороже при переходе к собственному коду, чем может быть получен за счет снижения накладных расходов TCP / IP.

Если вы действительно хотите сократить накладные расходы TCP / IP, вы можете рассмотреть возможность использования встроенной базы данных, такой как sqlite, derby или hyperersonic.

1 голос
/ 22 сентября 2010

JDBC - это только спецификация интерфейса.Это не добавляет никаких издержек TCP / IP.Если есть издержки, это вызвано драйвером JDBC.Существуют также драйверы JDBC для баз данных в памяти или файлах, которые вообще не используют TCP / IP.

Драйвер JDBC MYSQL является драйвером JDBC типа 4.Это означает, что он не использует какой-либо нативный код для доступа к базе данных.Если у Java нет метода для доступа к сокетам Unix, драйвер также не сможет их использовать. [1]

Если вы действительно хотите использовать сокет Unix, возможно, этоМожно использовать драйвер ODBC MySQL, который поддерживает Unix-сокеты, а затем использовать мост JDBC-ODBC для доступа к нему из Java.

0 голосов
/ 10 мая 2011

Просто используйте junixsocket, http://code.google.com/p/junixsocket/

Это библиотека на основе JNI, которая предоставляет доступ к сокетам AF_UNIX с помощью стандартного API сокетов Java, а также поставляется с фабрикой соединений MySQL.

0 голосов
/ 22 сентября 2010

Вы всегда можете взять библиотеку C и обернуть ее самостоятельно.Я думаю, что он поддерживает сокеты UNIX.

Могу я спросить, как вы определили проблему с TCP / IP?Как вы сузили проблему (которая, я полагаю, у вас) до этого?

Является ли проблема только издержками соединения, а не издержками пакетов?Если установление соединения занимает слишком много времени, библиотека пула соединений (например, библиотека в Apache commons) справится с этим за вас.

...