程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SyBase數據庫 >> SyBase綜合文章 >> 關於tempdb的優化

關於tempdb的優化

編輯:SyBase綜合文章
缺省情況下,tempdb數據庫是放置在master設備上,容量為2M,而臨時數據庫是活動最為平凡的數據庫常常被用來排序、創建臨時表、重格式化等操作,所以tempdb的優化應該受到特別的關注。

  第一步:將臨時數據庫與高速緩沖進行綁定。
  由於臨時表的創建、使用,臨時數據庫會頻繁地使用數據緩存,所以應為臨時數據庫創建高速緩存,從而可以使其常駐內存並有助於分散I/O:
  1、創建命名高速緩存
    sp_cacheconfig “tempdb_cache”,”10m”,”mixed”
  2、重新啟動server
  3、捆綁臨時數據庫到tempdb_cache高速緩存
    sp_bindcache “tempdb_cache”, tempdb
  4、若有大的I/O,配置內存池

  第二步:優化臨時表
  
大多數臨時表的使用是簡單的,很少需要優化。但需要對臨時表進行復雜的訪問則、
  應通過使用多個過程或批處理來把表的創建和索引分開。以下兩種技術可以改善臨時表的優化
  1、在臨時表上創建索引
    1)臨時表必須存在
    2)統計頁必須存在(即不能在空表上創建索引)
  2、把對臨時表的復雜的使用分散到多個批處理或過程中,以便為優化器提供信息
    下面的這個過程需要進行優化:
     create proc base_proc
     as
     select * into #huge_result from auths
     select * from article, #huge_result where article.author_code=
     #huge_result.author_code and sex=”0”

  使用兩個過程可以得到更好的性能
  1)
    create proc base_proc
    as
    select *
    into #huge_result
    from auths
    exec select_proc

  2)
    create proc select_proc
    as
    select * from article,#huge_result
    where article.author_code=#huge_result.author_code and sex=”0”

  說明:在同一個存儲過程或批處理中,創建並使用一個表時,查詢優化器無法決定這個表的大小。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved