首页 > 数据库 >达梦、Oracle、Mysql和PostgreSQL数据库重要参数对比

达梦、Oracle、Mysql和PostgreSQL数据库重要参数对比

时间:2024-02-27 13:35:06浏览次数:21  
标签:PostgreSQL 数据库 字符集 参数 Mysql Oracle

前言

数据库在安装完成之后通常都会配置一些基础的参数用于控制和管理数据库行为,其中有些参数在配置完成后若要修改则需要重启数据库才能生效,甚至一些参数在完成初始化之后无法修改,这些参数在生产环境中尤其需要关注,需要事先就确定好,避免后续遇到需要修改时影响到生产环境的使用。对于这些参数我们在几个常用数据库之间对一个对比,来看下各个数据库都是如何进行配置和管理的。

配置文件

数据库安装完成后都有自己的配置文件用以记录当下数据库的各个参数配置。

  • 达梦
    有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_ziseextent_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_sizepga_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

相关文章

  • Helm的安装与使用helm部署MySQL
    helm官网:https://helm.sh/安装Helm每个Helm版本都提供了各种操作系统的二进制版本,这些版本可以手动下载和安装。下载需要的版本解压(tar-zxvfhelm-v3.0.0-linux-amd64.tar.gz)在解压目录中找到helm程序,移动到需要的目录中(mvlinux-amd64/helm/usr/local/bin/helm)使用h......
  • [转载]详解Mysql innoDB意向锁的作用
    前言InnoDB支持多粒度锁(multiplegranularitylocking),它允许行级锁与表级锁共存,而意向锁就是其中的一种表锁。意向锁(IntentionLocks)需要强调一下,意向锁是一种不与行级锁冲突表级锁,这一点非常重要。意向锁分为两种:意向共享锁(intentionsharedlock,IS):事务有意向对表中的某......
  • oracle查看触发器
    参考:https://blog.csdn.net/weixin_43487853/article/details/131085585查询所有触发器、存储过程、视图、表--所有触发器object_name触发器名称(也可以查user_triggers表)Select*Fromuser_objectsWhereobject_type='TRIGGER';--所有存储过程object_name存储名称(也......
  • [转]MySQL “grant all”与”grant all privileges”授权语句的差别
    原文地址:MySQL“grantall”与”grantallprivileges”的差别|极客笔记在MySQL中,”grantall”与”grantallprivileges”都是用来赋予用户所有权限的语句。然而,在某些情况下,这两种语句的区别是非常明显的。 “grantall”“grantall”语句将授权用户执行操作的所有权......
  • Docker安装Mysql
    使用Dockers部署Nacos集群前置条件:已经安装dockerDockerSwarm集群已经初始化添加标签:dockernodeupdate--label-addmysql=masterworkId创建网络dockernetworkcreate-doverlayswarm_net构建私有镜像mysql.ymlversion:"3.8"services:mysql:......
  • mysql-批量修改表的主键id,修改成联合主键
    1.sql脚本一.通过sql脚本,查出所有表的功能,并编写插入修改的联合主键,sqlselect concat('ALTERtable',TABLE_NAME,'DROPPRIMARYKEY',',','ADDPRIMARYKEY(`id`,`org_id`)'';')from information_schema.TABLESwhereTABLE_SC......
  • mysql 定位问题常用sql
    select*,now()frominformation_schema.INNODB_TRX;--查看当前正在被锁定的事务select*,now()frominformation_schema.INNODB_LOCKS;--查看当前正在被锁定的行select*,now()frominformation_schema.INNODB_LOCK_WAITS;--查看当前等待锁的事务SHOWOPENTABLESW......
  • 21、oracle报ORA-04091发生了变化, 触发器函数不能读它
    21、oracle报ORA-04091发生了变化,触发器函数不能读它​ 在对某表进行更新的时候,调用了一个函数,函数中又使用该表进行读的操作,会导致读取到错误的数据。所以在函数中进行事务的锁定。解决方案:在begin之前增加pragmaautonomous_transaction;,在end之前增加commit;funcation......
  • LightDB-X 24.1 支持 Oracle DBMS_STATS.GATHER_TABLE_STATS 存储过程
    LightDB-X24.1支持OracleDBMS_STATS.GATHER_TABLE_STATS存储过程背景LightDB-X一直在不断提升对Oralce的兼容性,降低基于Oracle的业务系统迁移到LightDB-X的门槛。在24.1版本中支持了Oracle的DBMS_STATS.GATHER_TABLE_STATS存储过程,提高了对Oracle管理功能......
  • [MYSQL] MYSQL 8解决 Invalid default value for `created_at`(timestamp)
    1问题描述问题背景执行从MYSQL5.7导出,并在MYSQL8.0.33的数据库中执行DDL建表语句时,报Invaliddefaultvaluefor'create_at'...`create_at`timestampNOTNULLDEFAULT'0000-00-0000:00:00'COMMENT'创建时间/createdtime',...2原因分析表面原因:......