数据库系统作为数据存储与处理的基础设施,其性能对现代社会的运行效率具有重要影响.随着内存技术的进步及SSD(solid state drive)的广泛应用,磁盘数据库的性能瓶颈逐渐转向CPU的利用率和内存管理的优化.现代数据库系统通常采用解释执...数据库系统作为数据存储与处理的基础设施,其性能对现代社会的运行效率具有重要影响.随着内存技术的进步及SSD(solid state drive)的广泛应用,磁盘数据库的性能瓶颈逐渐转向CPU的利用率和内存管理的优化.现代数据库系统通常采用解释执行的方式处理查询,造成了大量虚函数调用、上下文切换和高速缓存未命中,不能充分发挥现代CPU的流水线和缓存机制,导致低效的查询执行效率,尤其是在大数据量和复杂查询的场景中表现更为明显.为了解决上述问题,针对传统数据库解释执行提供若干JIT(just-in-time)编译优化方案,并在MySQL数据库中进行验证.首先给出利用LLVM(low level virtual machine)编译器将SQL谓词在运行时转换为机器码的方案代替解释执行,以减少虚函数调用和系统上下文切换的开销.接着提出混合编译与解释执行的方案,扩展了JIT编译执行的适用范围.最后针对日益流行的可插拔数据库系统架构设计了一种将JIT机器码推送至存储引擎层的查询下推方案,避免不必要的数据传输和计算开销.实验结果表明,启用JIT编译后,MySQL的查询性能显著提升,尤其在处理复杂查询和大数据量的场景,JIT编译系统能够有效降低解释执行带来的开销,显著提高系统的响应速度和吞吐量.在类TPC-H的测试中,对比原生MySQL,采用JIT编译执行的系统性能提升可达148%.展开更多