Commit 246be304 authored by Bruce Momjian's avatar Bruce Momjian

Add mention of performance impact on LIKE of non-C locales.

parent a2a5526e
<!-- $PostgreSQL: pgsql/doc/src/sgml/charset.sgml,v 2.47 2004/12/27 22:30:10 tgl Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/charset.sgml,v 2.48 2005/01/04 00:05:44 momjian Exp $ -->
<chapter id="charset"> <chapter id="charset">
<title>Localization</> <title>Localization</>
...@@ -189,10 +189,10 @@ initdb --locale=sv_SE ...@@ -189,10 +189,10 @@ initdb --locale=sv_SE
</sect2> </sect2>
<sect2> <sect2>
<title>Benefits</> <title>Behavior</>
<para> <para>
Locale support influences in particular the following features: Locale support influences the following features:
<itemizedlist> <itemizedlist>
<listitem> <listitem>
...@@ -202,6 +202,13 @@ initdb --locale=sv_SE ...@@ -202,6 +202,13 @@ initdb --locale=sv_SE
</para> </para>
</listitem> </listitem>
<listitem>
<para>
The ability to use indexes with <literal>LIKE</> clauses
<indexterm><primary>LIKE</><secondary>and locales</></indexterm>
</para>
</listitem>
<listitem> <listitem>
<para> <para>
The <function>to_char</> family of functions The <function>to_char</> family of functions
...@@ -211,9 +218,11 @@ initdb --locale=sv_SE ...@@ -211,9 +218,11 @@ initdb --locale=sv_SE
</para> </para>
<para> <para>
The only severe drawback of using the locale support in The drawback of using locales other than <literal>C</> or
<productname>PostgreSQL</> is its speed. So use locales only if <literal>POSIX</> in <productname>PostgreSQL</> is its performance
you actually need them. impact. It slows character handling and prevents ordinary indexes
from being used by <literal>LIKE</>. For this reason use locales
only if you actually need them.
</para> </para>
</sect2> </sect2>
......
<!-- <!--
$PostgreSQL: pgsql/doc/src/sgml/ref/initdb.sgml,v 1.32 2004/08/01 06:19:18 momjian Exp $ $PostgreSQL: pgsql/doc/src/sgml/ref/initdb.sgml,v 1.33 2005/01/04 00:05:45 momjian Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
...@@ -54,21 +54,22 @@ PostgreSQL documentation ...@@ -54,21 +54,22 @@ PostgreSQL documentation
</para> </para>
<para> <para>
<command>initdb</command> initializes the database cluster's <command>initdb</command> initializes the database cluster's default
default locale and character set encoding. Some locale categories locale and character set encoding. Some locale categories are fixed
are fixed for the lifetime of the cluster, so it is important to for the lifetime of the cluster. There is also a performance impact
make the right choice when running <command>initdb</command>. in using locales other than <literal>C</> or <literal>POSIX</>.
Other locale categories can be changed later when the server is Therefore it is important to make the right choice when running
started. <command>initdb</command> will write those locale <command>initdb</command>. Other locale categories can be changed
settings into the <filename>postgresql.conf</filename> later when the server is started. <command>initdb</command> will
configuration file so they are the default, but they can be changed write those locale settings into the
by editing that file. To set the locale that <filename>postgresql.conf</filename> configuration file so they are
<command>initdb</command> uses, see the description of the the default, but they can be changed by editing that file. To set the
<option>--locale</option> option. The character set encoding can locale that <command>initdb</command> uses, see the description of
the <option>--locale</option> option. The character set encoding can
be set separately for each database as it is created. be set separately for each database as it is created.
<command>initdb</command> determines the encoding for the <command>initdb</command> determines the encoding for the
<literal>template1</literal> database, which will serve as the <literal>template1</literal> database, which will serve as the
default for all other databases. To alter the default encoding use default for all other databases. To alter the default encoding use
the <option>--encoding</option> option. the <option>--encoding</option> option.
</para> </para>
......
<!-- <!--
$PostgreSQL: pgsql/doc/src/sgml/runtime.sgml,v 1.299 2004/12/26 23:06:56 tgl Exp $ $PostgreSQL: pgsql/doc/src/sgml/runtime.sgml,v 1.300 2005/01/04 00:05:44 momjian Exp $
--> -->
<Chapter Id="runtime"> <Chapter Id="runtime">
...@@ -144,9 +144,10 @@ postgres$ <userinput>initdb -D /usr/local/pgsql/data</userinput> ...@@ -144,9 +144,10 @@ postgres$ <userinput>initdb -D /usr/local/pgsql/data</userinput>
that can be found in <xref linkend="locale">. The sort order used that can be found in <xref linkend="locale">. The sort order used
within a particular database cluster is set by within a particular database cluster is set by
<command>initdb</command> and cannot be changed later, short of <command>initdb</command> and cannot be changed later, short of
dumping all data, rerunning <command>initdb</command>, and dumping all data, rerunning <command>initdb</command>, and reloading
reloading the data. So it's important to make this choice correctly the data. There is also a performance impact for using locales
the first time. other than <literal>C</> or <literal>POSIX</>. Therefore, it is
important to make this choice correctly the first time.
</para> </para>
</sect1> </sect1>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment