RDS数据库优化设计系统

2018 年 11 月 15 日 运维帮
RDS数据库优化设计系统


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

01

介绍

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


02

入口及权限

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

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

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


03

详细介绍

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


表功能


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


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

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

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


列功能

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

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

    mysql支持的类型如下


    oracle支持的类型如下



索引

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


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

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

      

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

      

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

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

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


生成索引大致规则为:

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

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

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


04

保存/载入

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

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


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


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


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



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


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

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


05

结尾

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


欢迎分享

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

关注「网易乐得DBA

了解前沿数据库技术


登录查看更多
1

相关内容

数据库( Database )或数据库管理系统( Database management systems )是按照数据结构来组织、存储和管理数据的仓库。目前数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。
【ACL2020】利用模拟退火实现无监督复述
专知会员服务
13+阅读 · 2020年5月26日
【课程】纽约大学 DS-GA 1003 Machine Learning
专知会员服务
45+阅读 · 2019年10月29日
亿级订单数据的访问与存储,怎么实现与优化?
码农翻身
16+阅读 · 2019年4月17日
去哪儿网开源DNS管理系统OpenDnsdb
运维帮
21+阅读 · 2019年1月22日
可能是讲分布式系统最到位的一篇文章
InfoQ
8+阅读 · 2018年11月19日
机器学习在热门微博推荐系统的应用
人工智能头条
6+阅读 · 2018年1月25日
优化哈希策略
ImportNew
5+阅读 · 2018年1月17日
SCENE-一个可扩展两层级新闻推荐系统
全球人工智能
11+阅读 · 2018年1月7日
十分钟读懂python的“数据库”语言
Python技术博文
3+阅读 · 2017年11月9日
如何系统地学习数据挖掘?
数据库开发
10+阅读 · 2017年10月22日
大数据分析研究组开源Easy Machine Learning系统
中国科学院网络数据重点实验室
16+阅读 · 2017年6月13日
Arxiv
101+阅读 · 2020年3月4日
Arxiv
14+阅读 · 2019年11月26日
Arxiv
35+阅读 · 2019年11月7日
Few-shot Learning: A Survey
Arxiv
362+阅读 · 2019年4月10日
Arxiv
136+阅读 · 2018年10月8日
Arxiv
5+阅读 · 2018年5月1日
Arxiv
3+阅读 · 2012年11月20日
VIP会员
相关资讯
亿级订单数据的访问与存储,怎么实现与优化?
码农翻身
16+阅读 · 2019年4月17日
去哪儿网开源DNS管理系统OpenDnsdb
运维帮
21+阅读 · 2019年1月22日
可能是讲分布式系统最到位的一篇文章
InfoQ
8+阅读 · 2018年11月19日
机器学习在热门微博推荐系统的应用
人工智能头条
6+阅读 · 2018年1月25日
优化哈希策略
ImportNew
5+阅读 · 2018年1月17日
SCENE-一个可扩展两层级新闻推荐系统
全球人工智能
11+阅读 · 2018年1月7日
十分钟读懂python的“数据库”语言
Python技术博文
3+阅读 · 2017年11月9日
如何系统地学习数据挖掘?
数据库开发
10+阅读 · 2017年10月22日
大数据分析研究组开源Easy Machine Learning系统
中国科学院网络数据重点实验室
16+阅读 · 2017年6月13日
相关论文
Arxiv
101+阅读 · 2020年3月4日
Arxiv
14+阅读 · 2019年11月26日
Arxiv
35+阅读 · 2019年11月7日
Few-shot Learning: A Survey
Arxiv
362+阅读 · 2019年4月10日
Arxiv
136+阅读 · 2018年10月8日
Arxiv
5+阅读 · 2018年5月1日
Arxiv
3+阅读 · 2012年11月20日
Top
微信扫码咨询专知VIP会员