注册
基础优化——初始化实例
专栏/小时的百草园/ 文章详情 /

基础优化——初始化实例

Joker￿ 2021/06/11 2894 7 0
摘要 本文将为大家介绍实例规划的意义和初始化实例过程中需要注意的步骤。

目前 DM8 和 DM7 采用的都是单实例多模式的架构,在项目适配及投入使用前,做好实例的规划是非常有必要的,可以减少不必要的返工。

在进行了基础的服务器配置之后,我们需要进行安装数据库软件并初始化实例,在这些流程中,需要注意哪些内容呢?我们一步步往下看。

修改资源限制

Linux 系统中,每个用户的可使用资源是可以配置的,我们通常使用 dmdba 用户来管理 dmserver 进程。

在安装部署前一定要将相关的系统资源放开,避免在使用过程中再耗费人力物力去排查这些不应该出现的问题。

修改用户资源限制:
使用 root 用户执行 vi /etc/security/limits.conf 并添加以下内容

dmdba soft nice 0
dmdba hard nice 0
dmdba soft as unlimited
dmdba hard as unlimited
dmdba soft fsize unlimited
dmdba hard fsize unlimited
dmdba soft nproc 131072
dmdba hard nproc 131072
dmdba soft nofile 131072
dmdba hard nofile 131072
dmdba soft core unlimited
dmdba hard core unlimited
dmdba soft data unlimited
dmdba hard data unlimited

在紧急情况下,如果启动进程之前没有修改用户的资源限制,可以检查启动的 dmserver 进程下的相关限制:

1.1.png

1.2.png

再使用 echo 命令动态修改进程下的资源限制。

初始化工具

达梦数据库提供两种初始化实例的工具,图形化界面的 DBCA 以及基于字符界面的 DMINIT,二者的基本流程是一样的,在使用时可以参考 DBCA 的工具帮助或者 DMINIT 手册。

配置参数

下面为大家介绍一下在初始化过程中需要关注的一些配置。

1、DMINIT

进行完整的安装步骤之后,在安装目录的 bin 下,使用 dminit help 命令可以看到各个参数的解释:

1.3.png

2、PATH

定义数据库实例初始化的目录。

初始化后所有的基础数据文件、配置文件、模板文件均在此目录,需要规划好数据文件目录、备份文件目录和归档日志文件目录。这样既安全又能充分利用 IO,避免把鸡蛋都放在一个篮子里。

3、页大小-PAGE_SIZE

页大小可选值 4 KB、8 KB、16 KB 或 32 KB 。

选择的页大小越大,则 DM 支持的元组长度也越大,但同时空间利用率可能下降。需要注意的是:不同页大小在存储字符长度时,单行的最大长度不能超过页大小的一半,如果超过了会报错记录超长,这时可以通过存储选项(enable using long row)来处理,使用 manager 工具在模式菜单下找到该表后右键启用超长列。

例:常规模式下报错“记录超长”

1.4.png

启用超长列:

1.5.png

4、字符集-CHARSET

两种字符集指定 UTF8 还是 GB18030 需要确认好,如果涉及到数据移植,则字符集尽量和源库保持一直,避免出现需要大量修改表结构精度的问题。

需要注意的是:
在 UTF8 字符集中,一个汉字所占用的字符长度是 1,字节长度是 3,而在 GB18030 字符集中,一个汉字占用的字符长度是 1,字节长度是 2。
计算字符长度的系统函数是 length(),而计算字节长度的系统函数是 lengthb()。

例如:
1.6.png

对于字符集详细说明文档,可以参考这篇文章:《数据库字符集》

5、日志大小-LOG_SIZE

此处定义的是在线日志大小,也就是 redo 日志文件大小。redo 日志可以看作是内存和磁盘之间的一个缓存。

数据库记录实时生产中产生的数据变化,这些修改是无序且随机的,而 redo 日志的作用就是将随机写转化为顺序写,顺序写的性能比随机写要快得多。

通常我们会扩大 redo 日志的大小,减少 redo 之间的切换次数,同时调整好刷盘的检查比例,配合实际的应用场景,有效提升性能。

6、空格填充模式- BLANK_PAD_MODE

在有唯一性约束时,末尾空格的处理方式不同,可能会出现不同的现象:使用 group by 无法找到重复的数据,但是创建唯一索引或主键时却会报错“违反唯一性约束”。

在存在数据移植的项目中需要慎重选择末尾空格的处理方式,避免迁移数据报错。如果出现了这种问题可以使用 trim() 函数来消除末尾空格。设置 BLANK_PAD_MODE=1 后,也可以按照兼容 Oracle 的方式来处理末尾空格。

初始化命令

./dminit  path=/dmdb/dmdata   page_size= 32   charset=1  
 log_size=2048   blank_pad_mode=1

执行初始化命令的用户一定要对上述文件目录有权限读写,否则初始化失败。

初始化实例的参数很多,详细的使用手册可以参考 DMINIT 使用手册,以上几个是比较重要的可能会影响功能或性能的。

后台启动脚本

在初始化实例之后给大家介绍一下数据库的启动方式。

  • 前台启动
    在 dmdbms/bin 目录下执行:
./dmserver  /xxx/xxx/dm.ini

1.7.png

  • 后台启动
    使用脚本注册服务或模板文件修改

注册服务方式适合需要设置开机自动启动的需求。详细的使用手册可以查看 《DM8_Linux 服务脚本使用手册》。

模板文件存放于 /xxx/dmdbms/bin/service_template 目录,启动数据库的是 DmService 脚本,在使用时我们需要注意修改以下地方:

1.8.png

修改 DmService 文件

1.9.png

启停命令为:./DmService start | stop

结尾

无论是操作系统设置还是基础硬件配置的调优,都是性能及稳定性的基础。磨刀不误砍柴工,你准备好了吗?

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服