使用DAS实现数据库SQL优化

更新时间:
复制为 MD 格式

本实验介绍如何通过数据库自治服务DASRDS MySQL高可用实例进行SQL优化,包含购买RDS实例并创建数据库、数据导入、生成并优化慢SQL、执行优化后的SQL语句等实验步骤。

场景简介

本实验介绍如何通过数据库自治服务DASRDS MySQL高可用实例进行SQL优化,包含购买RDS实例并创建数据库、数据导入、生成并优化慢SQL、执行优化后的SQL语句等实验步骤。

背景知识

本场景主要涉及以下云产品和服务:

  • 数据库自治服务DAS

    数据库自治服务(Database Autonomy Service,简称DAS)是一种基于机器学习和专家经验实现数据库自感知、自修复、自优化、自运维及自安全的云服务,帮助用户消除数据库管理的复杂性及人工操作引发的服务故障,有效保障数据库服务的稳定、安全及高效。

    当遇到慢日志情况时,您可以使用DAS提供的SQL优化功能并查看诊断结果、优化建议和预期优化收益,您可以根据诊断结果确认是否采纳建议。

  • 云数据库RDS MySQL

    云数据库RDS MySQL版基于阿里巴巴的MySQL源码分支,经过双十一高并发、大数据量的考验,拥有优良的性能。RDS MySQL支持实例管理、账号管理、数据库管理、备份恢复、白名单、透明数据加密以及数据迁移等基本功能,还支持读写分离、SQL审计、多可用区集群等高级功能。

前提条件

云起实验室将在您的账号下开通本次实操资源,资源按量付费,需要您自行承担本次实操的云资源费用。

重要

本实验预计产生费用1.2元。如果您调整了资源规格、使用时长,或执行了本方案以外的操作,可能导致费用发生变化,请以控制台显示的实际价格和最终账单为准。

进入实操前,请确保阿里云账号满足以下条件:

  • 已通过实名认证并且账户余额充足。

  • 云资源产生的费用需您自行承担,云起实验室不会向您征收额外费用。

  • 所有实验操作将保留至您的账号,请谨慎操作。

  • 实操结束后,您可以选择继续付费保留资源,或参考手册自动/手动释放资源。

创建专有网络VPC和交换机

  1. 在实验页面,勾我已阅读并同意《阿里云云起实践平台服务协议》后,单击进入实操

    image

  2. 登录专有网络管理控制台(可单击蓝色字体直接进入控制台)。

  3. 在左侧导航栏中,单击专有网络

    image

  4. 专有网络页⾯,在右上角切换⾄华东1(杭州)地域,单击创建专有网络

    Image 29.png

  5. 创建专有网络页⾯,根据下方参数说明配置1个专有网络(VPC)和1台交换机,然后单击确定。更多关于创建专有网络和交换机信息,详情请参见创建和管理专有网络

    配置项

    说明

    专有网络

    地域

    选择华东1(杭州)。

    名称

    自定义名称。

    IPv4网段

    选择手动输入IPv4地址段。

    输入IPv4网段

    输入IPv4网段,建议您使用RFC私网地址作为专有网络的网段如10.0.0.0/8172.16.0.0/12192.168.0.0/16

    交换机

    名称

    自定义名称。

    可用区

    选择杭州可用区B。

    IPv4网段

    使用默认的IPv4网段即可。

    Image 21.png

    image

  6. 创建专有网络页面,您可查看到创建的专有网络VPC和交换机的ID实例名称等信息。

    image

购买RDS实例并创建数据库

  1. 购买RDS MySQL高可用通用云盘。

    1. 进入RDS售卖,根据如下参数选购后,都选相应协议单击去支付

      属性

      参数

      计费方式

      按量计费

      地域

      华东1(杭州)

      引擎

      MySQL 8.0

      产品系列

      高可用

      产品类型

      标准版

      存储类型

      通用云盘

      网络类型

      专有网络

      VPC

      选择刚刚创建的VPC

      部署方案

      多可用区部署

      实例规格

      mysql.n2.medium.2c

      存储空间

      20G

      image

      image

      image

      image

  2. 创建数据库高权限账号。

    1. 登录RDS控制台,等待实例创建完成后,单击实例ID进入实例详情。

      image

    2. 单击左侧列表的账号管理 > 创建账号。在创建账号对话框中自定义账号名称和密码,账号类型为高权限账号后,单击确定

      image

    3. 单击左侧列表的数据库管理 > 创建数据库。在创建数据对话框中输入数据名称为sampledb,选择支持字符集为utf8mb4,单击创建

      image

