配置区域和字符集

区域和字符集在安装过程中通过指定初始化GUC参数来控制,考虑到这两个参数的重要性,在此单独对这两个参数进行详细说明。

相关概念

区域:

  • 区域是指应用中考虑字母、排序、数字格式等与文化相关的问题。
  • 使用gs_install脚本初始化一个数据库时会初始化区域。缺省时,gs_install脚本将会按照操作系统默认的区域初始化数据库。因此,如果操作系统的默认区域与用户规划的相同,则初始化数据库时不需要再设置。

字符集(编码格式):

  • openGauss支持GBK、UTF-8和Latin1编码格式。
  • 使用gs_install脚本初始化数据库时会初始化字符集。缺省时,gs_install脚本将会按照操作系统默认区域的字符集来初始化数据库。在创建数据库的时候是可以修改默认字符集。因此,多个数据库可以设置为不同的字符集。

规划原则和方法

  • 规划字符集,选择原则和设置方法请参见表1

    表 1 字符集

    字符集

    规划原则

    设置方法

    GBK

    如果数据库只需要支持中文,数据量很大,性能要求也很高,那就应该选择双字节定长编码的中文字符集。对openGauss来说,中文字符集目前只能选择GBK 。

    • 在安装数据库时指定初始化参数-E。
    • 通过SQL语句创建数据库时指定ENCODING参数。

    详细请参见示例

    UTF-8

    如果应用程序要处理各种各样的文字,或者将处理结果发布到使用不同语言的国家或地区,就应该选择Unicode字符集。对openGauss来说,Unicode字符集目前只能选择UTF-8 。

    Latin1

    如果数据库只需要支持ASCII收录的字符、西欧语言、希腊语、泰语、阿拉伯语、希伯来语对应的文字符号,则可以选择Latin1。

    配置区域和字符集 - 图1 说明:
    - openGauss支持字符集的多种写法:gbk/GBK、UTF-8/UTF8/uft8/utf-8和Latine1/latine1。
    - 安装时若不指定字符集,默认字符集为SQL_ASCII,若想指定,请在安装时指定,具体操作请参见示例

  • 规划区域。

    1. 检查与指定字符集(假设为UTF-8)匹配的区域。

      1. locale -a |grep utf8

      显示类似如下信息,其中en_US.utf8表示区域en_US支持UTF-8编码。

      1. ......
      2. en_SG.utf8
      3. en_US.utf8
      4. ......
    2. 在初始化数据库时设置区域,设置方法请参见示例

示例

示例1:在初始化数据库时,指定数据库初始化的字符集为UTF-8,区域为zh_CN.UTF-8。

  1. gs_initdb -E UTF-8 --locale=zh_CN.UTF-8 /opt/gaussdb/data/data_n1 --nodename dn1 -w "Bigdata@123"

/opt/gaussdb/data/data_n1为安装后的DBnode目录,Bigdata@123为数据库用户密码。

显示类似如下信息:

  1. The files belonging to this database system will be owned by user "xlnha".
  2. This user must also own the server process.
  3. The database cluster will be initialized with locale "zh_CN.UTF-8".
  4. gs_initdb: could not find suitable text search configuration for locale "zh_CN.UTF-8"
  5. The default text search configuration will be set to "simple".
  6. fixing permissions on existing directory /opt/gaussdb/data1 ... ok
  7. creating subdirectories ... ok
  8. selecting default max_connections ... 100
  9. selecting default shared_buffers ... 32MB
  10. creating configuration files ... ok
  11. ......

示例2:使用SQL语句创建数据库时,指定数据库的字符集为GBK。

  1. gsql -d postgres -p 1255
  1. postgres=# CREATE DATABASE mydb WITH ENCODING 'GBK' template = template0;

显示类似如下信息:

  1. CREATE DATABASE