當前位置:首頁 » 硬碟大全 » 數據字典的緩存方案
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

數據字典的緩存方案

發布時間: 2022-12-22 00:04:27

① spring +mvc 框架 關於數據字典使用問題

暈,,肯定是更新數據字典的時候,從新載入一邊數據字典數據了。
不過有些問題,分布式部署的時候,會有問題,你可以考慮共享緩存等方案。

http://www.cnblogs.com/javaMan/p/3693953.html 參考下

② 達夢資料庫的高性能

DM7採用多趟掃描、代價估算的優化策略,支持查詢計劃的HINT功能,可供經驗豐富的DBA對特定查詢進行優化改進,進一步提高查詢的效率和靈活性。
DM7提供查詢計劃的重用,可以減少重復分析操作,有效提升語句的執行效率。DM7採用參數化常量方法,使得常量值不同的查詢語句,同樣可以重用查詢計劃。
DM7提供查詢結果集緩存策略,在伺服器端實現結果集緩存,可以在提升查詢速度的同時,保證緩存結果的實時性和正確性。
DM7採用更加有效的非同步檢查點機制,相對原有檢查點長時間佔用緩沖區的策略相比,邏輯更加簡單,速度更快,對整體系統運行影響更小。
DM7採用多版本並發控制技術,使得查詢與更新操作間互不幹擾,有效提高了高並發應用場景中的執行效率。
DM7中實現了數據字典緩存技術,執行期間不必封鎖整個數據字典,可以有效降低DDL操作對整體系統並發執行的影響。
DM7為具有多個處理器 (CPU) 的計算機提供了並行查詢,以優化查詢執行和索引操作。並行查詢其優勢就是可以通過多個線程來處理查詢作業,從而提高查詢的效率。
DM7數據壓縮採用智能壓縮策略,自動選擇最合適的壓縮演算法進行數據壓縮,可以顯著提升數據的壓縮比,進一步減少系統的空間資源開銷。
DM7同時支持行存儲引擎與列存儲引擎,可實現事務內對行存儲表與列存儲表的同時訪問,可同時適用於聯機事務和分析處理。
DM7提供 OLAP 函數,用於支持復雜的分析操作,側重對決策人員和高層管理人員的決策支持,可根據分析人員的要求快速、靈活地進行大數據量的復雜查詢處理,並且以直觀易懂的形式將查詢結果提供給決策人員,以便他們准確掌握企業的經營狀況,了解被服務對象的需求,制定正確的方案。
DM7採用完全對等無共享(share-nothing)的MPP架構,支持SQL並行處理,可自動化分區數據和並行查詢,無I/O沖突。DM7 MPP為新一代數據倉庫所需的大規模數據和復雜查詢提供了先進的軟體級解決方案,具有業界先進的架構和高度的可靠性。

③ 想做個 網站 ,求一段PHP編程代碼,PHP的MYSQL緩存怎麼實現 最好舉個例子。

