主頁 > 資料庫 > 一條SQL如何被MySQL架構中的各個組件操作執行的?

一條SQL如何被MySQL架構中的各個組件操作執行的?

2023-05-05 09:42:46 資料庫

摘要:一條SQL如何被MySQL架構中的各個組件操作執行的,執行器做了什么?存盤引擎做了什么?表關聯查詢是怎么在存盤引擎和執行器被分步執行的?本文帶你探探究竟!

本文分享自華為云社區《一條SQL如何被MySQL架構中的各個組件操作執行的?》,作者:磚業洋__,

1. 單表查詢SQL在MySQL架構中的各個組件的執行程序

簡單用一張圖說明下,MySQL架構有哪些組件,接下來給大家用SQL陳述句分析

假如SQL陳述句是這樣

SELECT class_no FROM student WHERE name = 'lcy' AND age > 18 GROUP BY class_no

其中name為索引,我們按照時間順序來分析一下

1.客戶端:客戶端(如MySQL命令列工具、Navicat、MySQL Workbench或其他應用程式)發送SQL查詢到MySQL服務器,

2.連接器:連接器負責與客戶端建立連接、管理連接和維護連接,當客戶端連接到MySQL服務器時,連接器驗證客戶端的用戶名和密碼,然后分配一個執行緒來處理客戶端的請求,

3.查詢快取:查詢快取用于快取先前執行過的查詢及其結果,當收到新的查詢請求時,MySQL首先檢查查詢快取中是否已有相同的查詢及其結果,如果查詢快取中有匹配的查詢結果,MySQL將直接回傳快取的結果,而無需再次執行查詢,但是,如果查詢快取中沒有匹配的查詢結果,MySQL將繼續執行查詢,查詢快取在MySQL 8.0中已被移除,不詳細解釋,

4.分析器:

  • 決議查詢陳述句,檢查語法,
  • 驗證表名和列名的正確性,
  • 生成查詢樹,

5.優化器:分析查詢樹,考慮各種執行計劃,估算不同執行計劃的成本,選擇最佳的執行計劃,在這個例子中,優化器可能會選擇使用name索引進行查詢,因為name是索引列,

6.執行器:根據優化器選擇的執行計劃,向存盤引擎發送請求,獲取滿足條件的資料行,

7.存盤引擎(如InnoDB):

  • 負責實際執行索引掃描,如在student表的name索引上進行等值查詢,因查詢全部列,涉及到回表訪問磁盤,
  • 在訪問磁盤之前,先檢查InnoDB的緩沖池(Buffer Pool)中是否已有所需的資料頁,如果緩沖池中有符合條件的資料頁,直接使用快取的資料,如果緩沖池中沒有所需的資料頁,從磁盤加載資料頁到緩沖池中,

8.執行器:

  • 對于每個找到的記錄,再次判斷記錄是否滿足索引條件name,這是因為基于索引條件加載到記憶體中是資料頁,資料頁中也有可能包含不滿足索引條件的記錄,所以還要再判斷一次name條件,滿足name條件則繼續判斷age > 18過濾條件,
  • 根據class_no對滿足條件的記錄進行分組,
  • 執行器將處理后的結果集回傳給客戶端,

在整個查詢執行程序中,這些組件共同協作以高效地執行查詢,客戶端負責發送查詢,連接器管理客戶端連接,查詢快取嘗試重用先前查詢結果,決議器負責決議查詢,優化器選擇最佳執行計劃,執行器執行優化器選擇的計劃,存盤引擎(如InnoDB)負責管理資料存盤和訪問,這些組件的協同作用使得MySQL能夠高效地執行查詢并回傳結果集,

根據索引列過濾條件加載索引的資料頁到記憶體這個操作是存盤引擎做的,加載到記憶體中之后,執行器會進行索引列和非索引列的過濾條件判斷,

2. SELECT的各個關鍵字在哪里執行?

根據執行順序,如下:

(1)FROM:FROM子句用于指定查詢所涉及的資料表,在查詢執行程序中,執行器需要根據優化器選擇的執行計劃從存盤引擎中獲取指定表的資料,

(2)ON:ON子句用于指定連接條件,它通常與JOIN子句一起使用,在查詢執行程序中,執行器會根據ON子句中的條件從存盤引擎獲取滿足條件的記錄,如果連接條件涉及到索引列,存盤引擎可能會使用索引進行優化,

(3)JOIN:JOIN子句用于指定表之間的連接方式(如INNER JOIN, LEFT JOIN等),在查詢執行程序中,執行器會根據優化器選擇的執行計劃,從存盤引擎中獲取需要連接的表的資料,然后,執行器根據JOIN子句的型別和ON子句中的連接條件,對資料進行連接操作,

(4)WHERE:執行器對從存盤引擎回傳的資料進行過濾,只保留滿足WHERE子句條件的記錄,部分過濾條件如果涉及到索引,在存盤引擎層就已經進行了過濾,

(5)GROUP BY:執行器對滿足WHERE子句條件的記錄按照GROUP BY子句中指定的列進行分組,

(6)HAVING:執行器在進行分組后,根據HAVING子句條件對分組后的記錄進行進一步過濾,

(7)SELECT:執行器根據優化器選擇的執行計劃來獲取查詢結果,

(8)DISTINCT:執行器對查詢結果進行去重,只回傳不重復的記錄,

(9)ORDER BY:執行器對查詢結果按照ORDER BY子句中指定的列進行排序,

(10)LIMIT:執行器根據LIMIT子句中指定的限制條件對查詢結果進行截斷,只回傳部分記錄

3. 表關聯查詢SQL在MySQL架構中的各個組件的執行程序

SELECT s.id, s.name, s.age, sc.subject, sc.score
FROM student s
JOIN score sc ON s.id = sc.student_id
WHERE s.age > 18 AND sc.subject = 'math' AND sc.score > 80;

這個例子中,student_id和subject是聯合索引,age是索引,

我們按照時間順序來分析一下

1.連接器:當客戶端連接到MySQL服務器時,連接器負責建立和管理連接,它驗證客戶端提供的用戶名和密碼,確定客戶端具有相應的權限,然后建立連接,

2.查詢快取:MySQL服務器在處理查詢之前,會先檢查查詢快取,如果查詢快取中已經存在相同的查詢及其結果集,服務器將直接回傳快取中的結果,而不再執行后續的查詢處理,由于查詢快取在MySQL 8.0中已被移除,我們在這個示例中不再詳細討論,

3.決議器:決議器的主要任務是決議SQL查詢陳述句,確保查詢語法正確,決議器會將查詢陳述句分解成多個組成部分,例如表、列、條件等,在這個示例中,決議器會識別出涉及的表(student和score)以及需要的列(id、name、age、subject、score),

4.優化器:優化器的職責是根據決議器提供的資訊生成執行計劃,它會分析多種可能的執行策略,并選擇成本最低的策略,在這個示例中,優化器可能會分析各種表掃描和索引掃描的組合,最終選擇一種成本最低的執行計劃,

5.執行器:根據優化器生成的執行計劃處理查詢,向存盤引擎發送請求,獲取滿足條件的資料行,

6.存盤引擎(如InnoDB):存盤引擎負責管理資料的存盤和檢索,

  • 存盤引擎首先接收來自執行器的請求,請求可能包括獲取滿足查詢條件的資料行,以及使用哪種掃描方法(如全表掃描或索引掃描),
  • 假設執行器已經決定使用索引掃描,在這個示例中,存盤引擎可能會先對student表進行索引掃描(使用age索引),然后對score表進行索引掃描(使用student_id和subject的聯合索引),
  • 存盤引擎會根據請求查詢相應的索引結構,在student表中,存盤引擎會找到滿足age > 18條件的記錄,在score表中,存盤引擎會找到滿足subject = 'math' AND score > 80條件的記錄,
  • 一旦找到了滿足條件的記錄,存盤引擎需要將這些記錄所在的資料頁從磁盤加載到記憶體中,存盤引擎首先檢查緩沖池(InnoDB Buffer Pool),看這些資料頁是否已經存在于記憶體中,如果已經存在,則無需再次從磁盤加載,如果不存在,存盤引擎會將這些資料頁從磁盤加載到緩沖池中,
  • 加載到緩沖池中的記錄可以被多個查詢共享,這有助于提高查詢效率,

