RDS数据库优化设计系统

Posted 运维帮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RDS数据库优化设计系统相关的知识,希望对你有一定的参考价值。

RDS数据库优化设计系统


对于DBA来说,建表、建索引以及迁移表结构等等,可能就是小菜一碟,但是对开发、产品和测试等来说,可能就比较麻烦了。RDS数据库优化设计的目的就是解决这些问题的。

01

介绍

      RDS数据库优化设计系统是在wwwsqldesigner(一个图形化数据库设计工具)的基础上,修改、扩充很多功能得到的。前端界面使用VUE开发,后台是Django。


02

入口及权限

     首先如何进入RDS数据库优化设计呢?

      在RDS的数据库信息中,通过每个DB后面的优化设计按钮即可进入对应数据库DB的优化设计系统中。

      DBA用户可以进入任何RDS实例的任何DB,而其他人员只能进入自己所在组的RDS测试实例的DB。


03

详细介绍

      下图是RDS数据库优化设计系统的工作界面,主要由工作界面和右侧的菜单栏组成。类似于mysql workbench,提供了基本的新建、修改、删除表等功能,全部通过可视化操作。这一部分我们从表、列、索引三部分介绍

RDS数据库优化设计系统


表功能


     新建一个表,默认会有一个id列和索引名为pk的主键,如下图

RDS数据库优化设计系统


      双击表名或者点击修改表即可编辑表信息

RDS数据库优化设计系统

      表名、注释等就不解释了,查询条件是用户输入常用的查询组合,我们稍后再讲。

      分区键是建分区表,目前只支持mysql的range类型

RDS数据库优化设计系统


列功能

     双击要修改的列或者点击修改列,即可进入列编辑功能

RDS数据库优化设计系统

      系统会根据用户进入的RDS实例类型自动调整列类型,目前只支持mysql与oracle数据库。

    mysql支持的类型如下

RDS数据库优化设计系统


    oracle支持的类型如下

RDS数据库优化设计系统


索引

      双击要修改的索引或者点击设置索引,即可进入索引编辑功能

RDS数据库优化设计系统


     索引类型支持PRIMARY,INDEX,UNIQUE,FULLTEXT。此外还可通过建议功能来建立索引,即通过输入常用的查询条件生成索引。

     具体如下,首先我们新建一个包含多列的表Table2

RDS数据库优化设计系统

      

      数据量10W,增长量1000。添加几个常用查询条件组合,添加的界面如下

RDS数据库优化设计系统

      

      例如某些常用的sql中,where后面的组合为(col1,col2,col3),(col2,col3),(col2),添加后如下

RDS数据库优化设计系统

      查询条件中出现的列需要选择列区分度,选项为唯一、高、中、低,我们全部选为中,确定后点击建议,即可生成索引

RDS数据库优化设计系统

如上图,生成了一个col2,col3的组合索引。


生成索引大致规则为:

       查询条件中包含列区分度唯一或高的,随机选择区分度唯一或高的列建单列索引

       查询条件中不包含区分度唯一或高的列,选择其中区分度为中的所有列进行排列组合,得到此查询条件所有可能的索引。然后将所有查询条件的所有索引进行整合,相同索引或者满足最左前缀原则索引的相加,得到各个索引的累积查询频率总和以及在查询条件中出现的次数。最后按照查询频率总和、查询条件中出现的次数将所有索引排序,从中挑选出能够覆盖到所有查询条件的索引组合。

       索引建议会将表已有索引一并处理。


04

保存/载入

    此部分功能主要是为了满足开发中遇到的一些普遍需求

RDS数据库优化设计系统

      对于一些相似的产品或者业务,其数据库中的表结构往往差异不是很大,这时候用户可以先编辑一份通用模版,保存到服务端。当开发相似产品时,只需要导入通用模版,并在模版上做少部分修改即可。

RDS数据库优化设计系统


      如果要开发的新产品数据库表结构与线上某些业务的表结构很相似,但是又没有通用的模版,可以通过载入线上库来直接导入需要的表。

RDS数据库优化设计系统


      例如需要开发一款保险类的新产品,可以直接将原先的线上保险数据库中的表结构导出

RDS数据库优化设计系统


      另外我们还支持非同类型数据库的表结构导入。例如用户开发的新产品是在RDS的mysql实例上,而相似的产品业务数据库是在RDS的oracle实例上,这种情况也可以直接导入,RDS数据库优化设计系统会对列字段、索引自动进行转换。目前支持oracle与mysql数据库的互相转换,但也存在部分不支持的情况,例如oracle的函数索引等等。下图为在mysql数据库中导入oracle表

RDS数据库优化设计系统


      还可以将工作内容转换为SQL

RDS数据库优化设计系统


      服务端部分的测试、测试提交与强行提交是检测sql中是否存在不符合要求的问题。例如

RDS数据库优化设计系统

结果显示需要为Table2填写表注释、id列要修改为int或bigint类型。


05

结尾

      数据库优化设计系统旨在方便非DBA用户操作,目前对某些功能的支持还不是特别完善,后续会根据用户反馈进行修补更新。


欢迎分享

网易乐得DBA组负责网易乐得电商、网易邮箱、网易技术部数据库日常运维,负责数据库私有云平台的开发和维护,负责数据库及数据库中间件的开发和测试等,分享最前沿实用数据库干货,关注网易乐得DBA,精修数据库功底。

关注「网易乐得DBA

了解前沿数据库技术


以上是关于RDS数据库优化设计系统的主要内容,如果未能解决你的问题,请参考以下文章

阿里云 RDS MySQL 数据库 性能优化与诊断

阿里云RDS PostgreSQL时序数据的优化

MySQL 优化

Redis的KEYS命令引起RDS数据库雪崩,RDS发生两次宕机,造成几百万的资金损失

数据库优化

mysql数据库优化