自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

SQL 語句是怎么執(zhí)行的?

數(shù)據(jù)庫 其他數(shù)據(jù)庫
解析器將語法樹交給查詢優(yōu)化器。查詢優(yōu)化器的任務是優(yōu)化 SQL 查詢的執(zhí)行方式,生成一個執(zhí)行計劃。執(zhí)行計劃決定了數(shù)據(jù)庫如何從存儲中讀取數(shù)據(jù)、如何連接不同的表、如何使用索引等。

數(shù)據(jù)庫中如何執(zhí)行 SQL 語句?

下圖顯示了這一過程。請注意,不同數(shù)據(jù)庫的架構各不相同,下圖展示了一些常見的設計。

圖片圖片

第 1 步 - 通過傳輸層協(xié)議(如 TCP)向數(shù)據(jù)庫發(fā)送 SQL 語句。

第 2 步 - 將 SQL 語句發(fā)送到命令解析器,在那里進行語法和語義分析,然后生成查詢樹。

第 3 步 - 將查詢樹發(fā)送給優(yōu)化器。優(yōu)化器會創(chuàng)建一個執(zhí)行計劃。

生成執(zhí)行計劃:解析器將語法樹交給查詢優(yōu)化器。查詢優(yōu)化器的任務是優(yōu)化 SQL 查詢的執(zhí)行方式,生成一個執(zhí)行計劃。執(zhí)行計劃決定了數(shù)據(jù)庫如何從存儲中讀取數(shù)據(jù)、如何連接不同的表、如何使用索引等。優(yōu)化器會嘗試選擇最有效的執(zhí)行路徑,可能會考慮以下因素:

  • 使用索引掃描(index scan)。
  • 如何連接表(如使用 nested loop join、hash join、merge join 等)。
  • 選擇不同的操作順序。

成本估算:優(yōu)化器基于數(shù)據(jù)庫的統(tǒng)計信息(如表的大小、索引的選擇性等)來估算不同執(zhí)行計劃的成本,選擇最優(yōu)的方案。

第 4 步 - 將執(zhí)行計劃發(fā)送給執(zhí)行器。執(zhí)行過程中,數(shù)據(jù)庫會根據(jù)需要訪問磁盤或緩存中的數(shù)據(jù)。如果查詢需要使用索引,數(shù)據(jù)庫會通過索引訪問數(shù)據(jù);如果查詢沒有使用索引,可能會進行全表掃描。

第 5 步 - 訪問方法提供執(zhí)行所需的數(shù)據(jù)獲取邏輯,從存儲引擎獲取數(shù)據(jù)。

第 6 步 - 訪問方法決定 SQL 語句是否只讀。如果查詢是只讀的(SELECT 語句),則將其傳遞給緩沖區(qū)管理器進行進一步處理。緩沖區(qū)管理器會在緩存或數(shù)據(jù)文件中查找數(shù)據(jù)。

第 7 步 - 如果語句是 UPDATE 或 INSERT,則將其傳遞給事務管理器作進一步處理。

第 8 步 - 在事務處理期間,數(shù)據(jù)處于鎖定模式。這是由鎖管理器保證的。它還能確保事務的 ACID 屬性。

責任編輯:武曉燕 來源: ByteByteGo
相關推薦

2023-12-27 09:32:47

SQL語句數(shù)據(jù)

2022-07-28 09:13:30

MySQL數(shù)據(jù)庫

2022-04-10 23:42:33

MySQLSQL數(shù)據(jù)庫

2022-02-11 14:43:53

SQL語句C/S架構

2010-09-03 14:47:50

SQLSELECT語句

2010-09-25 14:59:54

SQL語句

2024-12-17 06:20:00

MySQLSQL語句數(shù)據(jù)庫

2010-04-29 14:06:40

Oracle SQL

2021-07-28 07:22:40

SQL順序Hive

2019-11-06 09:30:35

SQL查詢語句數(shù)據(jù)庫

2010-09-25 16:21:41

SQL語句

2010-11-04 09:43:46

LINQ to SQL

2011-07-21 13:44:52

MySQLmysqldumpsl

2013-10-29 16:27:23

MySQLSQL語句

2010-03-31 15:03:54

Oracle執(zhí)行

2021-06-07 08:37:03

SQL 查詢語句

2010-09-06 13:17:19

SQL Server語句

2010-09-07 11:41:24

SQL語句

2022-11-07 08:10:39

MySQL二分法查找

2011-03-21 15:39:31

LAMPPHPSQL
點贊
收藏

51CTO技術棧公眾號