freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

chap6管理和維護(hù)表(編輯修改稿)

2025-03-31 19:37 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 商 ID invoice_number VARCHAR2(50), 發(fā)票編號(hào) invoice_date DATE DEFAULT SYSDATE, 發(fā)票日期 invoice_total NUMBER(9,2) , 發(fā)票總數(shù) payment_total NUMBER(9,2) DEFAULT 0, 付款總數(shù) CONSTRAINT invoiceid_vendorid_pk PRIMARY KEY (invoice_id,vendor_id), CONSTRAINT vendor_id_un UNIQUE (vendor_id), CONSTRAINT invoice_fk_vendors FOREIGN KEY (vendor_id) REFERENCES vendors(vendor_id) ON DELETE CASCADE )。 創(chuàng)建臨時(shí)表 一、認(rèn)識(shí)臨時(shí)表 ? 目前所有使用 Oracle 作為數(shù)據(jù)庫(kù)支撐平臺(tái)的應(yīng)用,大部分?jǐn)?shù)據(jù)量比較龐大的系統(tǒng),即表的數(shù)據(jù)量一般情況下都是在百萬(wàn)級(jí)以上的數(shù)據(jù)量。 ? 當(dāng)然在 Oracle 中創(chuàng)建分區(qū)是一種不錯(cuò)的選擇,但是當(dāng)發(fā)現(xiàn)應(yīng)用有多張表關(guān)聯(lián)的時(shí)候,并且這些表大部分都是比較龐大,而關(guān)聯(lián)的時(shí)候發(fā)現(xiàn)其中的某一張或者某幾張表關(guān)聯(lián)之后得到的結(jié)果集非常小并且查詢得到這個(gè)結(jié)果集的速度非??欤敲催@個(gè)時(shí)候考慮在 Oracle 中創(chuàng)建 “臨時(shí)表 ”。 創(chuàng)建臨時(shí)表 ? 對(duì) 臨時(shí)表的理解 – 在 Oracle 中創(chuàng)建一張表,這個(gè)表不用于其他的什么功能,主要用于自己的軟件系統(tǒng)一些特有功能才用的,而當(dāng)你用完之后表中的數(shù)據(jù)就沒用了。 – Oracle 的臨時(shí)表創(chuàng)建之后基本不占用表空間,如果你沒有指定臨時(shí)表 (包括臨時(shí)表的索引 )存放的表空的時(shí)候,你插入到臨時(shí)表的數(shù)據(jù)是存放在 ORACLE 系統(tǒng)的臨時(shí)表空間中 ( TEMP )。 創(chuàng)建臨時(shí)表 二、臨時(shí)表的創(chuàng)建 創(chuàng)建 Oracle 臨時(shí)表,可以有兩種類型的臨時(shí)表: 1 會(huì)話級(jí)的臨時(shí)表 2 事務(wù)級(jí)的臨時(shí)表 創(chuàng)建臨時(shí)表 1) 會(huì)話級(jí)的臨時(shí)表 因?yàn)闀?huì)話級(jí)臨時(shí)表中的數(shù)據(jù)和當(dāng)前會(huì)話有關(guān)系,當(dāng)當(dāng)前SESSION 不退出的情況下,臨時(shí)表中的數(shù)據(jù)就還存在,而當(dāng)退出當(dāng)前 SESSION 的時(shí)候,臨時(shí)表中的數(shù)據(jù)就全部沒有了,當(dāng)然這個(gè)時(shí)候如果以另外一個(gè) SESSION 登陸的時(shí)候是看不到另外一個(gè) SESSION 中插入到臨時(shí)表中的數(shù)據(jù)的。即兩個(gè)不同的 SESSION 所插入的數(shù)據(jù)是互不相干的。當(dāng)某一個(gè) SESSION 退出之后臨時(shí)表中的數(shù)據(jù)就被截?cái)?(truncate table ,即數(shù)據(jù)清空 )了。 創(chuàng)建臨時(shí)表 會(huì)話級(jí)的臨時(shí)表創(chuàng)建方法: Create Global Temporary Table Table_Name (Col1 Type1,Col2 Type2...) On Commit Preserve Rows 。 舉例: create global temporary table Student (Stu_id Number(5), Class_id Number(5), Stu_Name Varchar2(8), Stu_Memo varchar2(200)) on Commit Preserve Rows 。 創(chuàng)建臨時(shí)表 2 事務(wù)級(jí)臨時(shí)表 事務(wù)級(jí)臨時(shí)表是指該臨時(shí)表與事務(wù)相關(guān),當(dāng)進(jìn)行事務(wù)提交或者事務(wù)回滾的時(shí)候,臨時(shí)表中的數(shù)據(jù)將自行被截?cái)?,其他的?nèi)容和會(huì)話級(jí)的臨時(shí)表的一致 (包括退出 SESSION 的時(shí)候,事務(wù)級(jí)的臨時(shí)表也會(huì)被自動(dòng)截?cái)?)。 創(chuàng)建臨時(shí)表 事務(wù)級(jí)臨時(shí)表的創(chuàng)建方法: Create Global Temporary Table Table_Name (Col1 Type1,Col2 Type2...) On Commit Delete Rows 。 舉例: create global temporary table Classes (Class_id Number(5), Class_Name Varchar2(8), Class_Memo varchar2(200)) on Commit delete Rows 。 創(chuàng)建臨時(shí)表 3 兩種類型臨時(shí)表的區(qū)別 會(huì)話級(jí)臨時(shí)表采用 on mit preserve rows 。而事務(wù)級(jí)則采用 on mit delete rows 。 用法上,會(huì)話級(jí)別只有當(dāng)會(huì)話結(jié)束臨時(shí)表中的數(shù)據(jù)才會(huì)被截?cái)?,而且事?wù)級(jí)臨時(shí)表則不管是 mit 、 rollback 或者是會(huì)話結(jié)束,臨時(shí)表中的數(shù)據(jù)都將被截?cái)? 。 創(chuàng)建臨時(shí)表 4 什么時(shí)候使用臨時(shí)表 1 ) 當(dāng)某一個(gè) SQL 語(yǔ)句關(guān)聯(lián)的表在 2 張及以上,并且和一些小表關(guān)聯(lián)??梢圆捎脤⒋蟊磉M(jìn)行分拆并且得到比較小的結(jié)果集合存放在臨時(shí)表中 2 ) 程序執(zhí)行過程中可能需要存放一些臨時(shí)的數(shù)據(jù),這些數(shù)據(jù)在整個(gè)程序的會(huì)話過程中都需要用的等等。 創(chuàng)建臨時(shí)表 5 臨時(shí)表的不足之處 1 )不支持 lob 對(duì)象,這也許是設(shè)計(jì)者基于運(yùn)行效率的考慮,但實(shí)際應(yīng)用中確實(shí)需要此功能時(shí)就無法使用臨時(shí)表了。 2 )不支持主外鍵關(guān)系 所以,由于以上原因,可以自己創(chuàng)建臨時(shí)表,以彌補(bǔ) oracle 臨時(shí)表的不足之處。 閱讀材料: 臨時(shí)表 創(chuàng)建方法: 1 、以常規(guī)表的形式創(chuàng)建臨時(shí)數(shù)據(jù)表的表結(jié)構(gòu),但要在每一個(gè)表的主鍵中加入一個(gè) SessionID 列以區(qū)分不同的會(huì)話。 (可以有 lob 列和主外鍵 ) 2 、寫一個(gè)用戶注銷觸發(fā)器,在用戶結(jié)束會(huì)話的時(shí)候刪除本次會(huì)話所插入的所有記錄 (SessionID 等于本次會(huì)話 ID 的記錄 ) 。 3 、程序?qū)懭霐?shù)據(jù)時(shí),要順便將當(dāng)前的會(huì)話 ID(SessionID) 寫入表中。 4 、程序讀取數(shù)據(jù)時(shí),只讀取與當(dāng)前會(huì)話 ID 相同的記錄即可。 功能增強(qiáng)的擴(kuò)展設(shè)計(jì): 1 、可以在數(shù)據(jù)表上建立一個(gè)視圖,視圖對(duì)記錄的篩選條件就是當(dāng)前會(huì)話的 SessionID 。 2 、數(shù)據(jù)表中的 SessionID 列可以通過 Trigger 實(shí)現(xiàn),以實(shí)現(xiàn)對(duì)應(yīng)用層的透明性。 3 、高級(jí)用戶可以訪問全局?jǐn)?shù)據(jù),以實(shí)現(xiàn)更加復(fù)雜的功能。 擴(kuò)展臨時(shí)表的優(yōu)點(diǎn): 1 、實(shí)現(xiàn)了與 Oracle 的基于會(huì)話的臨時(shí)表相同的功能。 2 、支持 SDO_GEOMETRY 等 lob 數(shù)據(jù)類型。 3 、支持表間的主外鍵連接,且主外鍵連接也是基于會(huì)話的。 4 、高級(jí)用戶可以訪問全局?jǐn)?shù)據(jù),以實(shí)現(xiàn)更加復(fù)雜的功能。 維護(hù)參數(shù) ? 1 initrans ? initrans用于對(duì)數(shù)據(jù)塊的行級(jí)并行操作的控制。首先介紹事務(wù)槽的概念,事務(wù)槽在數(shù)據(jù)塊頭中,存儲(chǔ)了有關(guān)事務(wù)的控制信息。數(shù)據(jù)塊中的每行數(shù)據(jù)有一個(gè)鎖位,該鎖位號(hào)與事務(wù)槽相同,數(shù)據(jù)庫(kù)服務(wù)器就是通過每行的鎖位找到數(shù)據(jù)塊頭中的事務(wù)槽,利用數(shù)據(jù)槽中的事務(wù)信息完成對(duì)該行數(shù)據(jù)的操作。每個(gè)事務(wù)只使用一個(gè)事務(wù)槽。 ? 設(shè) initrans值為 2,則數(shù)據(jù)庫(kù)服務(wù)器在一個(gè)數(shù)據(jù)塊中最多有兩個(gè)并行的事務(wù)可以獨(dú)立、并行的通過自己的事務(wù)槽,實(shí)現(xiàn)對(duì)共享數(shù)據(jù)塊中的行數(shù)據(jù)的事務(wù)操作。 2 MAXTRANS ? MAXTRANS 指的是如果 INITRANS 空間不夠用了,就會(huì)自動(dòng)擴(kuò)展 ITL ,直到最大值也就是 MAXTRANS 值為止,預(yù)設(shè)是 255 。但是,如果 BLOCK 空間已經(jīng)不足,也有可能無法持續(xù)擴(kuò)充到 255 個(gè) ITS 空間喔。 ? maxtrains定義了數(shù)據(jù)塊中數(shù)據(jù)槽的最大值。事務(wù)表會(huì)根據(jù)需要?jiǎng)討B(tài)擴(kuò)展,最大達(dá)到 MAXTRANS 個(gè)條目(假設(shè)塊上有足夠的自由空間)。所分配的每個(gè)事務(wù)條目需要占用塊首部中的 23~ 24 字節(jié)的存儲(chǔ)空間。 ? 如果有大量的并發(fā)訪問使用的這個(gè)塊,則參數(shù)不能太小,否則資源競(jìng)爭(zhēng)將導(dǎo)致系統(tǒng)并發(fā)性能下降。 3 PCTFREE ? 要形容一個(gè) BLOCK 的運(yùn)作,我們可以把一個(gè) BLOCK 想成一個(gè)水杯。侍者把水倒入放在我們面前的水杯,要多滿呢,我們要求他倒 9 分滿好了,這時(shí)候 PCTFREE 代表著設(shè)定為 10 ,意思就是說,當(dāng) BLOCK 使用到達(dá) 90% 的時(shí)候,就不可以在使用了,這個(gè) BLOCK 應(yīng)該從 FREELIST 列表中移除 (unlink) 。為何要保留 10% 的空間呢?這是為了提供 update 數(shù)據(jù)時(shí)所可能增加的空間使用,如果空間保留的太小,就容易發(fā)生 row chaining 。 ? 如果希望在對(duì)象創(chuàng)建后更改 pctfree參數(shù),可通過下列命令 ? SQL alter table t1 pctfree 20。 ? Table altered. ? 可通過 dba_tables,dba_indexes查看 pct_free的參數(shù)值,示例如下 ? SQL select table_name,pct_free from user_tables where table_name=39。T139。 ? TABLE_NAME PCT_FREE ? ? T1 20 4 pctused ? 當(dāng)一個(gè) bl
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1