数据导入

  1. 单击左侧列表的参数设置,将long_query_time的参数值设置为0.1(可在搜索框中搜索参数名,更快定位参数)。

    image

  2. 修改完成后,单击提交参数。在修改参数对话框中,选择立即生效,单击确定

    重要

    该参数设置后,需要重启会话才能生效。因此如果先执行了登录数据库等其它步骤,在设置该参数后,需重新刷新DMS页面才能生效。

    image

    image

  3. 单击登录数据库按钮,输入数据库账号和密码进行登录。

    image

  4. 复制如下链接至浏览器中,下载文件sampledb.sql

    说明

    下载文件后,您可以通过在本地终端输入以下命令来检查文件的MD5哈希值,以确认其安全性。(sampledb.sql文件MD5哈希值为53348ab96c68051efa7b181eb8acec00

    • MAC :md5 文件路径/sampledb.sql

    • Windows:certutil -hashfile "文件路径/sampledb.sql" MD5

    https://developer-labfileapp.oss-cn-hangzhou.aliyuncs.com/database/sampledb.sql

    sql表示一家拥有五十万名员工的公司,其办事处位于四个城市,分别是纽约、旧金山、波士顿和洛杉矶。每位员工都会被分配到一些项目中工作。为了管理这些关系,我们需要使用员工表和项目分配表,具体结构如下所示。

    image

  5. 单击左侧列表的常用功能 > 数据导入,选择新创建的sampledb数据库,单击上传文件,选择刚刚下载的sampledb.sql文件,单击提交申请

    image

  6. 单击执行变更,在任务设置对话框中选择立即执行,单击确定执行,可将库表结构、实例数据导入到数据库中。

    image

生成并优化慢SQL

  1. 单击左侧数据库实例选项卡,选择sampledb数据库。执行如下命令,查询驻扎在纽约、参与8号项目且年薪超过十万元的员工数量。

    SELECT COUNT(*) AS employee_count
    FROM employees e
    JOIN projects p ON e.employee_id = p.employee_id
    WHERE e.city = '纽约'
      AND p.project_name = 'Project_8'
      AND e.salary > 100000;

    image

    执行之后,在控制台下方的执行列表可以看到实际执行时间。

    说明

    可单击执行列表右上角刷新按钮查看,执行结果状态。

    image

  2. 登录DAS控制台,单击左侧列表的实例监控 > MySQL,找到目标实例单击实例ID进入详情。

    image

  3. 单击左侧列表的请求分析 > 慢日志,查看慢日志明细,并单击优化按钮。

    image

  4. 查看优化预期效果。在合理的等待(15s内),会直接显示优化建议,这里提出了一个增加索引的建议并进行复制。根据模型计算,预期性能将提升12倍。

    image

执行优化后的SQL语句

  1. 返回DMS控制台。将复制的行存索引建议,粘贴SQLConsole中单击image执行按钮。在弹出的变更确认对话框中单击直接执行

    image

  2. 再次执行SELECT语句后,进入执行列表查看耗时,可见实际执行效率提升了26倍。

    image

清理资源

  • 在完成实验后,如果无需继续使用资源,请根据以下步骤,先删除相关资源后,再结束实操,否则资源会持续运行产生费用。

    • 删除云数据库RDS。

      1. 登录云数据库RDS控制台

      2. 在左侧导航栏中,单击实例列表。找到目标实例,单击右侧的更多 > 释放实例

        image

      3. 释放实例对话框中选择不保留备份文件,单击确定

        image

    • 删除VPC和交换机。

      1. 登录专有网络管理控制台

      2. 在左侧导航栏中,单击交换机

        image

      3. 单击交换机右侧的删除按钮。

        image

      4. 在弹出的删除交换机对话框中,单击确定

        image

      5. 重复上述动作,删除另一台交换机。

      6. 在左侧导航栏中,单击专有网络

        image

      7. 单击VPC右侧删除按钮。

        image

      8. 在删除专有网络对话框中,单击确定

        image

    • 删除相关资源后,单击结束实操。在结束实操对话框中,单击确定

      image

  • 在完成实验后,如果需要继续使用资源,您可跳过释放相关资源的操作,直接单击结束实操。在结束实操对话框中,单击确定。请随时关注账户扣费情况,避免发生欠费。

    image