网易乐得RDS数据库优化设计系统


RDS数据库优化设计系统


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

01

介绍

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


02

入口及权限

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

640?wx_fmt=jpeg

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

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


03

详细介绍

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

640?wx_fmt=jpeg


表功能


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

640?wx_fmt=jpeg


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

640?wx_fmt=jpeg

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

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

640?wx_fmt=jpeg


列功能

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

640?wx_fmt=jpeg

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

    mysql支持的类型如下

640?wx_fmt=jpeg


    oracle支持的类型如下

640?wx_fmt=jpeg


索引

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

640?wx_fmt=jpeg


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

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

640?wx_fmt=jpeg

      

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

640?wx_fmt=jpeg

      

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

640?wx_fmt=jpeg

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

640?wx_fmt=jpeg

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


生成索引大致规则为:

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

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

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


04

保存/载入

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

640?wx_fmt=jpeg

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

640?wx_fmt=jpeg


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

640?wx_fmt=jpeg


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

640?wx_fmt=jpeg


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

640?wx_fmt=jpeg


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

640?wx_fmt=jpeg


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

640?wx_fmt=jpeg

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


05

结尾

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


网易MySQL开源中间件Cetus

__________________________

github地址

https://github.com/Lede-Inc/cetus/blob/master/doc/cetus-quick-try.md

欢迎加star关注

社群

技术专家在线及时反馈

cetus开源qq群号: 521824702

cetus开源微信群:扫描网易DBA小助手加入

640?wx_fmt=png


640.gif?


加入知数堂

挑战40万+年薪!



640?640?640?640?


知数堂

叶金荣与吴炳锡联合打造

领跑IT精英培训

行业资深专家强强联合,倾心定制

MySQL实战/MySQL优化/MongoDB / Python/ SQL优化

数门精品课程

“阅读原文”可获更多正课试听视频

密码:hg3h

紧随技术发展趋势,定期优化培训教案

融入大量生产案例,贴合企业一线需求

社群陪伴学习,一次报名,可学1年

DBA、开发工程师必修课

上千位学员已华丽转身,薪资翻番,职位提升

改变已悄然发生,你还在等什么?

640.png?



640?wx_fmt=gif


640?wx_fmt=gif


加入QQ技术交流群

扫码加入知数堂4群-王者峡谷

(QQ群号:650149401)

      

640?wx_fmt=png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值