真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎么調(diào)優(yōu)OracleSQL

本篇內(nèi)容介紹了“怎么調(diào)優(yōu)Oracle SQL”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

創(chuàng)新互聯(lián)主營(yíng)濱城網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,重慶APP軟件開(kāi)發(fā),濱城h5小程序開(kāi)發(fā)搭建,濱城網(wǎng)站營(yíng)銷推廣歡迎濱城等地區(qū)企業(yè)咨詢

1 SQL調(diào)優(yōu)簡(jiǎn)介

SQL調(diào)優(yōu)是嘗試診斷和修復(fù)不符合性能標(biāo)準(zhǔn)的SQL語(yǔ)句。

1.1 關(guān)于SQL調(diào)優(yōu)

SQL調(diào)優(yōu)是提高SQL語(yǔ)句性能以滿足特定、可衡量和可實(shí)現(xiàn)目標(biāo)的迭代過(guò)程。

SQL調(diào)優(yōu)意味著修復(fù)已部署正在運(yùn)行的應(yīng)用程序中的問(wèn)題。

1.2 SQL調(diào)優(yōu)的目的

當(dāng)SQL語(yǔ)句無(wú)法按照預(yù)定和可測(cè)量的標(biāo)準(zhǔn)執(zhí)行時(shí),它就成為一個(gè)問(wèn)題。

確定問(wèn)題后,典型的調(diào)優(yōu)會(huì)話具有以下目標(biāo)之一:

  • 減少用戶響應(yīng)時(shí)間,減少用戶發(fā)出語(yǔ)句和收到響應(yīng)之間的時(shí)間

  • 提高吞吐量,處理語(yǔ)句訪問(wèn)所有行需要的最少量資源

1.3 SQL調(diào)優(yōu)的前提

SQL性能調(diào)優(yōu)需要數(shù)據(jù)庫(kù)知識(shí)的基礎(chǔ)。

假定您具有下表中顯示的知識(shí)和技能。

表1-1 所需知識(shí)

所需知識(shí)說(shuō)明
數(shù)據(jù)庫(kù)架構(gòu)數(shù)據(jù)庫(kù)體系結(jié)構(gòu)不僅僅是管理員所要了解的內(nèi)容。 作為開(kāi)發(fā)人員,您希望在最少的時(shí)間內(nèi)針對(duì)Oracle數(shù)據(jù)庫(kù)開(kāi)發(fā)應(yīng)用程序,這需要利用數(shù)據(jù)庫(kù)體系結(jié)構(gòu)和特性。 例如,不理解Oracle數(shù)據(jù)庫(kù)并發(fā)控制和多版本讀取一致性,可能會(huì)使應(yīng)用程序破壞數(shù)據(jù)的完整性,運(yùn)行緩慢并降低可擴(kuò)展性。
SQL 和 PL/SQL由于存在基于GUI的工具,因此可以在不知道SQL的情況下創(chuàng)建應(yīng)用程序和管理數(shù)據(jù)庫(kù)。 但是,如果不了解SQL,就無(wú)法調(diào)整應(yīng)用程序或數(shù)據(jù)庫(kù)。
SQL調(diào)優(yōu)工具數(shù)據(jù)庫(kù)生成性能統(tǒng)計(jì)信息,并提供解釋這些統(tǒng)計(jì)信息的SQL調(diào)優(yōu)工具。

1.4 SQL調(diào)優(yōu)的任務(wù)和工具

在確定調(diào)優(yōu)會(huì)話的目標(biāo)后,例如,將用戶響應(yīng)時(shí)間從三分鐘縮短到不到一秒,問(wèn)題就變成了如何實(shí)現(xiàn)此目標(biāo)。

1.4.1 SQL調(diào)優(yōu)任務(wù)

調(diào)優(yōu)會(huì)話的細(xì)節(jié)取決于許多因素,包括您是主動(dòng)調(diào)優(yōu)還是被動(dòng)調(diào)優(yōu)。

在主動(dòng)SQL調(diào)優(yōu)中,您經(jīng)常使用SQL Tuning Advisor來(lái)確定是否可以使SQL語(yǔ)句更好地執(zhí)行。 在被動(dòng)SQL調(diào)優(yōu)中,您可以更正用戶遇到的與SQL相關(guān)的問(wèn)題。