7.執行器:處理連接、排序、聚合、過濾等操作,

  • 在記憶體中執行連接操作,將student表和score表的資料行連接起來,
  • 對連接后的結果集進行過濾,只保留滿足查詢條件(age > 18、subject = 'math'、score > 80)的資料行,
  • 將過濾后的資料行作為查詢結果回傳給客戶端,

前面說過,根據存盤引擎根據索引條件加載到記憶體的資料頁有多資料,可能有不滿足索引條件的資料,如果執行器不再次進行索引條件判斷, 則無法判斷哪些記錄滿足索引條件的,雖然在存盤引擎判斷過了,但是在執行器還是會有索引條件age > 18、subject = 'math'、score > 80的判斷,

4. LEFT JOIN將過濾條件放在子查詢中再關聯和放在WHERE子句上有什么區別?

先看例子

查詢1

SELECT s.id, s.name, s.age, sc.subject, sc.score
FROM student s
LEFT JOIN score sc ON s.id = sc.student_id
WHERE s.age > 18 AND sc.subject = 'math' AND sc.score > 80;

查詢2

SELECT s.id, s.name, s.age, sc.subject, sc.score
FROM (SELECT id, name, age FROM student WHERE age > 18) s
LEFT JOIN (SELECT student_id, subject, score FROM score WHERE subject = 'math' AND score > 80) sc 
ON s.id = sc.student_id

查詢3

SELECT s.id, s.name, s.age, sc.subject, sc.score
FROM student s
LEFT JOIN score sc ON s.id = sc.student_id AND s.age > 18 AND sc.subject = 'math' AND sc.score > 80;

先給出結論: 查詢2和3是一樣的,也就是過濾條件放在子查詢中和放在on上面是一樣的,后面就只討論查詢1、2,查詢1和查詢2是不一樣的,過濾條件放在where子句中和放在子查詢再關聯查詢出的結果也是有區別的,

分析一下

從運行結果來看,對于查詢1

SELECT s.id, s.name, s.age, sc.subject, sc.score
FROM student s
LEFT JOIN score sc ON s.id = sc.student_id
WHERE s.age > 18 AND sc.subject = 'math' AND sc.score > 80;

在這個查詢中,首先執行LEFT JOIN,將student表和score表連接起來,連接操作是基于s.id = sc.student_id條件進行的,LEFT JOIN操作會保留左表(student表)中的所有行,即使它們在右表(score表)中沒有匹配的行,如果右表中沒有匹配的行,那么右表的列將顯示為NULL,

然后,WHERE子句會過濾連接后的結果集,只保留那些滿足s.age > 18 and sc.subject = 'math' and sc.score > 80條件的行,這意味著,右表為NULL的記錄將被排除,因為右表的過濾條件sc.subject = 'math' and sc.score > 80條件不滿足,

對于查詢2:

SELECT s.id, s.name, s.age, sc.subject, sc.score
FROM (select id, name, age from student where age > 18) s
LEFT JOIN (select subject, score from score where subject = 'math' AND score > 80) sc 
ON s.id = sc.student_id

在這個查詢中,我們首先執行兩個子查詢,第一個子查詢從student表中選擇所有age > 18的行,而第二個子查詢從score表中選擇所有subject = 'math' and score > 80的行,這意味著,在進行連接操作之前,我們已經對兩個表分別進行了過濾,

接下來,執行LEFT JOIN操作,將過濾后的s和sc子查詢的結果集連接起來,基于s.id = sc.student_id條件,因為LEFT JOIN操作會保留左表(s子查詢的結果集)中的所有行,右表為NULL的記錄包含了,

