Oracle優化之SQL

SQL(StructURED Query Language):結構化查詢語言

在進行Oracle優化之前,先讓我們花時間來聊聊SQL,並瞭解下SQL的前世今生。
在此先通過3W原則來講下SQL:

  • what :
    SQL is a domain-specific language used in programming and designed for managing data held in a relational database management system (RDBMS), or for stream processing in a relational data stream management system (RDSMS). It is particularly useful in handling structured data。
    wiki裏的解釋翻譯過來就是:SQL是用來設計,編程和處理關係型數據庫的一門專用語言。
  • why:
    SQL有什麼優點,爲啥要使用它呢?事實上SQL最大的優點是基本符合英語句子結構,簡單易學(對於英語好的人來說),其次它在操縱關係型數據庫上很好用。但也僅限於關係型數據庫。
  • how:
    SQL語法衆多,而且很多方言(只使用本數據庫的語言),所以較雜,所以說一下子想學會是很難的,更何況還有調優的大山。

SQL的執行

sql的執行其實是很複雜的,不同的數據庫方案,不同的版本之間的差異都不小。但大抵是如下順序:

  1. 輸入:SQL語句通過I/O進入數據庫管理系統(DBMS)
  2. 檢查:DBMS檢查SQL語句,包括語法檢查,權限檢查,語義檢查等
  3. 解析:DBMS將合格的SQL語句拆分成關係代數語法樹
  4. 優化:優化器將語法樹進行分析,收集統計信息,分析執行計劃,選出最優的執行計劃(這過程可能會打亂語法樹的結構,而且只是在優化器不抽筋的情況下,換言之,優化器是有可能抽筋的,這時候的執行計劃就可能很爛,需要人工干預,也就是人工SQL優化),選擇出實際執行計劃。
  5. 執行計劃:按上面的執行計劃執行,並獲取組織結果
  6. 返回:將結果返回
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章