记一次对DM数据库的优化过程[通俗易懂]

记一次对DM数据库的优化过程[通俗易懂]某年某月某日的一个下午,接收到监控服务器的一条告警短信: 尊敬的运维工程师 XX,你好: “192.168.136.200”数据库服务器 CPU 异常,CPU 使用率 98.7%,请尽快处理。 看到…

某年某月某日的一个下午,接收到监控服务器的一条告警短信: 尊敬的运维工程师 XX,你好: “192.168.136.200”数据库服务器 CPU 异常,CPU 使用率 98.7%,请尽快处理。 看到这个消息浑身一紧,赶紧掐灭手中的烟,跑回办公室。

以上段子纯属捏造,如有雷同,我反正是不改。

言归正传,本文是记录一次对达梦数据库的优化过程。

处理问题的第一步,是需要了解当前服务器的状况,我们通过以下两种手段确认服务器瓶颈。

系统状况

  • 通过服务器性能监控大盘观察当前系统性能 image.png 通过上图我们看出 CPU 基本耗尽,IO 飙升。

  • 通过 sar 命令观察服务器实时状态
    sar 10 3 image.png 确认 CPU 被耗满,没有空闲。

通过我的细致观察,发现服务器 CPU 被耗满。接下来需要查看数据库服务器的配置参数是否合理,是否有慢查询脚本。

参数优化

  • 查看 dm 配置文件
    cd /dm7/dmdbms/devdb cat dm.ini | grep -E "MEMORY_POOL|MEMORY_TARGET|BUFFER" image.png 发现数据库参数配置为安装时候的默认配置,参数不合理,需要优化参数配置。

  • 备份原配置文件
    cp dm.ini dm.ini.bak

  • 修改配置 修改如下几个关键参数,根据之前文章数据库优化-实例优化中的表格进行优化(ps:当前数据库内存 2G)

参数 优化建议 优化后的值,单位 M
MEMORY_POOL 建议为内存的 90% 1800
MEMORY_TARGET 建议为内存的 90% 1800
BUFFER 建议为内存的 60% 1200
MAX_BUFFER 建议为内存的 70% 1400
MAX_SESSIONS 1000
  • 重启数据库服务
    service DmServerdm restart

参数优化后我们尝试找出当前数据库存在的慢查询 SQL,看看是否可以优化。

慢 SQL 优化

达梦数据库不像 MySQL 可以直接将慢查询存放在指定位置,达梦需要通过 AWR 报告中找出慢查询。(AWR 报告大家自行百度)
启用 DM 快照需要调用 DBMS_WORKLOAD_REPOSITORY 包。

  • 使用 DBA 账户登录数据库
    disql SYSDBA/password

  • 创建 DBMS_WORKLOAD_REPOSITORY 系统包,开启 AWR 快照功能。
    SP_INIT_AWR_SYS(1);

  • 启用状态检测。
    SELECT SF_CHECK_AWR_SYS;

  • 设置 AWR 快照间隔时间(30 分钟)
    CALL DBMS_WORKLOAD_REPOSITORY.AWR_SET_INTERVAL(30);

  • 手动创建快照:
    DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();
    这里我们可以间隔几分钟多执行几遍创建几个不同的快照。

  • 查看创建的快照信息,包括快照 id:
    SELECT * FROM SYS.WRM$_SNAPSHOT; image.png

  • 查看 AWR 报告内容
    SELECT * FROM TABLE (DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_HTML(1,2));
    查看 snapshot 的 id 在 1~2 范围内的 AWR 分析报告的带 html 格式的内容。 image.png 这个内容格式基本没办法看,我们需要将其转化成 html 页面查看。

  • 生成 HTML 文件(需要先对 awr 文件夹授权)

    chmod 777 /awr
    SYS.AWR_REPORT_HTML(1,2,"/awr","awr1.html");
    

    代码100分

  • 通过 AWR 报告找出慢 SQL
    image.png SQL Ordered by Elapsed Time 的内容就是慢查询语句。
    在拿到慢查询语句后我们需要联系开发人员修改查询语句,这次优化过程中我通过给相关字段添加索引,改写一部分 SQL 完成。

    但是数据表本身设计不合理这个没有优化,由于设计不合理导致查询没办法走索引;而有些查询则需要从业务角度进行优化,比如是否有必要对大表进行全表查询然后再排序?等等等等。。。(至于数据库 SQL 优化的具体策略我们下期再聊)

在完成优化后重启应用,再次通过sar 10 3观察 CPU 性能,较优化前还是有不少的提升的,又可以抽空去抽根烟了。 image.png

欢迎关注我的个人公众号:JAVA日知录

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/11185.html

(0)
上一篇 2022-12-15
下一篇 2022-12-15

相关推荐

  • 共话开源数据库未来 【南京】openGauss Meetup[通俗易懂]

    共话开源数据库未来 【南京】openGauss Meetup[通俗易懂]活动主题:共话开源数据库未来 主办方:openGauss社区 承办方: 江苏鲲鹏·昇腾生态创新中心、南京集成电路大学、江苏北联国芯技术有限公司、北京海量数据技术股份有限公司、中软国际有限公司 时间:…

    2023-04-10
    111
  • 字节跳动陈志锋主要管_字节跳动难进吗

    字节跳动陈志锋主要管_字节跳动难进吗导读: 作为一种基础的数据结构,图数据的应用场景无处不在,如社交、风控、搜广推、生物信息学中的蛋白质分析等。如何高效地对海量的图数据进行存储、查询、计算及分析,是当前业界热门的方向。本文将介绍字节跳动

    2023-05-22
    109
  • 数据库-Redis「终于解决」

    数据库-Redis「终于解决」数据库-Redis 春宵一刻值千金,花有清香月有阴。 简介:数据库-Redis。 一、概述 Windows &Mac 安装Redis 参考链接:https://www.cnblogs.com/

    2023-04-19
    97
  • 人大金仓数据linux使用_人大金仓基于哪个开源

    人大金仓数据linux使用_人大金仓基于哪个开源docker中部署kingbase-es-v8-r6 概述 最近开发一个全景项目使用到了人大金仓数据库,这里介绍了拉取kingbase-es-v8-r6镜像并运行。 参考:https://github

    2023-05-14
    97
  • python之于java的异同(python 和 java 的区别)

    python之于java的异同(python 和 java 的区别)从语法上面的区分:Python版本的冒泡排序实现逻辑和Java版本冒泡排序实现逻辑几乎是相同,仅仅只有语法上有一定的区别。

    2023-11-18
    78
  • Python的起源: 英语语言的演化史

    Python的起源: 英语语言的演化史Python是一种高级语言,它可以被用于web开发、人工智能、数据科学、机器学习等领域。然而,在学习Python之前,了解它背后的起源和发展历程,可以帮助我们更好地理解它的设计哲学和语法结构。

    2024-02-01
    54
  • Python 字典中的 in 关键字用法

    Python 字典中的 in 关键字用法字典是Python中一种非常常用的数据类型,它可以用来存储非序列类型的数据,例如网络请求中的返回值。

    2024-02-26
    55
  • Python变量:管理你的数据

    Python变量:管理你的数据Python是一门强大的编程语言,用于解决各种问题。它可以用来创建各种类型的程序,包括Web应用程序、桌面应用程序、游戏、数据分析和科学计算。 Python有许多有用的特性,其中变量被认为是最强大和有用的特性之一。Python变量可以用来存储各种类型的数据。

    2024-02-17
    51

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注