結果差異:

查詢1和查詢2的主要區別在于WHERE子句和子查詢的使用,查詢1在連接操作后應用過濾條件,這可能導致右表為NULL的關聯記錄因為右表的過濾條件而被排除在外,而查詢2在連接操作之前就已經過濾了表中的資料,這意味著查詢結果會包含所有左表過濾條件的記錄,以及右表過濾條件的記錄和NULL的記錄,

如果查詢1想保留右表為NULL的記錄,只需要改為WHERE s.age > 18 AND (sc.student_id is null OR (sc.subject = 'math' AND sc.score > 80));這樣查詢1和2會有相同的結果集,

我們分析一下這兩個查詢在MySQL架構中各個組件中執行的區別

對于查詢1:

SELECT s.id, s.name, s.age, sc.subject, sc.score
FROM student s
LEFT JOIN score sc ON s.id = sc.student_id
WHERE s.age > 18 AND sc.subject = 'math' AND sc.score > 80;
  1. 連接器:客戶端與服務器建立連接,
  2. 查詢快取:檢查快取是否存在此查詢的結果,如果有,直接回傳結果,否則,繼續執行,
  3. 決議器:決議查詢陳述句,檢查語法是否正確,
  4. 優化器:對查詢進行優化,生成執行計劃,決定連接和過濾條件的順序等,
  5. 執行器:開始請求執行查詢,
  6. 存盤引擎(InnoDB):從磁盤或者緩沖池讀取滿足條件的資料行(s.id = sc.student_id),因為是left join,所以即便sc.student_id為null也會被關聯,
  7. 執行器:將從存盤引擎獲取的資料行進行左連接,應用過濾條件s.age > 18 and sc.subject = 'math' and sc.score > 80進行過濾,將結果集回傳給客戶端,

當查詢包含索引列的條件時,MySQL的存盤引擎會首先利用索引在磁盤上定位到滿足索引條件的記錄,接著,將這些索引資料對應的資料頁加載到記憶體中的緩沖池,然后,執行器在記憶體中對這些記錄進行進一步的過濾,根據索引條件和非索引列的條件來過濾資料,

當查詢涉及到非聚集索引時,需要回表的操作會導致聚集索引和非聚集索引都被加載到記憶體中,但是,如果查詢只涉及到聚集索引(如主鍵查詢),那么只需要加載聚集索引的資料頁即可,

對于查詢2

SELECT s.id, s.name, s.age, sc.subject, sc.score
FROM (SELECT id, name, age FROM student WHERE age > 18) s
LEFT JOIN (SELECT student_id, subject, score FROM score WHERE subject = 'math' AND score > 80) sc 
ON s.id = sc.student_id
  1. 連接器:客戶端與服務器建立連接,
  2. 查詢快取:檢查快取是否存在此查詢的結果,如果有,直接回傳結果,否則,繼續執行,
  3. 決議器:決議查詢陳述句,檢查語法是否正確,
  4. 優化器:決定使用哪些索引進行查詢優化,以及確定連接順序,
  5. 執行器:開始請求執行子查詢,
  6. 存盤引擎(InnoDB):首先,對student表進行掃描,將滿足條件s.age > 18的記錄對應的資料頁加載到緩沖池(如果緩沖池沒有這個頁的資料),然后,使用subject = 'math' AND score > 80對score表進行掃描,將滿足條件的記錄對應的資料頁加載到緩沖池(如果緩沖池沒有這個頁的資料),
  7. 執行器:對從存盤引擎獲取的資料應用所有的過濾條件,過濾后的結果存入臨時表,執行主查詢,從臨時表中獲取資料,將s和sc進行左連接,根據s.id = sc.student_id組合結果,將連接后的結果回傳給客戶端,

從這里我們可以看出,查詢2是先過濾后連接,每張表的索引都很重要,如果沒設定好索引,單表過濾會全表掃描,