無(wú)論您是主動(dòng),還是被動(dòng)地進(jìn)行調(diào)優(yōu),典型的SQL調(diào)優(yōu)會(huì)話都涉及以下所有或大部分任務(wù):

1.識(shí)別高負(fù)載SQL語(yǔ)句

查看過(guò)去的執(zhí)行歷史記錄,以查找負(fù)責(zé)大量應(yīng)用程序工作負(fù)載和系統(tǒng)資源的語(yǔ)句。

2.收集與性能相關(guān)的數(shù)據(jù)

優(yōu)化程序統(tǒng)計(jì)信息對(duì)SQL調(diào)優(yōu)至關(guān)重要。 如果這些統(tǒng)計(jì)信息不存在或不再準(zhǔn)確,則優(yōu)化程序無(wú)法生成最佳執(zhí)行計(jì)劃。 與SQL性能相關(guān)的其他數(shù)據(jù)包括語(yǔ)句訪問(wèn)的表和視圖的結(jié)構(gòu),以及語(yǔ)句可用的索引的定義。

3.確定問(wèn)題的原因

通常,SQL性能問(wèn)題的原因包括:

  • 設(shè)計(jì)效率低下的SQL語(yǔ)句
    如果編寫SQL語(yǔ)句以便執(zhí)行不必要的工作,那么優(yōu)化器無(wú)法提高其性能。 低效設(shè)計(jì)的例子包括:

    • 忽略添加Join條件,這會(huì)導(dǎo)致笛卡爾連接

    • 使用hint將大表指定為連接中的驅(qū)動(dòng)表

    • 指定UNION而不是UNION ALL

    • 為外部查詢中的每一行執(zhí)行子查詢

  • 次優(yōu)的執(zhí)行計(jì)劃
    查詢優(yōu)化器(也稱為優(yōu)化器)是內(nèi)部軟件,用于確定哪個(gè)執(zhí)行計(jì)劃最有效。 有時(shí),優(yōu)化器會(huì)選擇具有次優(yōu)訪問(wèn)路徑的計(jì)劃,這是數(shù)據(jù)庫(kù)從數(shù)據(jù)庫(kù)中檢索數(shù)據(jù)的方法。 例如,具有低選擇性的查詢謂詞的計(jì)劃,可以在大表而不是索引上使用全表掃描。

您可以將執(zhí)行最佳SQL語(yǔ)句的執(zhí)行計(jì)劃與次優(yōu)的計(jì)劃進(jìn)行比較。 這種比較以及諸如數(shù)據(jù)量變化之類的信息可以幫助確定性能下降的原因。

  • 缺少SQL訪問(wèn)結(jié)構(gòu)
    缺少SQL訪問(wèn)結(jié)構(gòu)(例如,索引和物化視圖)是SQL性能欠佳的典型原因。 最佳訪問(wèn)結(jié)構(gòu)集可以將SQL性能提高幾個(gè)數(shù)量級(jí)。

  • 過(guò)時(shí)的優(yōu)化程序統(tǒng)計(jì)信息
    當(dāng)統(tǒng)計(jì)維護(hù)操作(自動(dòng)或手動(dòng))無(wú)法跟上DML引起的對(duì)表數(shù)據(jù)的更改時(shí),DBMS_STATS收集的統(tǒng)計(jì)信息可能會(huì)變得陳舊。 由于表上的陳舊統(tǒng)計(jì)信息無(wú)法準(zhǔn)確反映表數(shù)據(jù),因此優(yōu)化程序可能會(huì)根據(jù)錯(cuò)誤信息做出決策并生成次優(yōu)執(zhí)行計(jì)劃。

  • 硬件問(wèn)題
    次優(yōu)性能可能與內(nèi)存、I/O和CPU問(wèn)題有關(guān)。

4.定義問(wèn)題的范圍

