排行
数据库百科
核心案例
行业报告
月度解读
大事记
产业图谱
中国数据库
向量数据库
时序数据库
实时数据库
搜索引擎
空间数据库
图数据库
数据仓库
大调查
2021年报告
2022年报告
年度数据库
2020年openGauss
2021年TiDB
2022年PolarDB
2023年OceanBase
首页
资讯
活动
大会
学习
课程中心
推荐优质内容、热门课程
学习路径
预设学习计划、达成学习目标
知识图谱
综合了解技术体系知识点
课程库
快速筛选、搜索相关课程
视频学习
专业视频分享技术知识
电子文档
快速搜索阅览技术文档
文档
问答
服务
智能助手小墨
关于数据库相关的问题,您都可以问我
数据库巡检平台
脚本采集百余项,在线智能分析总结
SQLRUN
在线数据库即时SQL运行平台
数据库实训平台
实操环境、开箱即用、一键连接
数据库管理服务
汇聚顶级数据库专家,具备多数据库运维能力
数据库百科
核心案例
行业报告
月度解读
大事记
产业图谱
我的订单
登录后可立即获得以下权益
免费培训课程
收藏优质文章
疑难问题解答
下载专业文档
签到免费抽奖
提升成长等级
立即登录
登录
注册
登录
注册
首页
资讯
活动
大会
课程
文档
排行
问答
我的订单
首页
专家团队
智能助手
在线工具
SQLRUN
在线数据库即时SQL运行平台
数据库在线实训平台
实操环境、开箱即用、一键连接
AWR分析
上传AWR报告,查看分析结果
SQL格式化
快速格式化绝大多数SQL语句
SQL审核
审核编写规范,提升执行效率
PLSQL解密
解密超4000字符的PL/SQL语句
OraC函数
查询Oracle C 函数的详细描述
智能助手小墨
关于数据库相关的问题,您都可以问我
精选案例
新闻资讯
云市场
登录后可立即获得以下权益
免费培训课程
收藏优质文章
疑难问题解答
下载专业文档
签到免费抽奖
提升成长等级
立即登录
登录
注册
登录
注册
首页
专家团队
智能助手
精选案例
新闻资讯
云市场
微信扫码
复制链接
新浪微博
分享数说
采集到收藏夹
分享到数说
首页
/
从SIMD与AVX-512说起
从SIMD与AVX-512说起
白鳝的洞穴
2023-05-31
1225
昨天提到了PG 16开始支持SIMD了,并且我也说了很多数据库早就开始使用SIMD来充分利用CPU厂商提供的扩展指令集,特别是INTEL的AVX-512。很多DBA可能不太关注硬件,因为数据库虽然依赖于某些硬件平台,但是可以 相对独立的运行,在大多数情况下,DBA不太需要去关注硬件的细节。不过随着现代硬件的不断发展,数据库与硬件的结合越来越紧密,数据库产品也会充分的利用现代硬件的特性来加速某些任务。比如说通过对SIMD的支持来加速运算速度,从而提高行列转换,数据压缩,加解密等方面的性能。甚至有些数据库产品已经开始支持使用GPU的算力来进一步提高这些任务的性能。
AVX-512是Intel在2013年提出的一组512位扩展指令集,用于x86指令集架构(ISA)的高级向量扩展(Advanced Vector Extensions,SIMD)指令。它可以加速诸如科学模拟、金融分析、人工智能/深度学习、3D建模和分析、图像和音频/视频处理、加密和数据压缩等工作负载和用例的性能。通过SIMD,数据库产品可以调用AVX-512、SSE等扩展指令集的功能,同样也可以使用ARM芯片上的ASIMD、SVE2等指令集来达到类似的效果。
近些年GPU火起来了,在科学计算上GPU有着CPU无法比拟的性能。GPU通常拥有更多的计算单元和更高的内存带宽,因此在处理大规模的数据并行计算时,GPU的性能优势很明显。例如,在深度学习领域,GPU可以比CPU快几十倍甚至上百倍。SIMD的主要目的是利用一个指令同时对多个数据进行相同的操作,从而实现空间上的并行性和提高程序的运算速度。SIMD可以利用一组指令对多组数据通进行并行操作,如加法、乘法、比较等。SIMD可以应用于图像/音视频处理、数据分析、科学计算、数据加密和压缩和深度学习等大规模运算需求的应用场景。通过SIMD,可以让CPU在这方面的劣势得到一定程度的弥补。在使用AVX512指令集进行浮点数加法运算时,可以一次对8个双精度浮点数或16个单精度浮点数进行操作,相比于标量运算,可以提高8倍或16倍的性能。
虽然没有做过多的宣传,不过Oracle数据库很早就开始使用SIMD指令集做一些计算任务。在内存列存储中,使用SIMD指令集对数据进行压缩、解压缩、扫描、过滤、聚合等操作;在哈希连接中,使用SIMD指令集对数据进行哈希、构建、探测、收集等操作;在向量化表达式计算中,使用SIMD指令集对数据进行算术、逻辑、比较等操作。这些操作都可以提高Oracle数据库的性能和效率。
在其他数据库中,也有很多使用了SIMD来提高计算类任务的性能。比如TiDB也是比较早使用SIMD的数据库产品。最典型的是在TiFlash上,在表达式计算中,使用了SIMD指令集来加速向量化计算,提高了表达式的执行效率;在编码和解码中,使用了SIMD指令集来加速数据的压缩和解压缩,减少了数据传输和存储的开销;在哈希函数中,使用了SIMD指令集来加速哈希值的计算,提高了哈希表的性能;在排序算法中,使用了SIMD指令集来加速数据的比较和交换,提高了排序的效率。
Oceanbase也比较重视将向量化引擎引入数据库,利用SIMD来提升一些复杂分析类任务的性能。提高数据库单核计算性能,降低查询响应时间数据库来说至关重要。为帮助客户解决 HTAP 混合负载下数据查询效率难的问题,OceanBase 引入向量化技术设计了向量化查询引擎,实现了 HTAP 场景下复杂分析查询性能的大幅提升。在 TPC-H 30TB 测试场景下,OceanBase 向量化引擎的性能是非向量化的 3 倍。对于 Q1 这种聚合分析且计算密集的 SQL 查询,性能提升约 10 倍。测试结果可以证明,向量化引擎对提升 SQL 执行效率、降低用户的查询响应时间具有相当明显的效果。
上面这张图来自于Oceanbase官方,并非我们自己的测试结果,从中可以看出向量化引擎的效果还是相当好的。目前引入向量化计算,更好的利用现代CPU的能力已经是广大数据库厂商的共识。对于数据库厂商和用户来说,这都是一件好事情,不过对于广大DBA来说,不能算是好事情。因为一个数据库产品,在CPU类型不同的服务器上,甚至在相同架构,但是存在代差的服务器上,可能跑出来的性能会差异较大,这会让人十分蒙圈。这年头,干DBA也真是一件十分苦逼的事情。
数据库
指令集
数据库性能
文章转载自
白鳝的洞穴
,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
领墨值
有奖问卷
意见反馈
客服小墨