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

sql緩存

發布時間: 2022-01-31 21:32:09

A. sql解析緩存是什麼 xcache APC又是什麼

是一個開源的 opcode 緩存器/優化器, 這意味著他能夠提高您伺服器上的 PHP 性能. 他通過把編譯 PHP 後的數據緩沖到共享內存從而避免重復的編譯過程, 能夠直接使用緩沖區已編譯的代碼從而提高速度. 通常能夠提高您的頁面生成速率 2 到5 倍, 降低伺服器負載.

B. SQL緩存問題,第一次查慢,第二次查快

查詢時,資料庫引擎會判斷,如果數據在內存中,則會從內存讀取數據,如果數據不在內存在,則先從硬碟讀到內存,然後再供查詢。
所以第一次查的時候,根據你的語句,資料庫引擎會把一些數據從硬碟讀到內存,第二次再查的時候,就從內存讀數據,就快了很多了。

oracle有一個功能是讓表常駐內存。

C. 如何開啟SQLSERVER資料庫緩存

他的高速緩存是用來存儲sql信息,以及最近使用數據,減少磁碟IO的作用,提高存儲讀寫速度的; 一般web網站中,需要用到數據檢索的查詢sql緩存 新手的話沒關系,一般多看看他們的產品資料即可;sql有很多在線幫助;

D. SQL SERVER中如何進行緩存設置

可以不要設置,如果不設置的話,SQL SERVER會動態調整使用的內存。

E. 如何清除SQL SERVER緩存和釋放內存

1.打開Sql Server Management(企業管理器);2.打開Sql Server實例的屬性面板;3.找到內存設置,改變其中的最大伺服器內存使用即可 。

F. 如何清除某條SQL在庫緩存中的執行計劃

DBA 日常管理過程中會遇到需要把特定的sql語句的執行計劃從shared pool
中清除或者需要重新生產新的執行計劃的要求。通常的alter system flush
shared_pool;或者重新執行信息統計又會造成較大的影響,所以可以使用oracle提供的
dbms_shared_pool.purge 來清除某個特定的sql的執行計劃。

下面是關於dbms_shared_pool.purge 的官方介紹:
The syntax for the DBMS_SHARED_POOL.PURGE package is:
procere purge (name varchar2, flag char DEFAULT 'P', heaps number DEFAULT 1);

name: 指定要處理的對象的名稱,有兩種情況:
1 PL/SQL 對象 就是對象的名稱
2 SQL對象,指定 'address','hash_value' 的 SQL 游標。
標記位 flag是可選的。如果忽略了該參數,則該包默認是包,過程,函數的名稱並且忽視名稱。否則,該參數就指定一個對象類型。標記位是大小寫敏感的。
標記位代表的對象類型:
Value Kind of Object to keep
----- ----------------------
P package/procere/function
Q sequence
R trigger
T type
JS java source
JC java class
JR java resource
JD java shared data
C cursor --游標

heaps: heaps to purge. e.g if heap 0 and heap 6 are to be purged.
1<<0 | 1<<6 => hex 0x41 => decimal 65. so specify heaps=>65.
Default is 1 i.e heap 0 which means the whole object will be purged.

實驗環境 版本:11.2.0.1.0 dbms_shared_pool.purge 只能通過dba才能使用
oracle@rac1:rac1 /home/oracle>sqlplus yang/yang
SQL*Plus: Release 11.2.0.1.0 Proction on Fri Jul 8 15:32:43 2011

yang@rac1>create table yangtab (id int) ;
Table created.
yang@rac1>select * from yangtab;
no rows selected
yang@rac1>select address,hash_value,executions,parse_calls
2 from v$sql where sql_text like 'select * from yangtab%';
ADDRESS HASH_VALUE EXECUTIONS PARSE_CALLS
---------------- ---------- ---------- -----------
00000001736EFBB8 3337951036 1 1

yang@rac1>exec dbms_shared_pool.purge('00000001736EFBB8,3337951036','C');
BEGIN dbms_shared_pool.purge('00000001736EFBB8,3337951036','C'); END;

*
ERROR at line 1:
ORA-06550: line 1, column 7:
PLS-00201: identifier 'DBMS_SHARED_POOL.PURGE' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

yang@rac1>conn /as sysdba
Connected.
sys@rac1>create table yangt (id int);
Table created.
sys@rac1>select * from yangt;
no rows selected
sys@rac1>select address,hash_value,executions,parse_calls
2 from v$sql where sql_text like 'select * from yangt%';

ADDRESS HASH_VALUE EXECUTIONS PARSE_CALLS
---------------- ---------- ---------- -----------
00000001736EFBB8 3337951036 1 1 -- 使用普通用戶時生成的。
0000000170D9BA50 2693392179 1 1
使用dbms_shared_pool.purge 刪除第一個sql的游標。
sys@rac1> exec dbms_shared_pool.purge('00000001736EFBB8,3337951036','C');
PL/SQL procere successfully completed.

sys@rac1>select address,hash_value,executions,parse_calls
2 from v$sql where sql_text like 'select * from yangt%';

ADDRESS HASH_VALUE EXECUTIONS PARSE_CALLS
---------------- ---------- ---------- -----------
0000000170D9BA50 2693392179 1 1

sys@rac1>exec dbms_shared_pool.purge('0000000170D9BA50,2693392179','C');
PL/SQL procere successfully completed.

sys@rac1>select address,hash_value,executions,parse_calls
2 from v$sql where sql_text like 'select * from yangt%'
no rows selected

G. 何時使用 SQL 語句高速緩存

數據高速緩存跟操作系統的緩存類似,其存儲最近從數據文件中讀取的數據塊,其中的數據可以被所有的用戶所訪問。如當我們利用Select語句從資料庫中查詢員工信息的時候,其首先不是從數據文件中去查詢這個數據,而是從數據高速緩存中去查找,而沒有這個必要再去查詢磁碟中的數據文件了。只有在數據緩存中沒有這個數據的時候,資料庫才會從數據文件中去查詢。Oracle資料庫為什麼要如此設計呢?這是由於資料庫在讀取數據的時候,讀取內存的速度比讀取磁碟的速度要快很多倍,所以這種機制可以提高數據的整體訪問效率。

H. 如何清除SQL緩存數據

先設置db_recycle_cache_size的大小
然後把你希望不緩存的segment alter table / index ... storage (buffer_pool recycle)

這個只能在segment級別上定義,沒法在sql上定義

I. 怎樣知道自己寫的SQL語句是有緩存的

--清除存儲過程緩存
DBCC FREEPROCCACHE

--清除會話緩存
DBCC FREESESSIONCACHE

--清除系統緩存
DBCC FREESYSTEMCACHE('All')

--清除所有緩存

DBCC DROPCLEANBUFFERS

再配合以下的語句:
--內存使用情況
SELECT * FROM sys.dm_os_performance_counters
WHERE counter_name IN ('Target Server Memory (KB)','Total Server Memory (KB)')

-- 內存狀態
DBCC MemoryStatus

你就能知道SQL語句對緩存的使用情況了