配置区域和字符集
区域和字符集在安装过程中通过指定初始化GUC参数来控制,考虑到这两个参数的重要性,在此单独对这两个参数进行详细说明。
相关概念
区域:
- 区域是指应用中考虑字母、排序、数字格式等与文化相关的问题。
- 使用gs_install脚本初始化一个数据库时会初始化区域。缺省时,gs_install脚本将会按照操作系统默认的区域初始化数据库。因此,如果操作系统的默认区域与用户规划的相同,则初始化数据库时不需要再设置。
字符集(编码格式):
- openGauss支持GBK、UTF-8和Latin1编码格式。
- 使用gs_install脚本初始化数据库时会初始化字符集。缺省时,gs_install脚本将会按照操作系统默认区域的字符集来初始化数据库。在创建数据库的时候是可以修改默认字符集。因此,多个数据库可以设置为不同的字符集。
规划原则和方法
规划字符集,选择原则和设置方法请参见表1。
表 1 字符集
如果数据库只需要支持中文,数据量很大,性能要求也很高,那就应该选择双字节定长编码的中文字符集。对openGauss来说,中文字符集目前只能选择GBK 。
- 在安装数据库时指定初始化参数-E。
- 通过SQL语句创建数据库时指定ENCODING参数。
详细请参见示例。
如果应用程序要处理各种各样的文字,或者将处理结果发布到使用不同语言的国家或地区,就应该选择Unicode字符集。对openGauss来说,Unicode字符集目前只能选择UTF-8 。
如果数据库只需要支持ASCII收录的字符、西欧语言、希腊语、泰语、阿拉伯语、希伯来语对应的文字符号,则可以选择Latin1。
说明:
- openGauss支持字符集的多种写法:gbk/GBK、UTF-8/UTF8/uft8/utf-8和Latine1/latine1。
- 安装时若不指定字符集,默认字符集为SQL_ASCII,若想指定,请在安装时指定,具体操作请参见示例。规划区域。
检查与指定字符集(假设为UTF-8)匹配的区域。
locale -a |grep utf8
显示类似如下信息,其中en_US.utf8表示区域en_US支持UTF-8编码。
......
en_SG.utf8
en_US.utf8
......
在初始化数据库时设置区域,设置方法请参见示例。
示例
示例1:在初始化数据库时,指定数据库初始化的字符集为UTF-8,区域为zh_CN.UTF-8。
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为数据库用户密码。
显示类似如下信息:
The files belonging to this database system will be owned by user "xlnha".
This user must also own the server process.
The database cluster will be initialized with locale "zh_CN.UTF-8".
gs_initdb: could not find suitable text search configuration for locale "zh_CN.UTF-8"
The default text search configuration will be set to "simple".
fixing permissions on existing directory /opt/gaussdb/data1 ... ok
creating subdirectories ... ok
selecting default max_connections ... 100
selecting default shared_buffers ... 32MB
creating configuration files ... ok
......
示例2:使用SQL语句创建数据库时,指定数据库的字符集为GBK。
gsql -d postgres -p 1255
postgres=# CREATE DATABASE mydb WITH ENCODING 'GBK' template = template0;
显示类似如下信息:
CREATE DATABASE