激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Oracle - Oracle SQL性能優化系列學習一

Oracle SQL性能優化系列學習一

2019-10-23 15:04Oracle教程網 Oracle

Oracle SQL性能優化系列學習一

1.選用適合的ORACLE優化器

ORACLE的優化器共有3種:

a.RULE(基于規則)b.COST(基于成本)c.CHOOSE(選擇性)

設置缺省的優化器,可以通過對init.ora文件中OPTIMIZER_MODE參數的各種聲明,如RULE,COST,CHOOSE,ALL_ROWS,FIRST_ROWS.你當然也在SQL句級或是會話(session)級對其進行覆蓋.

為了使用基于成本的優化器(CBO,Cost-BasedOptimizer),你必須經常運行analyze命令,以增加數據庫中的對象統計信息(objectstatistics)的準確性.

如果數據庫的優化器模式設置為選擇性(CHOOSE),那么實際的優化器模式將和是否運行過analyze命令有關.如果table已經被analyze過,優化器模式將自動成為CBO,反之,數據庫將采用RULE形式的優化器.

在缺省情況下,ORACLE采用CHOOSE優化器,為了避免那些不必要的全表掃描(fulltablescan),你必須盡量避免使用CHOOSE優化器,而直接采用基于規則或者基于成本的優化器.

2.訪問Table的方式

ORACLE采用兩種訪問表中記錄的方式:

a.全表掃描

全表掃描就是順序地訪問表中每條記錄.ORACLE采用一次讀入多個數據塊(databaseblock)的方式優化全表掃描.

b.通過ROWID訪問表

你可以采用基于ROWID的訪問方式情況,提高訪問表的效率,,ROWID包含了表中記錄的物理位置信息..ORACLE采用索引(INDEX)實現了數據和存放數據的物理位置(ROWID)之間的聯系.通常索引提供了快速訪問ROWID的方法,因此那些基于索引列的查詢就可以得到性能上的提高.

3.共享SQL語句

為了不重復解析相同的SQL語句,在第一次解析之后,ORACLE將SQL語句存放在內存中.這塊位于系統全局區域SGA(systemglobalarea)的共享池(sharedbufferpool)中的內存可以被所有的數據庫用戶共享.因此,當你執行一個SQL語句(有時被稱為一個游標)時,如果它和之前的執行過的語句完全相同,ORACLE就能很快獲得已經被解析的語句以及最好的執行路徑.ORACLE的這個功能大大地提高了SQL的執行性能并節省了內存的使用.

可惜的是ORACLE只對簡單的表提供高速緩沖(cachebuffering),這個功能并不適用于多表連接查詢.

數據庫管理員必須在init.ora中為這個區域設置合適的參數,當這個內存區域越大,就可以保留更多的語句,當然被共享的可能性也就越大了.

當你向ORACLE提交一個SQL語句,ORACLE會首先在這塊內存中查找相同的語句.

這里需要注明的是,ORACLE對兩者采取的是一種嚴格匹配,要達成共享,SQL語句必須完全相同(包括空格,換行等).

共享的語句必須滿足三個條件:

A.字符級的比較:

當前被執行的語句和共享池中的語句必須完全相同.

例如:

SELECT*FROMEMP;

和下列每一個都不同

SELECT*fromEMP;

Select*FromEmp;

SELECT*FROMEMP;

B.兩個語句所指的對象必須完全相同:

例如:

用戶對象名如何訪問

Jacksal_limitprivatesynonym

Work_citypublicsynonym

Plant_detailpublicsynonym

Jillsal_limitprivatesynonym

Work_citypublicsynonym

Plant_detailtableowner

考慮一下下列SQL語句能否在這兩個用戶之間共享.

SQL能否共享,原因

selectmax(sal_cap)fromsal_limit;

不能。每個用戶都有一個privatesynonym-sal_limit,它們是不同的對象

selectcount(*0fromwork_citywheresdesclike'NEW%';

能。兩個用戶訪問相同的對象publicsynonym-work_city

selecta.sdesc,b.locationfromwork_citya,plant_detailbwherea.city_id=b.city_id

不能。用戶jack通過privatesynonym訪問plant_detail而jill是表的所有者,對象不同.

C.兩個SQL語句中必須使用相同的名字的綁定變量(bindvariables)

例如:

第一組的兩個SQL語句是相同的(可以共享),而第二組中的兩個語句是不同的(即使在運行時,賦于不同的綁定變量相同的值)

[NextPage]

a.

selectpin,namefrompeoplewherepin=:blk1.pin;

selectpin,namefrompeoplewherepin=:blk1.pin;

b.

selectpin,namefrompeoplewherepin=:blk1.ot_ind;

selectpin,namefrompeoplewherepin=:blk1.ov_ind;

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 黄色网址在线免费 | 国产女做a爱免费视频 | 精品在线观看一区二区 | 国产一国产一级毛片视频 | 黄色特级视频 | 在线1区 | 黄色影院在线观看视频 | 红杏亚洲影院一区二区三区 | 久久在线免费视频 | 欧美性生交xxxxx久久久缅北 | 欧美女优一区 | 欧美成a人片在线观看久 | 久久精品成人影院 | 日本欧美一区二区 | 国内精品久久久久久影视8 国产一区二区成人在线 | 久久精品99国产国产精 | 日本黄色大片免费 | 国产精品99久久免费观看 | 婷婷一区二区三区 | 叉逼视频 | xxx日本视频 | 懂色av懂色aⅴ精彩av | 九九热在线视频观看这里只有精品 | 久久久久国产成人免费精品免费 | 狠狠干夜夜草 | 2021狠狠操 | 国产在线精品区 | 黄色aaa视频 | 91 免费视频 | 19禁国产精品福利视频 | 国产精品一品二区三区四区18 | 黄色电影免费网址 | 成年免费在线视频 | 日韩做爰视频免费 | 在线视频1区| 国产人成精品一区二区三 | 中文字幕在线观看二区 | 国产午夜亚洲精品午夜鲁丝片 | 国产69精品久久久久久野外 | 免费观看又色又爽又黄的崩锅 | 久久美女色视频 |