浅谈达梦数据库性能优化思路

 一、前言

通常SQL 调优作为业务上线前对数据库性能调优中最重要的一个环节,对数据库相关性能产生着重要的影响,影响SQL执行效率的原因有很多,比如:SQL编码不规范,表结构设计不合理,索引问题,慢SQL,统计信息不准确等, SQL调优的原则是最大程度减小系统资源开支,尤其减少I/O和CPU使用率、提高SQL命中率,获得最优的执行计划。

二、SQL 优化思路总结

定位慢 SQL

定位执行效率低的 SQL 语句是 SQL 优化的第一步。待优化的 SQL 可大致分为两类:

SQL 执行时间在十几秒到数十秒之间,但执行频率不高,此类 SQL 对数据库整体性能影响并不大,可以放到最后进行优化。

SQL 单独执行时间可能很快,在几百毫秒到几秒之间,但执行频率非常高,甚至达到每秒上百次,高并发下执行效率降低,很可能导致系统瘫痪,此类 SQL 是优化的首要对象。

以下介绍两种定位慢 SQL 的方法,可记录下具体 SQL 语句以及对应执行时间,为后续 SQL 优化工作奠定基础。

  • 开启跟踪日志记录

跟踪日志文件是一个纯文本文件,以”dmsql_实例名_日期_时间命名.log”,默认生成在 DM 安装目录的log 子目录下。跟踪日志内容包含系统各会话执行的 SQL 语句、参数信息、错误信息、执行时间等。跟踪日志主要用于分析错误和分析性能问题,基于跟踪日志可以对系统运行状态进行分析。

  • 跟踪日志记录配置

(1)配置 dm.ini 文件,设置SVR_LOG = 1 以启用 sqllog.ini 配置,该参数为动态参数,可通过调用数据库函数直接修改,如下所示:

SP_SET_PARA_VALUE(1,'SVR_LOG',1);

(2)配置数据文件目录下的 sqllog.ini 文件。

[dmdba@localhostDAMENG]$ cat sqllog.ini

BUF_TOTAL_SIZE = 10240 #SQLs Log Buffer Total Size(K)(1024~1024000)

BUF_SIZE = 1024 #SQLs Log Buffer Size(K)(50~409600)

BUF_KEEP_CNT = 6 #SQLs Log buffer keeped count(1~100)

[SLOG_ALL]

FILE_PATH = ../log

PART_STOR = 0

SWITCH_MODE = 1

SWITCH_LIMIT = 100000

ASYNC_FLUSH = 0

FILE_NUM = 200

ITEMS = 0

SQL_TRACE_MASK = 2:3:23:24:25

MIN_EXEC_TIME = 0

USER_MODE = 0

  1. USERS =

(3)如果对sqllog.ini 进行了修改,可通过调用以下函数即时生效,无需重启数据库。

SP_REFRESH_SVR_LOG_CONFIG();(各配置项详细说明请见达梦官网技术文档)

表设计优化

表设计优化可以从三个方面入手:选择合适的表类型、设置分区表、设置全局临时表。

表类型选择

达梦数据库提供了三种表类型:行存储表、列存储表(HUGE)和堆表。运维人员可根据实际需求选择合适的表类型。

表类型

描述

主要特征

适用场景

行存储表

行存储是以记录为单位进行存储的,数据页面中存储的是完整的若干条记录

1.按行存储 2.每个表都创建一个 B 树,并在叶子上存放数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值