• 数据库向量化如何进行性能优化


    数据库向量化如何进行性能优化

    前面提到,数据库向量化是一个巨大的、系统的性能优化工程,两年来,我们实现了数百个大大小小的优化点。我将 StarRocks 向量化两年多的性能优化经验总结为 7 个方面 (注意,由于向量化执行是单线程执行策略,所以下面的性能优化经验不涉及并发相关):

    1. 高性能第三方库:在一些局部或者细节的地方,已经存在大量性能出色的开源库,这时候,我们可能没必要从头实现一些算法或者数据结构,使用高性能第三方库可以加速我们整个项目的进度。在 StarRcoks 中,我们使用了 Parallel Hashmap、Fmt、SIMD Json 和 Hyper Scan 等优秀的第三方库。

    2. 数据结构和算法:高效的数据结构和算法可以直接在数量级上减少 CPU 指令数。在 StarRocks 2.0 中,我们引入了低基数全局字典,可以通过全局字典将字符串的相关操作转变成整形的相关操作。如下图所示,StarRcoks 将之前基于两个字符串的 Group By 变成了基于一个整形的 Group By,这样 Scan、Hash 计算、Equal、Memcpy 等操作都会有数倍的性能提升,整个查询最终会有 3 倍的性能提升。

    3. 自适应优化:很多时候,如果我们拥有更多的上下文或者更多的信息,我们就可以做出更多针对性的优化,但是这些上下文或者信息有时只能在查询执行时才可以获取,所以我们必须在查询执行时根据上下文信息动态调整执行策略,这就是所谓的自适应优化。下图展示了一个根据选择

  • 相关阅读:
    从抓包砍到接口测试,五分钟看完全过程解析,还说你不会测试?
    游戏中的-雪花算法
    Windows 下使用 nmap ncat 命令测试 UDP 端口连接
    激励-保健理论和公平理论
    gitlab api使用入门
    VLAN间路由:单臂路由与三层交换
    嵌入式学习——3——UDP TFTP简易文件传输
    【JWT】JWT 整合
    Mybatisplus集成springboot完成分页查询
    普通web整合quartz跑定时任务
  • 原文地址:https://blog.csdn.net/feidodoxcx/article/details/127767861