寫SQL的時候,查詢1和查詢2到底采用哪種方式呢?

根據不同情況各有應用場景,需要注意的是,對于查詢2,子查詢的結果集被存盤在一個臨時表中,臨時表不會繼承原始索引,包括聚集索引和非聚集索引,所以剛剛的例子中,臨時表中s.id和sc.student_id已經不是任何索引列了,對于查詢1,最終滿足關聯條件s.id = sc.student_id的所有記錄都會被加載到記憶體后再進行過濾,

  1. 當單表過濾后的資料量較小時,查詢2可能是一個更好的選擇,因為它可以減少關聯操作的資料量,從而提高查詢效率,子查詢階段,MySQL依然會利用原始表上的索引進行過濾,子查詢執行完成后,將過濾后的資料存盤在臨時表中,所以查詢2的方式可以優化的點就是在單表查詢時盡可能的利用索引,
  2. 當單表過濾后的資料量較大時,查詢1可能更合適,因為它可以更好地利用索引進行關聯操作,這樣可以減少關聯操作的時間開銷,查詢2因為臨時表不繼承索引,表關聯的時間開銷比較大,

5. 聚集索引和全表掃描有什么區別呢?

走 PRIMARY索引(聚集索引)和全表掃描有什么區別 呢?準確來說,使用InnoDB存盤引擎的情況下,全表掃描的資料和聚集索引的資料在InnoDB表空間中的存盤位置是相同的,也就是說它們的記憶體地址也是相同的,所以你也可以理解為,他們其實都是在聚集索引上操作的(聚集索引B+樹的葉子結點是根據主鍵排好序的完整的用戶記錄,包含表里的所有欄位),區別就在于

全表掃描將聚集索引B+樹的葉子結點從左到右依次順序掃描并判斷條件,

聚集索引是利用二分思想將聚集索引B+樹到指定范圍區間進行掃描,比如select * from demo_info where id in (1, 2)這種條件欄位是主鍵id,可以很好的利用PRIMARY索引進行二分的快速查詢,

在MyISAM中,全表掃描的資料和索引資料的存盤位置是分開的,然而MyISAM已經被InnoDB取代,不再是MySQL的推薦存盤引擎,從MySQL5.5開始,InnoDB就成了MySQL的默認存盤引擎,

默認情況下,InnoDB使用一個名為ibdata1的共享表空間檔案存盤所有的資料和索引,包括聚集索引和二級索引(又稱非聚集索引或輔助索引),

 

點擊關注,第一時間了解華為云新鮮技術~

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/551671.html

標籤:MySQL

上一篇:【必知必會的MySQL知識】⑤DQL語言

下一篇:返回列表

