成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何掌握 OpenGauss 數據庫核心技術?秘訣之一:拿捏SQL引擎

運維 數據庫運維
數據庫的SQL引擎是數據庫重要的子系統之一,它對上負責承接應用程序發送過來的SQL語句,對下則負責指揮執行器運行執行計劃。其中優化器作為SQL引擎中最重要、最復雜的模塊,被稱為數據庫的“大腦”,優化器產生的執行計劃的優劣直接決定數據庫的性能。

 [[436755]]

本文轉載自微信公眾號「數據和云」,作者數據和云。轉載本文請聯系數據和云公眾號。

數據庫的SQL引擎是數據庫重要的子系統之一,它對上負責承接應用程序發送過來的SQL語句,對下則負責指揮執行器運行執行計劃。其中優化器作為SQL引擎中最重要、最復雜的模塊,被稱為數據庫的“大腦”,優化器產生的執行計劃的優劣直接決定數據庫的性能。

SQL引擎概覽

SQL引擎是數據庫系統重要組成部分,它的主要職責是負責將應用程序輸入的SQL在當前負載場景下生成高效的執行計劃,在SQL的高效執行上扮演重要角色。SQL在SQL引擎里執行過程,如圖7-1所示。

圖1 SQL執行流程

從圖7-1中可以看出,應用程序的SQL需要經過SQL解析生成邏輯執行計劃、經過查詢優化生成物理執行計劃,然后將物理執行計劃轉交給查詢執行引擎做物理算子的執行操作。

SQL解析通常包含詞法分析、語法分析、語義分析幾個子模塊。SQL語言是介于關系演算和關系代數之間一種描述性語言,它吸取了關系代數中一部分邏輯算子的描述,而放棄了關系代數中“過程化”的部分,SQL解析主要的作用就是將一個SQL語句編譯成為一個由關系算子組成的邏輯執行計劃。

描述語言的特點是規定了需要獲取的“WHAT”,而不關心“HOW”,也就是只關注結果而不關注過程,因此SQL語言描述性的特點導致查詢優化在數據庫管理系統中具有非常重要的作用。

查詢重寫則是在邏輯執行計劃的基礎上進行等價的關系代數變換,這種優化也可以稱為代數優化,雖然兩個關系代數式獲得的結果完全相同,但是它們的執行代價卻可能有很大的差異,這就構成了查詢重寫優化的基礎。

在早期的數據庫管理系統中,通常采用基于啟發式規則的方法來生成最優的物理執行計劃,但是這種基于規則的優化的靈活度不夠,常常導致產生一些次優的執行計劃,而代價估算的引入,則從根本上解決了基于規則優化的不足。

基于代價的優化器一方面生成“候選”的物理執行路徑,另一方面對這些執行路徑計算它們的執行代價,這樣就建立了執行路徑的篩選標準,從而能夠通過比較代價而獲得最優的物理執行計劃。

SQL解析

SQL語句在數據庫管理系統中的編譯過程符合編譯器實現的常規過程,需要進行詞法分析、語法分析和語義分析。

§ 詞法分析:從查詢語句中識別出系統支持的關鍵字、標識符、操作符、終結符等,每個詞確定自己固有的詞性。

§ 語法分析:根據SQL語言的標準定義語法規則,使用詞法分析中產生的詞去匹配語法規則,如果一個SQL語句能夠匹配一個語法規則,則生成對應的抽象語法樹(Abstract Syntax Tree,AST)。

§ 語義分析:對語法樹(AST)進行有效性檢查,檢查語法樹中對應的表、列、函數、表達式是否有對應的元數據,將抽象語法樹轉換為邏輯執行計劃(關系代數表達式)。

在SQL語言標準中,確定了SQL語言的關鍵字以及語法規則信息,SQL解析器在做詞法分析的過程中會將一個SQL語句根據關鍵字信息以及間隔信息劃分為獨立的原子單位,每個單位以一個詞的方式展現,例如有SQL語句:

  1. SELECT w_name FROM warehouse WHERE w_no = 1; 

可以劃分的關鍵字、標識符、操作符、常量等原子單位,如表7-1所示。

詞性

內容

關鍵字

SELECT、FROM、WHERE

標識符

w_name、warehouse、w_no

操作符

=

常量

1


表1 詞法分析的特征

語法分析會根據詞法分析獲得的詞來匹配語法規則,最終生成一個抽象語法樹(AST),每個詞作為語法樹的葉子結點出現,如圖7-2所示。

圖2 抽象語法樹

抽象語法樹表達的語義還僅僅限制在能夠保證應用的SQL語句符合SQL標準的規范,但是對于SQL語句的內在含義還需要做有效性的檢查。

§ 檢查關系的使用:FROM子句中出現的關系必須是該查詢對應模式中的關系或視圖。

§ 檢查與解析屬性的使用:在SELECT句中或者WHERE子句中出現的各個屬性必須是FROM子句中某個關系或視圖的屬性。

§ 檢查數據類型:所有屬性的數據類型必須是匹配的。

在有效性檢查的同時,語義分析的過程還是有效性語義綁定(Bind)的過程,通過語義分析的檢查,抽象語法樹就轉換成一個邏輯執行計劃,邏輯執行計劃可以通過關系代數表達式的形式來表現,如圖7-3所示。

圖3 關系代數表達式

 

責任編輯:武曉燕 來源: 數據和云
相關推薦

2021-07-28 07:53:20

C#.NET設計

2022-06-10 17:37:37

數據庫

2023-12-12 09:43:17

桌面開發Net消息機制

2020-12-10 11:00:37

JavaJVM命令

2022-07-06 15:50:04

數據計算

2024-10-08 10:44:32

2017-12-21 14:48:43

數據安全數據泄漏檢測技術

2011-03-30 13:24:23

SQL Server數故障修復

2010-04-19 15:09:10

Oracle數據庫

2020-12-11 13:27:12

大數據大數據技術

2019-04-30 13:54:55

大數據Hadoop數據清洗

2019-05-15 08:26:44

工業物聯網MQTT物聯網

2018-02-27 15:48:31

數據庫SQL鎖死

2019-03-05 14:57:21

大數據Hadoop框架

2009-03-19 09:30:59

2010-08-13 09:58:15

Gooele

2022-05-07 14:31:46

物聯網

2010-06-28 09:53:11

SQL Server數

2017-04-26 23:10:03

數據組織數據庫

2024-02-02 10:51:53

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一色桃子av一区二区 | 国产精品免费福利 | 国产乱码精品一区二区三区中文 | 欧美又大粗又爽又黄大片视频 | 成人精品一区亚洲午夜久久久 | 99久久久国产精品免费消防器 | 色爱av| 亚洲精品在线播放 | 99综合网 | 国产免费看| 国产精品一区二区不卡 | 欧美成年网站 | 亚洲精品大片 | 日韩综合一区 | 日韩精品一区二区三区免费视频 | 欧美一区二区黄 | 成人深夜福利 | 天天干com | 欧美亚洲日本 | 成年人在线观看视频 | 久久一二区| 国产一区二区三区在线 | 午夜视频一区二区 | 91直接看| 欧美一区二区在线播放 | 亚av在线 | av在线成人 | 免费性视频 | 国产精品成人国产乱一区 | 三级免费 | 99久热在线精品视频观看 | 中文在线一区二区 | 高清av一区 | 91免费观看视频 | 一区二区在线免费观看视频 | 狠狠干av| 色资源在线 | 日日干干| 亚洲婷婷六月天 | 五月天国产视频 | 久久精品国产99国产精品 |