//以下是緩存類:
<?php
class cache {
//緩存目錄
var $cacheRoot = "./cache/";
//緩存更新時間秒數,0為不緩存
var $cacheLimitTime = 0;
//緩存文件名
var $cacheFileName = "";
//緩存擴展名
var $cacheFileExt = "html";

/*
* 構造函數
* int $cacheLimitTime 緩存更新時間
*/
function cache( $cacheLimitTime ) {
if( intval( $cacheLimitTime ) )
$this->cacheLimitTime = $cacheLimitTime;
$this->cacheFileName = $this->getCacheFileName();
//echo $this->cacheFileName;
ob_start();
}

/*
* 檢查緩存文件是否在設置更新時間之內
* 返回:如果在更新時間之內則返迴文件內容,反之則返回失敗
*/
function cacheCheck(){
if( file_exists( $this->cacheFileName ) ) {
$cTime = $this->getFileCreateTime( $this->cacheFileName );
if( $cTime + $this->cacheLimitTime > time() ) {
echo file_get_contents( $this->cacheFileName );
ob_end_flush();
exit;
}
}
return false;
}

/*
* 緩存文件或者輸出靜態
* string $staticFileName 靜態文件名(含相對路徑)
*/
function caching( $staticFileName = "" ){
if( $this->cacheFileName ) {
$cacheContent = ob_get_contents();
//echo $cacheContent;
ob_end_flush();

if( $staticFileName ) {
$this->saveFile( $staticFileName, $cacheContent );
}

if( $this->cacheLimitTime )
$this->saveFile( $this->cacheFileName, $cacheContent );
}
}

/*
* 清除緩存文件
* string $fileName 指定文件名(含函數)或者all(全部)
* 返回:清除成功返回true,反之返回false
*/
function clearCache( $fileName = "all" ) {

if( $fileName != "all" ) {

$fileName = $this->cacheRoot . strtoupper(md5($fileName)).".".$this->cacheFileExt;
if( file_exists( $fileName ) ) {
//echo $fileName;
//die();
return @unlink( $fileName );
}else return false;
}
if ( is_dir( $this->cacheRoot ) ) {
if ( $dir = @opendir( $this->cacheRoot ) ) {
while ( $file = @readdir( $dir ) ) {
$check = is_dir( $file );
if ( !$check )
@unlink( $this->cacheRoot . $file );
}
@closedir( $dir );
return true;
}else{
return false;
}
}else{
return false;
}
}

/*
* 根據當前動態文件生成緩存文件名
*/
function getCacheFileName() {
return $this->cacheRoot . strtoupper(md5($_SERVER["REQUEST_URI"])).".".$this->cacheFileExt;
}

/*
* 緩存文件建立時間
* string $fileName 緩存文件名(含相對路徑)
* 返回:文件生成時間秒數,文件不存在返回0
*/
function getFileCreateTime( $fileName ) {
if( ! trim($fileName) ) return 0;

if( file_exists( $fileName ) ) {
return intval(filemtime( $fileName ));
}else return 0;
}

/*
* 保存文件
* string $fileName 文件名(含相對路徑)
* string $text文件內容
* 返回:成功返回ture,失敗返回false
*/
function saveFile($fileName, $text) {
if( ! $fileName || ! $text ) return false;

if( $this->makeDir( dirname( $fileName ) ) ) {
if( $fp = fopen( $fileName, "w" ) ) {
if( @fwrite( $fp, $text ) ) {
fclose($fp);
return true;
}else {
fclose($fp);
return false;
}
}
}
return false;
}

/*
* 連續建目錄
* string $dir 目錄字元串
* int $mode 許可權數字
* 返回:順利創建或者全部已建返回true,其它方式返回false
*/
function makeDir( $dir, $mode = "0777" ) {
if( ! $dir ) return 0;
$dir = str_replace( "\\", "/", $dir );

$mdir = "";
foreach( explode( "/", $dir ) as $val ) {
$mdir .= $val."/";
if( $val == ".." || $val == "." || trim( $val ) == "" ) continue;

if( ! file_exists( $mdir ) ) {
if(!@mkdir( $mdir, $mode )){
return false;
}
}
}
return true;
}
}

?>

//以下是調用方法:

$cache = new cache(3600);
$cache->cacheCheck();
//你的網頁內容
$cache->caching();

④ 如何提高Oracle資料庫數據查詢的命中率

影響命中率的因素有四種:字典表活動、臨時段活動、回滾段活動、表掃描, 應用DBA可以對這四種因素進行分析,找出資料庫命中率低的症結所在。 1)字典表活動 當一個SQL語句第一次到達Oracle內核時資料庫對SQL語句進行分析,包含在查詢中的數據字典對象被分解,產生SQL執行路徑。如果SQL語句指向一個不在SGA中的對象?表或視圖,Oracle執行SQL語句到數據典中查詢有關對象的信息。數據塊從數據字典表被讀取到SGA的數據緩存中。由於每個數據字典都很小,因此,我們可緩存這些表以提高對這些表的命中率。但是由於數據字典表的數據塊在SGA中占據空間,當增加全部的命中率時,它們會降低表數據塊的可用空間, 所以若查詢所需的時間字典信息已經在SGA緩存中,那麼就沒有必要遞歸調用。 2)臨時段的活動 當用戶執行一個需要排序的查詢時,Oracle設法對內存中排序區內的所有行進行排序,排序區的大小由資料庫的init.ora文件的數確定。如果排序區域不夠大,資料庫就會在排序操作期間開辟臨時段。臨時段會人為地降低OLTP(online transaction processing)應用命中率,也會降低查詢進行排序的性能。如果能在內存中完成全部排序操作,就可以消除向臨時段寫數據的開銷。所以應將SORT_AREA_SIZE設置得足夠大,以避免對臨時段的需要。這個參數的具體調整方法是:查詢相關數據,以確定這個參數的調整。 select * from v$sysstat where name='sorts(disk)'or name='sorts(memory); 大部分排序是在內存中進行的,但還有小部分發生在臨時段, 需要調整 值,查看init.ora文件的 SORT_AREA_SIZE值,參數為:SORT_AREA_SIZE=65536;將其調整到SORT_AREA_SIZE=131072、這個值調整後,重啟ORACLE資料庫即可生效。 3)回滾段的活動 回滾段活動分為回滾活動和回滾段頭活動。對回滾段頭塊的訪問會降低應用的命中率, 對OLTP系統命中率的影響最大。為確認是否因為回滾段影響了命中率,可以查看監控輸出報表中的「數據塊相容性讀一重寫記錄應用」 的統計值,這些統計值是用來確定用戶從回滾段中訪問數據的發生次數。 4)表掃描 通過大掃描讀得的塊在數據塊緩存中不會保持很長時間, 因此表掃描會降低命中率。為了避免不必要的全表掃描,首先是根據需要建立索引,合理的索引設計要建立人對各種查詢的分析和預測上,筆者會在SQL優化中詳細談及;其次是將經常用到的表放在內存中,以降低磁碟讀寫次數。

⑤ SGA是什麼

是一組包含一個Oracle實例的數據和控制信息的共享內存結構。主要是用於存儲資料庫信息的內存區,該信息為資料庫進程所共享(PGA不能共享的)。它包含Oracle伺服器的數據和控制信息,它是在Oracle伺服器所駐留的計算機的實際內存中得以分配,如果實際內存不夠再往虛擬內存中寫。
SGA幾個很重要的特性:
1、SGA的構成--數據和控制信息,我們下面會詳細介紹;
2、SGA是共享的,即當有多個用戶同時登錄了這個實例,SGA中的信息可以被它們同時訪問(當涉及到互斥的問題時,由latch和enquence控制);
3、一個SGA只服務於一個實例,也就是說,當一台機器上有多個實例運行時,每個實例都有一個自己的SGA盡管SGA來自於OS的共享內存區,但實例之間不能相互訪問對方的SGA區。
它主要包括:
1.資料庫高速緩存(the database buffer cache),
2.重演日誌緩存(the redo log buffer)
3.共享池(the shared pool)
4.數據字典緩存(the data dictionary cache)以及其它各方面的信息。
1.數據高速緩沖區(Data Buffer Cache)
在數據高速緩沖區中存放著Oracle系統最近使用過的數據塊(即用戶的高速緩沖區),當把數據寫入資料庫時,它以數據塊為單位進行讀寫,當數據高速緩沖區填滿時,則系統自動去掉一些不常被用訪問的數據。如果用戶要查的數據不在數據高速緩沖區時,Oracle自動從磁碟中去讀取。數據高速緩沖區包括三個類型的區:1) 臟的區(Dirty Buffers):包含有已經改變過並需要寫回數據文件的數據塊。
2) 自由區(Free Buffers):沒有包含任何數據並可以再寫入的區,Oracle可以從數據文件讀數據塊該區。
3) 保留區(Pinned Buffers):此區包含有正在處理的或者明確保留用作將來用的區。
2.Redo Log Buffer Cache緩存對於數據塊的所有修改。
主要用於恢復其中的每一項修改記錄都被稱為redo 條目。利用Redo條目的信息可以重做修改。
3. Shared Pool用於緩存最近被執行的SQL語句和最近被使用的數據定義。
它主要由兩個內存結構構成:Library cache和Data dictionary cache
修改共享池的大小:ALTER SYSTEM SET SHARED_POOL_SIZE = 64M;
Libray Cache緩存最近被執行的SQL和PL/SQL的相關信息。實現常用語句的共享,使用LRU演算法進行管理
,由以下兩個結構構成:Shared SQL area、Shared PL/SQL area、Data Dictionary Cache、Data dictionary cache緩存最近被使用的資料庫定義。它包括關於資料庫文件、表、索引、列、用戶、許可權以及其它資料庫對象的信息。在語法分析階段,Server Process訪問數據字典中的信息以解析對象名和對存取操作進行驗證。數據字典信息緩存在內存中有助於縮短響應時間。
4.數據字典緩存(the data dictionary cache)

