暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

从小米汽车发布会到国产数据库DDL的极致优化

311


今天最火的话题,无疑是小米汽车的发布会。我也几乎全程观看了雷总的视频号,实际上我本人并不是小米粉丝,因为我从来没有用过小米手机,以前市场部送过给我一个小米音响,用了几年感觉还不错。

前段时间我和家人约了小孩家长一起出游看油菜花,没想到他们使用小米14拍出来的照片完全吊打我的iphone,我被震惊到了。从发布会来看总结就几个字:性能、安全、智能、生态、极致性价比!

既然我们都追求极致,那么对于数据库而言,作为DBA的我们都知道,DDL操作对于数据库而言,都是一个比较大的操作,尤其是在Oracle数据库中,曾经吃了很多DDL操作方面的亏,简直苦不堪言,好在Oracle 12c之后,Oracle基本上解决了这个问题。那么主流的国产数据库呢?在这个细节上面处理究竟如何?因此这里我们就简单分别测下达梦、OceanBase以及MogDB在大表加列、删列方面的对比。

这里首先给自己的课程插入一个小广告,希望对大家学习Oracle和国产数据库有帮助,能把一些理论运用到国产数据库上。这是第一章节的最后一个小节 Oracle异常恢复实战第6讲 - 你不一定会手工重建Controlfile (点开即可订阅) 后面还有10个章节!之前有很多网友让我弄个大纲,昨晚抽了20分钟大概梳理了一个大纲,供大家参考!

好了,好了。我们要进入正题了。



           「OceanBase 大表DDL」

首先我这里构造了一个1700万的表,对于我这个测试环境来讲差不多够了。

测试数据构造完毕后,我们就来看看OceanBase的具体表现。

我们可以看到OceanBase在大表的加列、删列方面表现非常给力,毫秒级别。


               「 达梦数据库DDL表现」

达梦数据库作为目前主流的集中式数据库代表,是必须要测一下吧;之所以要测,是因为昨晚我发现我对达梦之前的一些理解有些偏差,因此才有了这个简单模拟验证。

最开始我直接测试发现确实很慢,查官方文档发现有一些细节没有把握到,于是进行了重新测试。达梦数据库引入了一个参数来控制针对大表加列,删列等DDL操作的优化。如下:

为了进一步验证该参数的实际作用,我这里分别做了详细的测试记录。
当参数设置为1时,无论是加列还是删列,都是奇慢无比,简直无法忍受。

进一步测试了参数为2和3的情况,发现有所改变。

从上面的测试我们可以发现,当参数设置为2时,如果加列没有默认值,还是很快的,如果有默认值就很慢了。当参数设置为3时,即使加列时带默认值也非常快。但是无论是哪种设置,我发现drop column的操作仍然是很慢很慢。


                 「MogDB数据库大表DDL」

既然是对比,那就必须要测一下自家的数据库,看看这块儿的表现了。这里我使用了MogDB 5.0.6版本,也就是我们即将在本月底发布的最新版本。这里我就用之前构造的测试表吧,数据量也不小,超过2000万条了。废话不多说,直接上测试过程。

可以看到,MogDB在这方面表现还是很不错的,速度也非常给力,都在毫秒级完成了DDL操作。


写在最后,如果大家对MogDB有兴趣或者想了解更新技术相关文章,可以关注MogDB的公众号,后续也会有一系列技术文章和视频推出!(写的不好,不要喷小编,因为我就是小编)!



                

如需了解更多详情如白皮书、异构数据迁移方案等请移步www.mogdb.io

如果你是软件开发商申请数据库适配,请联系市场营销marketing@enmotech.com




文章转载自Roger的数据库专栏,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论