解決方案的范圍必須與問(wèn)題的范圍相匹配。需要考慮數(shù)據(jù)庫(kù)級(jí)別的問(wèn)題和語(yǔ)句級(jí)別的問(wèn)題。例如,共享池太小,這會(huì)導(dǎo)致游標(biāo)快速老化,從而導(dǎo)致許多硬解析。使用初始化參數(shù)來(lái)增加共享池大小可以修復(fù)數(shù)據(jù)庫(kù)級(jí)別的問(wèn)題并提高所有會(huì)話的性能。但是,如果單個(gè)SQL語(yǔ)句未使用有用的索引,則更改整個(gè)數(shù)據(jù)庫(kù)的優(yōu)化程序初始化參數(shù)可能會(huì)損害整體性能。如果單個(gè)SQL語(yǔ)句出現(xiàn)問(wèn)題,那么適當(dāng)范圍的解決方案只能通過(guò)此語(yǔ)句解決此問(wèn)題。

5.為次優(yōu)執(zhí)行SQL語(yǔ)句實(shí)施更正操作

這些行為因環(huán)境而異。例如,您可以重寫SQL語(yǔ)句以提高效率,通過(guò)重寫語(yǔ)句以使用綁定變量來(lái)避免不必要的硬解析。 您還可以使用equijoins,從WHERE子句中刪除函數(shù),并將復(fù)雜的SQL語(yǔ)句分解為多個(gè)簡(jiǎn)單語(yǔ)句。

在某些情況下,您不是通過(guò)重寫語(yǔ)句而是通過(guò)重構(gòu)模式對(duì)象來(lái)提高SQL性能。例如,您可以對(duì)表進(jìn)行分區(qū),引入派生值,甚至更改數(shù)據(jù)庫(kù)設(shè)計(jì)。

6.防止SQL性能回歸

要確保最佳SQL性能,請(qǐng)驗(yàn)證執(zhí)行計(jì)劃是否繼續(xù)提供最佳性能,并選擇更好的計(jì)劃(如果可用)。您可以使用優(yōu)化程序統(tǒng)計(jì)信息,SQL配置文件和SQL計(jì)劃基準(zhǔn)來(lái)實(shí)現(xiàn)這些目標(biāo)。

1.4.2 SQL調(diào)優(yōu)工具

SQL調(diào)優(yōu)工具是自動(dòng)或手動(dòng)的。

在某種情況下,如果數(shù)據(jù)庫(kù)本身可以提供診斷,建議或糾正措施,則工具是自動(dòng)化的。手動(dòng)工具要求您執(zhí)行所有這些操作。

所有調(diào)優(yōu)工具都依賴于數(shù)據(jù)庫(kù)實(shí)例收集的動(dòng)態(tài)性能視圖,統(tǒng)計(jì)信息和度量標(biāo)準(zhǔn)的基本工具。數(shù)據(jù)庫(kù)本身包含調(diào)整SQL語(yǔ)句所需的數(shù)據(jù)和元數(shù)據(jù)。

1.4.2.1 自動(dòng)SQL調(diào)優(yōu)工具

Oracle數(shù)據(jù)庫(kù)提供了幾個(gè)與SQL調(diào)優(yōu)相關(guān)的顧問(wèn)程序。

此外,SQL計(jì)劃管理是一種可以防止性能回歸的機(jī)制,還可以幫助您提高SQL性能。

所有自動(dòng)SQL調(diào)優(yōu)工具都可以使用SQL調(diào)優(yōu)集作為輸入。 SQL調(diào)優(yōu)集(STS)是一個(gè)數(shù)據(jù)庫(kù)對(duì)象,包括一個(gè)或多個(gè)SQL語(yǔ)句及其執(zhí)行統(tǒng)計(jì)信息和執(zhí)行上下文。

1.4.2.1.1 自動(dòng)數(shù)據(jù)庫(kù)診斷監(jiān)視器(ADDM)

ADDM是Oracle數(shù)據(jù)庫(kù)內(nèi)置的自診斷軟件。

ADDM可以自動(dòng)定位性能問(wèn)題的根本原因,提供糾正建議,并量化預(yù)期收益。 ADDM還可識(shí)別無(wú)需采取任何措施的區(qū)域。

ADDM和其他顧問(wèn)使用自動(dòng)工作負(fù)載存儲(chǔ)庫(kù)(AWR),它是一種為數(shù)據(jù)庫(kù)組件提供服務(wù)以收集,維護(hù)和使用統(tǒng)計(jì)信息的基礎(chǔ)結(jié)構(gòu)。ADDM檢查并分析AWR中的統(tǒng)計(jì)信息,以確定可能的性能問(wèn)題,包括高負(fù)載SQL。

