diff --git a/content/zh/post/kangyang/opengauss-sql-1-update.md b/content/zh/post/kangyang/opengauss-sql-1-update.md index d4865389206c07dd4c213ccf6c793ab033eba60c..c1bdb8f84a221f88a2f5f78b367592ed58772b83 100644 --- a/content/zh/post/kangyang/opengauss-sql-1-update.md +++ b/content/zh/post/kangyang/opengauss-sql-1-update.md @@ -4,18 +4,18 @@ date = "2020-07-22" tags = ["openGauss数据库核心技术"] archives = "2020-07" author = "kangyang" -summary = "陆续介绍openGauss数据库的各项核心技术,包括SQL引擎、优化器、存储引擎、事务处理、数据库安全等。本期介绍openGauss SQL引擎技术" +summary = "以技术连载的方式陆续介绍openGauss数据库的各项核心技术,包括SQL引擎、优化器、存储引擎、事务处理、数据库安全等。本期开始介绍openGauss SQL引擎技术" img = "/zh/post/kangyang/title/title.jpg" -times = "10:30" +times = "17:30" +++ ### 前言 - openGauss是高斯数据库系列产品之一,其开源版本已在今年6月30日推出。接下来将陆续向大家介绍openGauss数据库的各项核心技术,包括SQL引擎、优化器、存储引擎、事务处理、数据库安全等。本期开始介绍openGauss SQL引擎技术。 + openGauss是高斯数据库系列产品之一,其开源版本已在今年6月30日推出。接下来将以技术连载的方式陆续向大家介绍openGauss数据库的各项核心技术,包括SQL引擎、优化器、存储引擎、事务处理、数据库安全等。本期开始介绍openGauss SQL引擎技术。 数据库的SQL引擎是数据库重要的子系统之一,它对上负责承接应用程序发送过来的SQL语句,对下则负责指挥执行器运行执行计划。其中优化器作为SQL引擎中最重要、最复杂的模块,被称为数据库的“大脑”,优化器产生的执行计划的优劣直接决定数据库的性能。本文将从SQL语句进入数据库开始,对SQL引擎的各个模块进行全面的说明。 -### SQL引擎概览 +### 1 SQL引擎概览 --- @@ -38,7 +38,7 @@ SQL解析通常包含词法分析、语法分析、语义分析几个子模块 基于代价的优化器一方面生成“候选”的物理执行路径,另一方面对这些执行路径计算它们的执行代价,这样就建立了执行路径的筛选标准,从而能够通过比较代价而获得最优的物理执行计划。 -### SQL解析 +### 2 SQL解析 SQL语句在数据库管理系统中的编译过程符合编译器实现的常规过程,需要进行词法分析、语法分析和语义分析。 @@ -104,7 +104,7 @@ SELECT w_name FROM warehouse WHERE w_no = 1; **图3 关系代数表达式** ![](figures/zh-cn_image_0262916295.png) -### 查询优化 +### 3 查询优化 SQL语句在编写的过程中,数据库应用开发人员通常会考虑以不同的形式来编写SQL,来达到提升执行性能的目的,那么为什么还需要查询优化器来对SQL进行优化呢?这是因为一个应用程序可能会涉及到大量的SQL语句,而且有些SQL语句的逻辑极为复杂,数据库开发人员很难面面俱到的写出高性能语句,而查询优化器则具有一些独特的优势: @@ -130,7 +130,7 @@ SQL语句在编写的过程中,数据库应用开发人员通常会考虑以 近年来AI技术,特别是在深度学习领域,发展迅速,基于机器学习的优化器在建模效率、估算准确率和自适应性等方面都有很大优势,有望打破RBO和CBO基于静态模型的限制,通过对历史经验的不断学习,将目标场景的模式进行抽象化,形成动态的模型,自适应地针对用户的实际场景进行优化。openGauss采用基于CBO的优化技术,另外在ABO方面也在进行积极探索。 -#### **查询重写** +#### **3.1 查询重写** 查询重写利用已有语句特征和关系代数运算来生成更高效的等价语句,在数据库优化器中扮演关键角色,尤其在复杂查询中,能够在性能上带来数量级的提升,可谓是“立竿见影”的“黑科技”。本节介绍查询重写的基本概念、常见的查询重写技术、查询重写面临的挑战。