標籤雲
其他(158455) Python(38117) JavaScript(25400) Java(18012) C(15221) 區塊鏈(8261) C#(7972) AI(7469) 爪哇(7425) MySQL(7159) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5871) 数组(5741) R(5409) Linux(5334) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4565) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2432) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1964) Web開發(1951) HtmlCss(1932) python-3.x(1918) 弹簧靴(1913) C++(1912) xml(1889) PostgreSQL(1874) .NETCore(1857) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • 一條SQL如何被MySQL架構中的各個組件操作執行的?

    摘要:一條SQL如何被MySQL架構中的各個組件操作執行的,執行器做了什么?存盤引擎做了什么?表關聯查詢是怎么在存盤引擎和執行器被分步執行的?本文帶你探探究竟! 本文分享自華為云社區《一條SQL如何被MySQL架構中的各個組件操作執行的?》,作者:磚業洋__。 1. 單表查詢SQL在MySQL架構中 ......

    uj5u.com 2023-05-05 09:42:46 more
  • 【必知必會的MySQL知識】⑤DQL語言

    (DQL語言) 一、前言 上一節中我們說了DML 資料操作語言,這一篇到了DQL語言,DQL語言就是我們常說的select 陳述句。 它是從一個表或多個表中根據各種條件,檢索出我們想要的資料集。 DQL陳述句算是我們作業中最長用也是最復雜的SQL陳述句了。 二、基礎查詢 2.1 語法 -- ① 查詢欄位 ......

    uj5u.com 2023-05-05 09:42:24 more
  • 第1章 大資料概述

    1.1 資訊與資料 1、資訊 人們對于客觀事物屬性和運動狀態的反映。 資訊所反映的是關于某一客觀系統中,某一事物的存在方式或某一時刻的運動狀態。 資訊可以通過載體傳遞,可以通過資訊處理工具進行存盤、加工、傳播、再生和增值。 在資訊社會中,資訊一般可與物質或能量相提并論,它是一種重要的資源。 2、資料 ......

    uj5u.com 2023-05-05 09:42:03 more
  • 【必知必會的MySQL知識】④DCL語言

    (DCL語言) 一、概述 資料控制語言,用來定義訪問權限和安全級別。主要包含包括grant,revoke 關鍵字 grant 授予權限 revoke 回收權限 二 、授權 2.1 語法格式 GRANT priv_type [(column_list)] [, priv_type [(column_l ......

    uj5u.com 2023-05-04 08:16:49 more
  • day10-好友關注

    功能05-好友關注 6.功能05-好友關注 6.1關注和取關 6.1.1需求分析 在探店圖文的詳情頁面中,可以關注發布筆記的作者: 關注和取關:點擊關注按鈕就會發出請求(上圖):http://127.0.0.1:8080/api/follow/2/true(2是關注的用戶id,最后面的引數可以是tr ......

    uj5u.com 2023-05-04 08:16:05 more
  • 1、etcd基礎介紹

    互聯網技術發展真的快,層出不窮的新技術。最近專案使用到了etcd,自己之前在部署k8s集群的時候玩過,但是并沒有系統的學習。正好趁這個機會,系統性的學習下。文章中的內容有些是來自官方檔案,有些是來自網上的資料,有些是自己的思考。如果有不錯的地方,請不吝賜教,大家有好的教程,也歡迎評論區留言,學習學習 ......

    uj5u.com 2023-05-04 08:15:40 more
  • day10-好友關注

    功能05-好友關注 6.功能05-好友關注 6.1關注和取關 6.1.1需求分析 在探店圖文的詳情頁面中,可以關注發布筆記的作者: 關注和取關:點擊關注按鈕就會發出請求(上圖):http://127.0.0.1:8080/api/follow/2/true(2是關注的用戶id,最后面的引數可以是tr ......

    uj5u.com 2023-05-04 08:14:16 more
  • 1、etcd基礎介紹

    互聯網技術發展真的快,層出不窮的新技術。最近專案使用到了etcd,自己之前在部署k8s集群的時候玩過,但是并沒有系統的學習。正好趁這個機會,系統性的學習下。文章中的內容有些是來自官方檔案,有些是來自網上的資料,有些是自己的思考。如果有不錯的地方,請不吝賜教,大家有好的教程,也歡迎評論區留言,學習學習 ......

    uj5u.com 2023-05-04 08:13:46 more
  • 【必知必會的MySQL知識】④DCL語言

    (DCL語言) 一、概述 資料控制語言,用來定義訪問權限和安全級別。主要包含包括grant,revoke 關鍵字 grant 授予權限 revoke 回收權限 二 、授權 2.1 語法格式 GRANT priv_type [(column_list)] [, priv_type [(column_l ......

    uj5u.com 2023-05-04 08:12:08 more
  • Oracle ORA-01033: ORACLE initialization or shutdown in progr

    先宣告一下前期的一些手欠欠兒的操作導致oracl登錄不進去了,起先是清理磁盤空間的時候誤洗掉了orcle DBF資料檔案后無法進入系統,plsql登錄報錯如下: 一般情況下,洗掉表空間的正確方法是:DROP TABLESPACE BDCDJ INCLUDING CONTENTS AND DATAFI ......

    uj5u.com 2023-05-03 08:07:56 more