例如,您可以將ADDM配置為每晚運(yùn)行。在早上,您可以檢查最新的ADDM報(bào)告,以查看可能導(dǎo)致問(wèn)題的原因以及是否存在建議的修復(fù)。該報(bào)告可能會(huì)顯示特定的SELECT語(yǔ)句占用了大量CPU,并建議您運(yùn)行SQL調(diào)優(yōu)顧問(wèn)。

1.4.2.1.2 SQL調(diào)優(yōu)顧問(wèn)

SQL調(diào)優(yōu)顧問(wèn)是內(nèi)部診斷軟件,可識(shí)別有問(wèn)題的SQL語(yǔ)句,并建議如何提高語(yǔ)句性能。

在數(shù)據(jù)庫(kù)維護(hù)窗口期間作為自動(dòng)維護(hù)任務(wù)運(yùn)行時(shí),SQL調(diào)優(yōu)顧問(wèn)稱為自動(dòng)SQL調(diào)整顧問(wèn)。

SQL調(diào)優(yōu)顧問(wèn)將一個(gè)或多個(gè)SQL語(yǔ)句作為輸入,并調(diào)用自動(dòng)調(diào)整優(yōu)化器對(duì)語(yǔ)句執(zhí)行SQL調(diào)優(yōu)。 顧問(wèn)執(zhí)行以下類型的分析:

  • 檢查無(wú)效或過(guò)時(shí)的統(tǒng)計(jì)信息

  • 構(gòu)建SQL profile
    SQL profile是一組特定于SQL語(yǔ)句的輔助信息。SQL profile包含在自動(dòng)SQL調(diào)整期間發(fā)現(xiàn)的次優(yōu)優(yōu)化程序估計(jì)的更正。此信息可以改進(jìn)基數(shù)的優(yōu)化器估計(jì),基數(shù)是執(zhí)行計(jì)劃中的操作估計(jì)或?qū)嶋H返回的行數(shù),以及選擇性。 這些改進(jìn)的估計(jì)導(dǎo)致優(yōu)化器選擇更好的計(jì)劃。

  • 探討不同的訪問(wèn)路徑是否可以顯著提高性能

  • 標(biāo)識(shí)適合于次優(yōu)計(jì)劃的SQL語(yǔ)句

產(chǎn)出的形式是報(bào)告或建議,以及每項(xiàng)建議的理由及其預(yù)期收益。該建議涉及對(duì)象統(tǒng)計(jì)信息的集合,新索引的創(chuàng)建,SQL語(yǔ)句的重構(gòu)或SQL profile的創(chuàng)建。 您可以選擇接受建議以完成SQL語(yǔ)句的調(diào)整。

1.4.2.1.3 SQL訪問(wèn)顧問(wèn)

SQL訪問(wèn)顧問(wèn)是內(nèi)部診斷軟件,它建議創(chuàng)建,刪除或保留哪些物化視圖,索引和物化視圖日志。

SQL訪問(wèn)顧問(wèn)將實(shí)際工作負(fù)載作為輸入,或者顧問(wèn)程序可以從模式中獲取假設(shè)的工作負(fù)載。SQL訪問(wèn)顧問(wèn)會(huì)考慮空間使用和查詢性能之間的權(quán)衡,并建議對(duì)新的和現(xiàn)有的物化視圖和索引進(jìn)行最具成本效益的配置。 顧問(wèn)還提出有關(guān)分區(qū)的建議。

1.4.2.1.4 自動(dòng)索引

Oracle數(shù)據(jù)庫(kù)可以持續(xù)監(jiān)控應(yīng)用程序工作負(fù)載,自動(dòng)創(chuàng)建和管理索引。

手動(dòng)創(chuàng)建索引需要深入了解數(shù)據(jù)模型,應(yīng)用程序和數(shù)據(jù)分布。 DBA通常會(huì)選擇創(chuàng)建哪些索引,然后從不修改他們的選擇。 結(jié)果,失去了改進(jìn)的機(jī)會(huì),不必要的索引,可能會(huì)成為性能瓶頸。自動(dòng)索引管理通過(guò)執(zhí)行以下任務(wù)解決了此問(wèn)題:

  • 不斷監(jiān)控工作負(fù)載

  • 創(chuàng)建新索引

  • 重建索引,然后將其標(biāo)記為不可用或不可見(jiàn)

  • 刪除索引

  • 檢查自動(dòng)索引管理對(duì)性能的影響

索引功能實(shí)現(xiàn)是自動(dòng)任務(wù),以固定間隔在后臺(tái)運(yùn)行。 在每次迭代時(shí),該任務(wù)執(zhí)行以下基本步驟:

  • 根據(jù)列和列組使用情況標(biāo)識(shí)候選索引。

  • 在不可用和不可見(jiàn)模式下創(chuàng)建一組候選索引。這些索引不占用存儲(chǔ)空間。

  • 查詢先前執(zhí)行的語(yǔ)句的優(yōu)先級(jí)列表,以確定候選索引是否值得重建。

  • 編譯語(yǔ)句以確定優(yōu)化程序是否會(huì)選擇新索引,然后重建優(yōu)化程序選擇的索引。

  • 執(zhí)行使用自動(dòng)索引的語(yǔ)句

  • 執(zhí)行以下任一操作:

    • 當(dāng)語(yǔ)句顯著改善其性能時(shí),將索引標(biāo)記為可見(jiàn)。只有在驗(yàn)證并將索引標(biāo)記為可見(jiàn)之后,數(shù)據(jù)庫(kù)才會(huì)更改工作負(fù)載中語(yǔ)句的計(jì)劃。在此之前,數(shù)據(jù)庫(kù)不會(huì)使游標(biāo)無(wú)效并繼續(xù)使用舊執(zhí)行計(jì)劃。

    • 標(biāo)記索引在提供不足的性能優(yōu)勢(shì)時(shí)無(wú)法使用。當(dāng)使用其他的索引的概率較低或存在空間壓力時(shí),此操作以延遲方式發(fā)生。

  • 使用SQL計(jì)劃管理避免回歸。索引可能會(huì)使一個(gè)語(yǔ)句受益,但會(huì)導(dǎo)致第二個(gè)語(yǔ)句中的性能下降。在這種情況下,數(shù)據(jù)庫(kù)通過(guò)將索引標(biāo)記為可見(jiàn)來(lái)優(yōu)化第一個(gè)語(yǔ)句。 為了防止第二個(gè)語(yǔ)句的下降,數(shù)據(jù)庫(kù)使用SQL計(jì)劃管理來(lái)保護(hù)它。

  • 刪除長(zhǎng)時(shí)間未使用的索引。

您可以通過(guò)在 DBMS_AUTO_INDEX 包中執(zhí)行以下過(guò)程來(lái)啟用自動(dòng)索引:

EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_MODE','IMPLEMENT')

您還可以使用 DBMS_AUTO_INDEX 包報(bào)告自動(dòng)任務(wù)并配置設(shè)置,例如保留未使用的索引的時(shí)間。

1.4.2.1.5 SQL計(jì)劃管理

SQL計(jì)劃管理是一種預(yù)防機(jī)制,使優(yōu)化程序能夠自動(dòng)管理執(zhí)行計(jì)劃,確保數(shù)據(jù)庫(kù)僅使用已知或已驗(yàn)證的計(jì)劃。

此機(jī)制可以構(gòu)建SQL計(jì)劃基準(zhǔn),該基準(zhǔn)包含每個(gè)SQL語(yǔ)句的一個(gè)或多個(gè)接受的計(jì)劃。 通過(guò)使用基線,SQL計(jì)劃管理可以防止計(jì)劃回歸環(huán)境變化,同時(shí)允許優(yōu)化程序發(fā)現(xiàn)和使用更好的計(jì)劃。

1.4.2.1.6 SQL性能分析器

SQL性能分析器通過(guò)識(shí)別每個(gè)SQL語(yǔ)句的性能差異來(lái)確定更改對(duì)SQL工作負(fù)載的影響。

系統(tǒng)更改(如升級(jí)數(shù)據(jù)庫(kù)或添加索引)可能會(huì)導(dǎo)致執(zhí)行計(jì)劃發(fā)生更改,從而影響SQL性能。 通過(guò)使用SQL性能分析器,您可以準(zhǔn)確地預(yù)測(cè)系統(tǒng)更改對(duì)SQL性能的影響。 使用此信息,您可以在SQL性能下降時(shí)調(diào)整數(shù)據(jù)庫(kù),或在SQL性能提高時(shí)驗(yàn)證和測(cè)量增益。

1.4.2.2 手動(dòng)SQL調(diào)優(yōu)工具

在某些情況下,除了自動(dòng)化工具之外,您可能還需要運(yùn)行手動(dòng)工具。或者,您可能無(wú)法訪問(wèn)自動(dòng)化工具。

1.4.2.2.1 執(zhí)行計(jì)劃

執(zhí)行計(jì)劃是手動(dòng)SQL調(diào)優(yōu)的主要診斷工具。 例如,您可以查看計(jì)劃以確定優(yōu)化程序是選擇預(yù)期的計(jì)劃,還是確定在表上創(chuàng)建索引的效果。

您可以通過(guò)多種方式顯示執(zhí)行計(jì)劃。 以下工具是最常用的:

  • DBMS_XPLAN
    您可以使用 DBMS_XPLAN 包方法顯示 EXPLAIN PLAN 命令生成的執(zhí)行計(jì)劃以及 V$SQL_PLAN 的查詢。

  • EXPLAIN PLAN
    通過(guò)此SQL語(yǔ)句,您可以查看優(yōu)化程序在不實(shí)際執(zhí)行語(yǔ)句的情況下用于執(zhí)行SQL語(yǔ)句的執(zhí)行計(jì)劃。

  • V$SQL_PLAN 和相關(guān)視圖
    這些視圖包含有關(guān)已執(zhí)行的SQL語(yǔ)句及其執(zhí)行計(jì)劃的信息,這些信息仍在共享池中。

  • AUTOTRACE
    SQL * Plus中的 AUTOTRACE 命令生成有關(guān)查詢性能的執(zhí)行計(jì)劃和統(tǒng)計(jì)信息。此命令提供磁盤讀取和內(nèi)存讀取等統(tǒng)計(jì)信息。

1.4.2.2.2 實(shí)時(shí)SQL監(jiān)控和實(shí)時(shí)數(shù)據(jù)庫(kù)操作

Oracle數(shù)據(jù)庫(kù)的實(shí)時(shí)SQL監(jiān)視功能使您可以在執(zhí)行時(shí)監(jiān)視SQL語(yǔ)句的性能。默認(rèn)情況下,當(dāng)一個(gè)語(yǔ)句并行運(yùn)行,或者在一次執(zhí)行中消耗了至少5秒的CPU或I/O時(shí)間時(shí),SQL監(jiān)視會(huì)自動(dòng)啟動(dòng)。

數(shù)據(jù)庫(kù)操作是由最終用戶或應(yīng)用程序代碼定義的一組數(shù)據(jù)庫(kù)任務(wù),例如,批處理作業(yè)或提取,轉(zhuǎn)換和加載(ETL)處理。您可以定義,監(jiān)視和報(bào)告數(shù)據(jù)庫(kù)操作。實(shí)時(shí)數(shù)據(jù)庫(kù)操作提供自動(dòng)監(jiān)視復(fù)合操作的功能。執(zhí)行開(kāi)始后,數(shù)據(jù)庫(kù)會(huì)自動(dòng)監(jiān)視并行查詢,DML和DDL語(yǔ)句。

Oracle Enterprise Manager Cloud Control(云控制)提供易于使用的SQL監(jiān)控頁(yè)面?;蛘?,您可以使用 V$SQL_MONITOR 和 V$SQL_PLAN_MONITOR 視圖監(jiān)視與SQL相關(guān)的統(tǒng)計(jì)信息。您可以將這些視圖與以下視圖一起使用,以獲取有關(guān)正在監(jiān)視的執(zhí)行的更多信息:

  • V$ACTIVE_SESSION_HISTORY

  • V$SESSION

  • V$SESSION_LONGOPS

  • V$SQL

  • V$SQL_PLAN

1.4.2.2.3 應(yīng)用程序跟蹤

SQL跟蹤文件提供有關(guān)各個(gè)SQL語(yǔ)句的性能信息:解析計(jì)數(shù),物理和邏輯讀取,庫(kù)高速緩存上的未命中等。

