前言
数据库在安装完成之后通常都会配置一些基础的参数用于控制和管理数据库行为,其中有些参数在配置完成后若要修改则需要重启数据库才能生效,甚至一些参数在完成初始化之后无法修改,这些参数在生产环境中尤其需要关注,需要事先就确定好,避免后续遇到需要修改时影响到生产环境的使用。对于这些参数我们在几个常用数据库之间对一个对比,来看下各个数据库都是如何进行配置和管理的。
配置文件
数据库安装完成后都有自己的配置文件用以记录当下数据库的各个参数配置。
-
达梦
有dm.ini、dmarch.ini、dmmal.ini、sqllog.ini等,其中dm.ini是主要的参数配置文件。 -
Oracle
有spfile和pfile文件,其中spfile属于服务器参数文件,是二进制格式,不能使用文本编辑器修改,可以使用alter system命令修改文件中的参数,默认名称为spfile.ora;pfile属于初始化参数文件,是文本格式,可以使用文本编辑修改其中的内容,默认名称为init.ora。 -
Mysql
主要是配置my.cnf文件,其中也是配置了动态参数和静态参数。 -
PostgreSQL
主要是配置postgresql.conf文件。
数据库基础
1、数据库名称
- 达梦是在用dminit命令初始化数据库定义,参数为
DB_NAME
,缺省值为DAMENG
; - Oracle的
DB_NAME
是写在参数文件spfile/pfile中,一般缺省为orcl
; - Mysql中数据库名称更倾向于达梦和Oracle数据库中的schema名,一般可以直接通过
show databases;
命令来查看; - PostgreSQL的数据库名称与Mysql类似,在登录数据库之后可以通过元命令
\l
等方式查看。
2、实例名
- 达梦的实例名也是在dminit命令初始化时定义,参数为
INSTANCE_NAME
,缺省为DMSERVER
,记录在dm.ini参数文件中; - Oracle中
INSTANCE_NAME
是写在参数文件中,可以与数据库名相同也可以不同,不同于数据库名称,实例名是可以修改的,在操作系统中实例名又可以用Oracle_SID
来描述; - Mysql中对于实例名也没有具体的定义,还是统一使用
show databases
来查看到的数据库名来区分; - PostgreSQL对于实例名同样没有具体的定义,不过可以在PG中若需要配置两个实例一般会通过创建不同的数据库存储目录和不同的端口号来进行区分,从而实现一台服务器上运行两个PG数据库实例。
3、端口
数据库对外服务的连接端口,几个数据库都有此参数,参数名称分别为:
- 达梦:
PORT_NUM
,缺省为5236
; - Oracle:这里是指数据库实例端口,在listener.ora文件中
port
默认为1521
; - Mysql:在my.cnf文件中
port
默认为3306
; - PostgreSQL:在postgresql.conf文件中
port
默认为5432
。
4、存储目录
- 达梦中
SYSTEM_PATH
系统库目录一般就是数据文件等存储的路径; - Oracle的控制文件、数据文件和日志文件一般是分开存储的,分别存储在$ORACLE_HOME/dbs、$ORACLE_HOME/oradata和$ORACLE_HOME/rdbms的db_name实例名称的目录下;
- Mysql中在my.cnf里面通过参数
datadir
来定义数据文件存储的位置; - PostgreSQL是在postgresql.conf文件中通过
data_directory
参数来定义数据存储的目录。
5、数据库存储
- 达梦中有
page_zise
和extent_size
分别表示数据页大小和数据文件使用的簇大小,默认分别为8KB和16页,建议都设置成32; - 在Oracle中Block是数据库存储数据的最小单位,影响其大小的参数为
DB_BLOCK_SIZE
,单位是bytes,默认值是8192; - Mysql中数据页是存储的最小单位,参数为
innodb_page_size
,默认值为16KB; - PostgreSQL中使用
page_size
参数来控制数据页大小,默认是8KB,在编译时可以进行调整,最大32KB。
6、大小写敏感
- 达梦针对大小写敏感的配置设置了参数
CASE_SENSITIVE
,在dminit命令初始化数据库时定义,可选值:Y/N,1/0; - Oracle中在数据库名、表名、字段名时默认是使用大写,若需创建小写的字段名等,需加双引号;而在针对字段内容的字符串时是区分大小写的;
- Mysql在Linux平台下默认是区分大小写的,并且提供了参数
lower_case_table_names
来进行控制,0代表大小写敏感,1则代表大小写不敏感; - PostgreSQL是对表名、字段名都是区分大小写的,但是在SQL语句中对大小写不敏感,若区分大小写的情况下,需加双引号。
7、字符集设置
- 达梦在用dminit命令初始化数据库时通过定义
CHARSET/UNICODE_FLAG
参数来设置数据库字符集,可选值:0[GB18030],1[UTF-8],2[EUC-KR]; - Oracle中数据库的字符集由
NLS_CHARACTERSET
参数来配置,同时还需要配置客户端应用程序的NLS_LANG
参数与之相符; - Mysql中影响字符集的参数主要有:
character_set_client
代表Mysql认为来自客户端的数据所使用的字符集,character_set_database
代表DB默认的字符集,character_set_server
代表Mysql服务器默认的字符集; - PostgreSQL主要是通过initdb命令在初始化数据库时添加
-E
或者-encoding
选项来设置数据库的字符集,在登录数据库后可以通过show server_encoding
查看服务器实例字符集,通过show client_encoding
查看客户端字符集。
8、VARCHAR类型长度
- 达梦在用dminit命令初始化数据库时通过定义
LENGTH_IN_CHAR
参数来定义VARCHAR类型长度是否以字符为单位,可选值:Y/N,1/0; - Oracle中通过参数
NLS_LENGTH_SEMANTICS
来控制char和varchar2两种字符型是以字节为长度还是以字符为长度,值byte代表以字节为长度,char代表以字符为长度; - Mysql中时设置的VARCHAR字符型长度在5.0版本之后默认是以字符为单位的;
- PotgreSQL中设置的VARCHAR字符型长度也是默认以字符为单位的,至于一个字符等于多少字节还会收到字符集的影响,例如UTF8下,一个字符等于3个字节。
连接信息
在连接信息有关参数中,常用且重要的参数主要是最大连接数
。
- 达梦中通过参数
MAX_SESSIONS
来定义最大连接数; - Oracle中最大连接数为
processes
; - Mysql中最大连接数为
max_connections
; - PostgreSQL中最大连接数参数也是
max_connections
。
内存
对于数据库所使用的内存也有细致的划分,如共享内存池等,这里主要说明数据库所能使用服务器内存的最大值。
- 达梦中有
BUFFER
参数,系统缓冲区大小,单位MB。推荐值:系统缓冲区大小为可用物理内存的60%~80%; - Oracle中的内存参数也比较多,主要是SGA和PGA即系统全局区和进程全局区,影响的主要参数有
sga_max_size
和pga_aggregate_target
,还有参数MEMORY_MAX_TARGET
代表oracle实例的可以达到的最大内存大小; - Mysql中有
innodb_buffer_pool_size
参数,用于缓存索引和数据的内存大小,还有操作系统和数据库的其他进程使用,一般大小设置为总内存的3/4至4/5; - PostgreSQL中有
shared_buffers
参数,共享内存缓冲区,决定了数据库能够使用的专用缓存大小,一般会设置为系统内存的25%,由于PG还依赖于操作系统的缓存,大于内存40%的shared_buffers并不会带来性能的提升。
除了以上所提到的参数,每个数据库都还有很多其他的参数,相互之间有类似的地方也有不同之处,例如关于达梦和Oracle中归档日志和redo日志相关的参数对应Mysql的binlog日志相关参数和PostgreSQL中WAL日志相关参数,等等。。
更多的内容可以登录达梦的社区进行查看:https://eco.dameng.com
标签:PostgreSQL,数据库,字符集,参数,Mysql,Oracle From: https://www.cnblogs.com/ariesblog/p/18036701