Postgresql JDBC UTF8 Conversion Throughput

Поиск
Список
Период
Сортировка
От Paul Lindner
Тема Postgresql JDBC UTF8 Conversion Throughput
Дата
Msg-id 20080602085737.GA29477@inuus.com
обсуждение исходный текст
Ответы Re: Postgresql JDBC UTF8 Conversion Throughput
Список pgsql-jdbc
Hi,

On a heavily trafficed web site we found hundreds of threads stuck
looking up character set names.  This was traced back to the
encodeUTF8() method in the package org.postgresql.core.Utils.

It turns out the using more than two character sets in your Java
Application causes very poor throughput because of synchronization
overhead.  I wrote about this here:

  http://paul.vox.com/library/post/the-mysteries-of-java-character-set-performance.html

In a web application you can easily find yourself in this situation:
  * ISO-8859-1 is often the default character set
  * UTF-8 is used for DBs and more
  * Your web container might request 'utf-8' or other aliased
    character sets while processing web requests.
  * Web browsers sometimes request the strangest encodings.

In Java 1.6 there's an easy way to fix this charset lookup problem.
Just create a static Charset for UTF-8 and pass that to getBytes(...)
instead of the string constant "UTF-8".

   Charset UTF8_CHARSET = Charset.forName("UTF-8");
   ...
   return str.getBytes(UTF8_CHARSET);

For backwards compatibility with Java 1.4 you can use the attached
patch instead.  It uses nio classes to do the UTF-8 to byte
conversion.

You may want to consider applying this patch.  If not, at least
this message will be in the archives.

Comments/Suggestions welcome...

--
Paul Lindner        ||||| | | | |  |  |  |   |   |
lindner@inuus.com

Вложения

В списке pgsql-jdbc по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: Re: [HACKERS] How embarrassing: optimization of a one-shot query doesn't work
Следующее
От: "Albretch Mueller"
Дата:
Сообщение: How to just "link" to some data feed