欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Oracle學(xué)習(xí)之性能優(yōu)化(一)SQL語句處理-創(chuàng)新互聯(lián)

 當(dāng)向Oracle提交一個(gè)sql命令時(shí),Oracle到底做了哪些事情?對(duì)這個(gè)問題有很好的理解,能幫助你更好的分析sql語句的優(yōu)化。

創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營銷推廣、網(wǎng)站重做改版、甘泉網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5網(wǎng)站設(shè)計(jì)電子商務(wù)商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為甘泉等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

 執(zhí)行一條sql語句從開始到結(jié)束,需要經(jīng)歷4個(gè)步驟:

  • 分析--對(duì)提交的語句進(jìn)行語法分析、語義分析和共享池檢查。

  • 優(yōu)化--生成一個(gè)可在數(shù)據(jù)庫中用來執(zhí)行語句的最佳計(jì)劃

  • 行資源生成--為會(huì)話取得最佳計(jì)劃并建立執(zhí)行計(jì)劃

  • 語句執(zhí)行--完成實(shí)際執(zhí)行查詢的行資源生成步驟的輸出。對(duì)應(yīng)DDL來說,這一步就是語句的結(jié)  束。對(duì)應(yīng)SELECT來說,這一步是取數(shù)據(jù)的開始。

 以上步驟,有的是可以省略的,例如優(yōu)化、行資源生成器階段。這樣可以節(jié)省大量的時(shí)間。

Oracle 學(xué)習(xí)之性能優(yōu)化(一)SQL語句處理

一、分析:

 語法分析,sql是否符合語法標(biāo)準(zhǔn)。

SQL> select * form tab; select * form tab          * ERROR at line 1: ORA-00923: FROM keyword not found where expected

 語義分析,假設(shè)sql是合法的,但是它有意義嗎?你要訪問的對(duì)象,你有訪問權(quán)限嗎?查詢的列存在嗎?是否存在歧義等待。

SQL> conn scott/tiger Connected. SQL> select x from dual; select x from dual        * ERROR at line 1: ORA-00904: "X": invalid identifier SQL> select * from dba_objects; select * from dba_objects               * ERROR at line 1: ORA-00942: table or view does not exist

 對(duì)于DML語句,還有第三步。

 共享池檢查,此語句是否被其他用戶使用過?可以重用已經(jīng)執(zhí)行過的工作嗎?如果是,就是軟解析soft parse,如果否,那就是硬解析。

 DDL總是硬解析,語句從不重用。

 Shared pool是SGA中的一部分,用來緩存以前執(zhí)行過的sql語句、PLSQL、數(shù)據(jù)字典內(nèi)容的緩存(以行的形式緩存內(nèi)容,而buffer cache是以block的方式緩存內(nèi)容)以及其他許多信息,以供會(huì)話重用。

 從技術(shù)上來說,Oracle的語句解析分為兩種:

  • 硬解析--語句通過語句執(zhí)行的每一個(gè)步驟從分析到優(yōu)化,到行資源生成,到語句執(zhí)行。

  • 軟解析--語句通過語句執(zhí)行的某些步驟,特別是跳過優(yōu)化步驟(最昂貴的步驟)。為了執(zhí)行軟解析,必須通過兩個(gè)步驟。首先Oracle必須進(jìn)行語義匹配,查看提交給Oracle的語句是否已經(jīng)被執(zhí)行過。然后,進(jìn)行環(huán)境匹配。比如一個(gè)會(huì)話的初始化參數(shù)optimizer_mode=ALL_ROWS,一個(gè)會(huì)話的初始化參數(shù)optimizer_mode=FIRST_ROWS,這兩個(gè)會(huì)話的環(huán)境就不一樣。

 為了開始這個(gè)處理,Oracle必須在Shared pool中尋找語句。為了高效的完成此操作,oracle將每個(gè)提交的sql語句,進(jìn)行hash算法,生成一個(gè)hash_values。oracle使用hash_values查找Shared pool中是否有相同的語句。

Oracle 學(xué)習(xí)之性能優(yōu)化(一)SQL語句處理

 一旦找到,Oracle將進(jìn)行語義和環(huán)境檢查,sql語句都相同,難道還有語義不同的嗎?我們看下面的例子。

  1. 建立兩個(gè)用戶

SQL> create user a identified by a; User created. SQL> create user b identified by b; User created.

2. 賦予用戶權(quán)限

SQL> grant connect ,resource to a; Grant succeeded. SQL> grant connect,resource to b; Grant succeeded.

3.啟用一個(gè)會(huì)話

SQL> conn a/a Connected. SQL> create table emp (id int); Table created. SQL> select * from emp; no rows selected

4. 啟用另一個(gè)會(huì)話

SQL> conn b/b Connected. SQL> create table emp (id int); Table created. SQL> select * from emp; no rows selected SQL> select * from emp; no rows selected

5.啟用另一會(huì)話,使用sys用戶連接,進(jìn)行如下查詢。

SQL> SET LINESIZE 200 SQL> COL SQL_TEXT FOR A50 SQL> SELECT address, executions, sql_text       FROM v$sql      WHERE UPPER (sql_text) LIKE 'SELECT * FROM EMP'; ADDRESS   EXECUTIONS SQL_TEXT ---------------- ---------- -------------------------------------------------- 00000000893DF470   2 select * from emp 00000000893DF470   1 select * from emp SQL>

可見,雖然發(fā)出的語句是一樣的,但是語義不同,所以v$sql中會(huì)有兩條記錄。b用戶下,相同的語句執(zhí)行了兩次,因?yàn)檎Z義相同,所以是一條記錄,但是executions是2 。

 我們?cè)倏纯矗Z義相同,但是環(huán)境不同,會(huì)是什么結(jié)果。

以上的連接全部退出,新建一個(gè)連接進(jìn)行如下查詢。

SQL> conn / as sysdba Connected. SQL> alter session set optimizer_mode=ALL_ROWS; Session altered. SQL> SELECT * FROM A.EMP; no rows selected SQL> alter session set optimizer_mode=FIRST_ROWS; Session altered. SQL> SELECT * FROM A.EMP; no rows selected

查看sql解析情況

SQL> SET LINESIZE 200 SQL> COL SQL_TEXT FOR A50 SQL> select address,executions,sql_text         from v$sql        where upper(sql_text) like 'SELECT * FROM A.EMP'; ADDRESS   EXECUTIONS SQL_TEXT ---------------- ---------- -------------------------------------------------- 0000000091CD7810   1 SELECT * FROM A.EMP 0000000091CD7810   1 SELECT * FROM A.EMP

可見,雖然語義相同,但是環(huán)境不同,Oracle也會(huì)當(dāng)成2條語句來解析。

 分析總結(jié):

  分析階段做了如下操作,語法檢查、計(jì)算散列值、語義檢查、環(huán)境檢查、計(jì)算子游標(biāo)的散列值等。 此外Oracle還可能做了如下步驟:

 在Shared pool中查找匹配的hash_value,如果能找到,確認(rèn)訪問對(duì)象的權(quán)限、檢查環(huán)境。生成子游標(biāo)hash_value。如果子游標(biāo)hash_value也能匹配。那么將跳過優(yōu)化和行資源生成。(此部門我們將在游標(biāo)中詳細(xì)討論)

二、優(yōu)化和行資源生成

 當(dāng)所有的DML語句第一次提交給Oracle時(shí),在它的生命周期中至少被優(yōu)化一次。優(yōu)化發(fā)生在硬解析中。語義和語法完全相同,并且執(zhí)行環(huán)境也相同的語句的執(zhí)行可以利用以前的硬解析工作。這種情況下,對(duì)他們將進(jìn)行軟解析。

 優(yōu)化是一個(gè)費(fèi)勁的、CPU密集型的處理,可能花在優(yōu)化上的時(shí)間比實(shí)際執(zhí)行還要長。優(yōu)化不單耗cpu,還是導(dǎo)致Shared pool 高栓鎖率。優(yōu)化的規(guī)則有兩種

 1. 基于規(guī)則的優(yōu)化法則(RBO)

 2. 基于成本的優(yōu)化法則(CBO)

 優(yōu)化就是根據(jù)優(yōu)化法則,生成各種各樣的執(zhí)行計(jì)劃,并且選擇一個(gè)最好的執(zhí)行計(jì)劃。

 行資源生成器是一個(gè)軟件,就是將執(zhí)行計(jì)劃轉(zhuǎn)化成其他部分可以利用的數(shù)據(jù)結(jié)構(gòu)。

三、執(zhí)行

 利用行資源生成器輸出的執(zhí)行計(jì)劃結(jié)構(gòu),執(zhí)行具體的步驟。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

本文名稱:Oracle學(xué)習(xí)之性能優(yōu)化(一)SQL語句處理-創(chuàng)新互聯(lián)
當(dāng)前路徑:http://aaarwkj.com/article2/ccdeic.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、用戶體驗(yàn)外貿(mào)建站、網(wǎng)站內(nèi)鏈、App開發(fā)、動(dòng)態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司
国语自产精品视频在线不卡| 中文字幕av在线有码| 国产免费高清视频成人| 少妇视频资源一区二区三区| 日本中文有码视频在线观看| 久久视频在线播放视频| 一区二区三区蜜桃91| 国产成人av网站在线观看| 少妇按摩高潮呻吟av| 激情综合婷婷中文字幕| 国产原创传媒在线观看| 97国产精品成人免费视频| 亚洲美腿丝袜综合在线| 激情五月天色婷婷久久| 97乱碰视频在线观看| 激情一区二区三区视频| 二区三区成人在线观看| 人妻免费视频中文字幕| 中文字幕有码精品在线| 日韩高清一级黄色大片网站| 中文字幕日韩在线欧美一区| 内射小美女阴户毛片在线| 色自拍偷拍另类欧洲美女| 老女人性生交大片免费| 国产男女猛进猛出精品91| 国产情色自拍在线观看| 草莓午夜视频在线观看| 久久91亚洲精品久久91| 丰满人妻被黑人猛烈进入| av免费在线观看网页| 欧美亚洲另类在线日韩国产| 久久热在线观看免费高清| 国产一级一片内射在线| 中出亚洲精品日韩在线视频| 国产av剧情精品麻豆| 国产精品免费视频一区二区三区| 亚洲精品一区二区三区小| 高清大片免费看一区二区| 天天操天天日天天射夜夜爽| 在线观看后入大屁股| 国欧美一区二区三区|