<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 4, comments - 5, trackbacks - 0, articles - 10

    2006年11月16日

    1、FIRST_ROWS
    ?? 指示優化器盡可能快地返回前n行記錄,提高響應速度。如果沒有指定參數,則返回第一行。該提示對Update和Insert無效,對包含塊操作的select語句無效,如排序和group。 這樣的語句不能優化最佳響應時間,因為Oracle在返回第一行之前,必須獲得所有的記錄。如果在這種情況下使用了該提示,優化器會優化最佳吞吐量(相當于ALL_ROWS提示)。
    ?
    2、FULL
    ?? 指示優化器執行全表掃描,即使有索引,也不會走索引。
    ??
    ??? SELECT ? /* +?FULL(e)? */ ?employee_id,?last_name
    ??????
    FROM ?hr.employees?e? WHERE ?last_name? LIKE ?:b1;
    ??
    ?? 注意:如果表有別名,則必須使用別名。并且即使表加上了schema名稱,在提示中也不能指定schema名稱。
    ?
    3、HASH
    ?? 指示優化器使用Hash掃描表,只適用于表簇中的表。
    ?
    4、INDEX
    ?? 指示優化器適用Index掃描表,適用于函數、域、B樹、位圖和位圖聯合索引。
    ?? Index提示遵循以下規范:
    ?? a、如果Index提示指定單個的索引,那么數據庫執行該索引上的掃描,優化器不會執行全表掃描或者表上的其他索引。
    ?? b、對于指定了多個索引的組合的Index提示,Oracle推薦使用INDEX_COMBINE而不是INDEX提示,因為它更加通用,如果Index提示指定了index列表,那么優化器會考慮走每個索引的代碼,并從中選擇代價最小的一條索引,如果掃描多個index的代價最小,那么優化器會掃描該個索引列表。優化器不會走全表掃描或者沒有在index列表上的索引。
    ?? c、如果Index提示沒有指定Index,優化器會評估掃描每個Index的代價,并選擇代價最小的Index,如果組合Index代價最小,那么優化器會選擇掃描多個索引,并合并結果集。優化器不會走全表掃描。
    ?
    ??? SELECT ? /* +?INDEX?(employees?emp_department_ix) */ ??employee_id,?department_id
    ????
    FROM ?employees? WHERE ?department_id? > ? 50 ;
    ?
    5、INDEX_ASC
    ?? 按索引值的升序方向掃描索引,其他參數與INDEX 提示完全一樣。
    ?
    6、INDEX_COMBINE
    ?? 聯合索引提示。索引規則與INDEX提示一樣。
    ??
    ??? SELECT ? /* +?INDEX_COMBINE(e?emp_manager_ix?emp_department_ix)? */ ? *
    FROM ?employees?e
    WHERE ?manager_id? = ? 108
    OR ?department_id? = ? 110 ;
    ?
    7、INDEX_DESC
    ? 降序INDEX提示。
    ?
    SELECT ? /* +?INDEX_DESC(e?emp_name_ix)? */ ? *
    FROM ?employees?e;
    ?
    8、INDEX_FFS
    ? 指示優化器執行快速全索引掃描,而不是全表掃描。
    ?
    SELECT ? /* +?INDEX_FFS(e?emp_name_ix)? */ ?first_name
    FROM ?employees?e;
    ?
    9、INDEX_JOIN
    ??以INDEX JOIN的方式掃描,必須存在足夠少的INDEX,這些索引包含著查詢中所有的列。
    ?
    SELECT ? /* +?INDEX_JOIN(e?emp_manager_ix?emp_department_ix)? */ ?department_id
    FROM ?employees?e? WHERE ?manager_id? < ? 110 ? AND ?department_id? < ? 50 ;
    ?
    10、INDEX_SS
    ? 索引跳躍掃描提示。
    ?
    11、LEADING
    ? 指定特定的表放在執行計劃的前面,它比ORDERED提示更加通用。
    ? 如果因為Join路線的依賴關系而不能首先被Join,提示就會被忽略;如果指定了兩個或者多個沖突的LEADING提示,則他們都會被忽略;如果指定了ORDERED提示,那么LEADING就會被忽略。
    ?
    12、MERGE
    ??將視圖合并到查詢。
    ? 如果視圖查詢語句包含GROUP BY子句或者SELECT語句中用到了 DISTINCT,那么優化器能夠將視圖合并到查詢語句中,合成的合并也能夠合并IN子查詢,如果IN子查詢沒有關聯。
    ?
    ?? SELECT ? /* +?MERGE(v)? */ ?e1.last_name,?e1.salary,?v.avg_salary
    FROM ?employees?e1,
    (
    SELECT ?department_id,? avg (salary)?avg_salary
    FROM ?employees?e2
    GROUP ? BY ?department_id)?v
    WHERE ?e1.department_id? = ?v.department_id? AND ?e1.salary? > ?v.avg_salary;
    ?
    13、NOAPPEND
    ?? 在并行模式中使用常規插入方法。
    ?
    14、NOCACHE
    ?
    15、NO_EXPAND
    ?
    16、NO_FACT
    ?
    17、NO_INDEX
    ?
    18、NO_INDEX_SS
    ?
    19、NO_MERGE
    ?
    20、NO_PARALLEL
    ?? 覆蓋了使用DDL語言創建或者更改table的PARALLEL參數的設置。
    ?
    21、NO_PARALLEL_INDEX
    ?? 覆蓋了使用DDL語言創建或者更改index的PARALLEL參數的設置。
    ?
    22、NO_PUSH_PRED
    ??
    23、NO_PUSH_SUBQ
    ?
    24、NO_PX_JOIN_FILTER
    ??? 阻止優化器使用并行聯合位圖過濾器
    ?
    25、NO_REWRITE
    ??? 使查詢重寫失效
    ?
    26、NO_QUERY_TRANSFORMATION
    ??? 跳過所有查詢轉換,包括但不限于:OR-expansion、視圖合并、無嵌套子查詢、星型轉換和物化視圖重寫。
    ?
    27、NO_STAR_TRANSFORMATION
    ?
    28、NO_UNNEST
    ?
    29、NO_USE_HASH
    ?
    30、ORDERED
    ?? 指示優化器按照FROM子句出現的表順序join表。Oracle推薦使用LEADING提示。
    ?
    31、PARALLEL
    ?? 指示優化器使用指定數目的服務器去執行并行操作,包括SELECT、INSERT、MERGE、UPDATE和DELETE部分的語句和表掃描部分都可使用。
    ?? 注意:如果發生sort或者group,那么服務器的數量應該是提示指定的兩倍。
    ?? 如果任何并行都被禁止,那么提示就會被忽略。
    ?? 如果指定了DEFAULT或者沒有指定任何值,那么查詢器就會去檢查初始參數的設置來決定并行度。
    ?? 臨時表上的該提示將會被忽略。
    ?
    32、PARALLEL_INDEX
    ?? 為分區索引指定并行索引掃描的數量。示例:
    ??? SELECT /*+ PARALLEL_INDEX(table1, index1, 3) */
    ?
    33、PQ_DISTRIBUTE
    ?
    34、PUSH_PRED
    ?
    35、PUSH_SUBQ
    ?
    36、REWRITE
    ??? 對物化視圖使用查詢重寫。

    posted @ 2006-11-16 17:05 勇敢的心 閱讀(2193) | 評論 (1)編輯 收藏

    2006年11月14日

    (1)、Oracle插入數據有兩種方式:
    a、常規插入:重新使用table中的自由空間,在已有數據中插入新數據;維護引用完整性約束。
    b、Direct-Path插入:在表中已有數據之后插入新數據;數據直接插入數據文件,繞過buffer cache;已有數據中的自由空間沒有被重新利用;忽略了引用完整性約束。
    ?
    (2)、連續模式:一個進程執行sql語句;
    ?????? 并行模式:多個進程同時執行一個sql語句,即并行執行。
    ?
    (3)Direct-Path插入的優點:
    1、可以disable redo log和undo log;而常規插入卻不可以如此,并且重用自由空間和維護引用完整性。
    2、通過CREATE TABLE...AS SELECT 語句可以從現有表中創建新表,使用Direct-Path插入可以在插入時更新定義在目標表上的任意索引。
    3、Direct-Path插入能保證事務的原子性,即使在并行模式下。使用SQL*Loader在并行模式加載中不能保證原子性。
    4、當并行Direct-Path加載發生錯誤時,索引被標志成UNUSABLE。
    5、如果想使用表壓縮的壓縮格式存儲數據,必須使用Direct-Path插入。
    ?
    ?
    (4)使用Direct-Path插入:
    ?
    在連續模式中,在Insert語句中指定“APPEND”提示,在INSERT關鍵字之后,或者在INSERT子查詢中的SELECT關鍵字之后。
    在并行DML模式中,默認的就是DIRECT-PATH插入,為了運行并行DML模式,必須滿足以下條件:
    a、必須是Oracle企業版;
    b、必須在session中使并行DML生效,執行以下sql語句:
    ALTER SESSION { ENABLE | FORCE } PARALLEL DML;
    c、必須指定table的并行屬性,在創建的時候或者其他時候,或者在insert操作時使用“PARALLEL”提示。
    ?
    為了使Direct-Path Insert模式失效,在INSERT語句中指定“NOAPPEND”提示,覆蓋并行DML模式。
    ?
    (5)、Direct-Path INSERT 是如何工作的
    ?
    在分區表和非分區表都可以使用Direct-Path INSERT
    ?
    連續Direct-Path INSERT到分區和非分區表
    ? 單個進程插入數據到高水位標志之上,當執行完commit之后,高水位標志得到更新。
    ?
    并行Direct-Path INSERT到分區表
    ? 類似于serial Direct-Path INSERT,每個并行操作分配給一個或者多個分區,每個并行操作插入數據到各自的分區段的高水位標志之上,commit之后,用戶就能看到更新的數據。
    ?
    并行Direct-Path INSERT到非分區表
    ? 每個并行執行分配一個新的臨時段,并插入數據到臨時段。當commit運行后,并行執行協調者合并新的臨時段到主表段,用戶就能看到更新的數據。
    ?
    為Direct-Path INSERT指定的Log模式
    ?? Direct-Path INSERT可以使用Log或者不使用Log。
    ?
    (6)、其他需要注意的地方:
    ??? 索引維護:Oracle在Direct-Path INSERT 操作末尾,對具有索引的表執行索引維護,這樣就避免了在drop掉索引后,再rebuild。
    ??? 使用的空間:Direct-Path INSERT比常規的插入需要更多的空間。因為它將數據插入在高水位之上。并行插入非分區表需要更多的空間,因為它需要為每一個并行創建臨時段。
    ??? 鎖:在插入期間,數據庫在表上獲得排他鎖,用戶不能在表上執行并行插入、更新或者刪除操作,并行的索引創建和build也不被允許。但卻可以并行查詢,但查詢返回的是插入之前的結果集。

    posted @ 2006-11-14 09:22 勇敢的心 閱讀(2467) | 評論 (0)編輯 收藏

    2005年12月30日

    在Liferay的CMS中articles、structures和templates是三個重要的概念。

    article:可以通過article顯示Liferay Portal頁面的內容,如首頁默認的就是Home Index這個article。 article可以由template驅動,即article的內容和展示樣式都由template描述的xslt模板所決定,當然article也可不由template驅動,這時article的內容可以由Liferay內置的Rich Html Editor編寫,但是可重用性較差。

    structure:定義了xml的格式(Schema ),它與article沒有直接的關聯,structure被應用到template中,從而影響article的內容。Liferay可以可視化地編輯Schema 。

    template:article的模板,決定article的內容和顯示樣式,此外Liferay還定義了一些tag,可以方便地應用到模板中,如"<runtime-portlet name="58" />",就是在加載模板時動態地將Login Portlet加載到xml。

    此外在編寫article或者template,輸入中文會顯示亂碼,我們的解決方法是修改了Liferay的
    com.liferay.util.xml.XMLFormatter 的toString()方法
    和com.liferay.portlet.journal.util.JournalUtil 的transform()方法
    使用StringWriter來進行輸出,而不是ByteArrayOutputStream。

    后記:寫得有點亂,歡迎有興趣的朋友批評指正,交流學習。

    posted @ 2005-12-30 10:59 勇敢的心 閱讀(1322) | 評論 (0)編輯 收藏

    2005年11月28日

    一、使用 Spring 的 ActionSupport 類整合 Structs
    使用 Spring 的 DelegatingRequestProcessor 覆蓋 Struts 的 RequestProcessor 將 Struts Action 管理委托給 Spring 框架裝載應用程序環境
    二、覆蓋 RequestProcessor
    使用 org.springframework.web.struts.DelegatingRequestProcessor 類來覆蓋 Struts 的 RequestProcessor 處理程序
    三、將Action管理委托給 Spring

    原文請參見“使用 Spring 更好地處理 Struts 動作”

    http://www-128.ibm.com/developerworks/cn/java/j-sr2.html

    posted @ 2005-11-28 10:39 勇敢的心 閱讀(842) | 評論 (0)編輯 收藏

    主站蜘蛛池模板: 最近免费中文字幕mv电影| 搡女人免费免费视频观看| 91精品国产亚洲爽啪在线影院| 日韩毛片在线免费观看| 亚欧乱色国产精品免费视频| 亚洲免费中文字幕| 精品亚洲成AV人在线观看| 久久免费视频精品| 亚洲美女视频网址| 一个人免费观看视频www| 亚洲国产精品国自产拍AV| 中文字幕无码一区二区免费| 久久精品7亚洲午夜a| 亚洲日韩国产一区二区三区在线 | 一级毛片成人免费看a| 2021在线观看视频精品免费| 亚洲综合国产一区二区三区 | 亚洲第一网站免费视频| 亚洲中文久久精品无码1 | 亚洲综合精品第一页| 免费国产99久久久香蕉| 亚洲区日韩区无码区| 亚洲国产综合AV在线观看| 日韩中文字幕精品免费一区| 亚洲高清视频在线观看| 18观看免费永久视频| 亚洲人成电影网站色www| 亚洲成人高清在线| 97av免费视频| 亚洲av色香蕉一区二区三区蜜桃| 久久久久久亚洲精品不卡| **一级一级毛片免费观看| 国产成人精品日本亚洲语音| 成年女人毛片免费视频| 久久精品亚洲AV久久久无码| 免费日韩在线视频| 久久久久国产精品免费网站| 久久久久亚洲国产| 亚洲色WWW成人永久网址| 日韩av无码免费播放| 亚洲夂夂婷婷色拍WW47|