跟蹤文件有時(shí)可用于診斷SQL性能問(wèn)題。您可以使用 DBMS_MONITOR 或 DBMS_SESSION包為特定會(huì)話啟用和禁用SQL跟蹤。當(dāng)您啟用跟蹤機(jī)制時(shí),Oracle數(shù)據(jù)庫(kù)通過(guò)為每個(gè)服務(wù)器進(jìn)程生成跟蹤文件來(lái)實(shí)現(xiàn)跟蹤。

Oracle數(shù)據(jù)庫(kù)提供以下命令行工具來(lái)分析跟蹤文件:

  • TKPROF

此實(shí)用程序接受SQL跟蹤工具生成的跟蹤文件作為輸入,然后生成格式化的輸出文件。

  • trcsess

此實(shí)用程序根據(jù)會(huì)話ID,客戶端ID和服務(wù)ID等條件合并來(lái)自多個(gè)跟蹤文件的跟蹤輸出。在 trcsess 將跟蹤信息合并到單個(gè)輸出文件后,您可以使用TKPROF格式化輸出文件。 trcsess 對(duì)于合并特定會(huì)話的跟蹤以用于性能或調(diào)試目的非常有用。

端到端應(yīng)用程序跟蹤簡(jiǎn)化了診斷多層環(huán)境中性能問(wèn)題的過(guò)程。在這些環(huán)境中,中間層將請(qǐng)求從最終客戶端路由到不同的數(shù)據(jù)庫(kù)會(huì)話,從而難以跨數(shù)據(jù)庫(kù)會(huì)話跟蹤客戶端。端到端應(yīng)用程序跟蹤使用客戶端ID通過(guò)數(shù)據(jù)庫(kù)的所有層唯一地跟蹤特定的最終客戶端。

1.4.2.2.4 優(yōu)化器Hint

Hint是通過(guò)SQL語(yǔ)句中的注釋傳遞給優(yōu)化程序的指令。

Hint使您可以通常由優(yōu)化程序自動(dòng)做出決策。 在測(cè)試或開(kāi)發(fā)環(huán)境中,Hint對(duì)于測(cè)試特定訪問(wèn)路徑的性能很有用。例如,您可能知道特定索引對(duì)某些查詢更具選擇性。 在這種情況下,您可以使用Hint來(lái)指示優(yōu)化器使用更好的執(zhí)行計(jì)劃,如以下示例所示:

SELECT /*+ INDEX (employees emp_department_ix) */ 
       employee_id, department_id 
FROM   employeesWHERE  department_id > 50;

有時(shí),由于拼寫錯(cuò)誤,無(wú)效參數(shù),沖突提示以及通過(guò)轉(zhuǎn)換無(wú)效的提示,數(shù)據(jù)庫(kù)可能不會(huì)使用hint。 從Oracle Database 19c開(kāi)始,您可以生成有關(guān)在計(jì)劃生成期間使用或未使用哪些hint的報(bào)告。

1.4.3 SQL調(diào)優(yōu)工具的用戶界面

Cloud Control是一種系統(tǒng)管理工具,可以對(duì)數(shù)據(jù)庫(kù)環(huán)境進(jìn)行集中管理。 Cloud Control提供對(duì)大多數(shù)調(diào)優(yōu)工具的訪問(wèn)。

通過(guò)結(jié)合圖形控制臺(tái),Oracle管理服務(wù)器,Oracle智能代理,通用服務(wù)和管理工具,Cloud Control提供了一個(gè)全面的系統(tǒng)管理平臺(tái)。

您可以使用命令行界面訪問(wèn)所有SQL調(diào)優(yōu)工具。 例如,DBMS_SQLTUNE 包是SQL調(diào)優(yōu)顧問(wèn)的命令行界面。

Oracle建議將Cloud Control作為數(shù)據(jù)庫(kù)管理和調(diào)優(yōu)的最佳界面。但是如果命令行界面能夠更好地說(shuō)明特定的概念或任務(wù),我們的示例也將使用命令行。

“怎么調(diào)優(yōu)Oracle SQL”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!


網(wǎng)站名稱:怎么調(diào)優(yōu)OracleSQL
轉(zhuǎn)載注明:http://weahome.cn/article/jsdjjj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部