⑥ 解析後的SQL語句在SGA的哪個區域中進行緩

在Oracle9i里,Oracle提供了一個內部事件,用以強制刷新Buffer Cache。
其語法為:
alter session set events 'immediate trace name flush_cache level 1';
或者:
alter session set events = 'immediate trace name flush_cache';
類似的也可以使用alter system系統級設置:
alter system set events = 'immediate trace name flush_cache';
在Oracle10g中,Oracle提供一個新的特性,可以通過如下命令刷新Buffer Cache:

alter system flush buffer_cache;

⑦ 請問Oracle的庫高速緩存、數據字典高速緩存的作用分別是什麼請給予詳細點的解答,謝謝

庫高速緩存
是用來存放你實際表的數據塊的,如表TAB_A里實際存放的若干條數據記錄,一般都存放在用戶的表空間里。
數據字典高速緩存
用來存放表的定義,如表TAB_A,有幾個欄位,每個欄位的類型、長度,表空間等,這類信息在你建表後會存放在系統表裡,都是在SYSTEM表空間下,ORACLE運行時,這些信息被裝入
數據字典高速緩存里。

⑧ 下面哪個內存區域是用來緩存數據字典信息的

您好,很高興為您解答。

Shared Pool常用來緩存數據字典信息

如若滿意,請點擊右側【採納答案】,如若還有問題,請點擊【追問】

希望我的回答對您有所幫助,望採納!

~ O(∩_∩)O~

⑨ ORACLE 的內存結構SGA包括哪些方面

1.資料庫高速緩沖(the data buffer cache),
2.重做日誌緩沖(the redo log buffer)
3.共享池(the shared pool),包括庫高速緩存(the Library cache)和數據字典緩存(the data dictionary cache)以及其它各方面的信息。
4,java池(java pool)
解釋:

1.數據高速緩沖區(Data Buffer Cache)
在數據高速緩沖區中存放著Oracle系統最
近使用過的數據塊(即用戶的高速緩沖區),當把數據寫入資料庫時,它以數據塊為單位進行讀寫,當數據高速緩沖區填滿時,則系統自動去掉一些不常被用戶訪問
的數據。如果用戶要查的數據不在數據高速緩沖區時,Oracle自動從磁碟中去讀取。數據高速緩沖區包括三個類型的區:1) 臟的區(Dirty
Buffers):包含有已經改變過並需要寫回數據文件的數據塊。
2) 自由區(Free Buffers):沒有包含任何數據並可以再寫入的區,Oracle可以從數據文件讀數據塊該區。
3) 保留區(Pinned Buffers):此區包含有正在處理的或者明確保留用作將來用的區。
2.Redo Log Buffer Cache緩存對於數據塊的所有修改。
主要用於恢復其中的每一項修改記錄都被稱為redo 條目。利用Redo條目的信息可以重做修改。
3. Shared Pool用於緩存最近被執行的SQL語句和最近被使用的數據定義。
它主要由兩個內存結構構成:Library cache和Data dictionary cache
修改共享池的大小:ALTER SYSTEM SET SHARED_POOL_SIZE = 64M;
Libray
Cache緩存最近被執行的SQL和PL/SQL的相關信息,即存放SQL語句的文本,分析後的代碼及執行計劃。實現常用語句的共享,使用LRU演算法進行
管理,由以下兩個結構構成:Shared SQL area、Shared PL/SQL area;
Data Dictionary
Cache緩存最近被使用的資料庫定義,即存放有關表,列和其它對象定義及許可權。它包括關於資料庫文件、表、索引、列、用戶、許可權以及其它資料庫對象的信
息。在語法分析階段,Server
Process訪問數據字典中的信息以解析對象名和對存取操作進行驗證。數據字典信息緩存在內存中有助於縮短響應時間。
4.java pool
在資料庫中運行Java代碼時用到這部分內存。例如:編寫Java存儲過程在伺服器內運行。需要注意的是,該內存與常見的Java編寫的B/S系統並沒關系。用JAVA語言代替PL/SQL語言在資料庫中寫存儲過程才會用到這部分內存。
如果你還想細致的了解話,建議看看相關資料
http://wenku..com/view/6a00a8d376a20029bd642d87.html###