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

如何实现100%的MySQL兼容性

芬芳 2023-09-14
168

通过一套白名单机制来实现兼容性。 使用白名单机制是基于如下几点考量。

  • 系统可用资源(主要是内存)限制。
    一般情况下,不会为数据库中全部表的所有列上都创建列索引。当一条查询语句中使用到的列没有在列存中存在时,其不能在列存上执行。
  • 性能。
    重写一套面向列存的SQL执行引擎,包括所有的物理执行算子和表达式计算,其所覆盖的场景相对MySQL原生行存能够支持的范围有欠缺。当下发的SQL语句中包含一些列存索引不支持的算子片段或者列类型时,需要能够识别拦截并切换回行存执行。
    image.png
    目前,白名单规则校验的内容包含SQL语句中的数据类型、算子、计算表达式以及其他场景。其他场景如不支持multi statement等。
    MySQL已经发展了数十年,其支持的各种列类型和SQL语法非常丰富。在IMCI中,初期重点优化在分析型查询语句中最常见的SQL性能问题。即使适用场景有所限制,IMCI能够运行的SQL语法对MySQL功能的兼容性也远超绝大部分OLAP系统。对于那些不能在列存上执行的SQL,则直接回退到MySQL原生执行引擎,因此实现了100%的MySQL兼容。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论