可以不要設置,如果不設置的話,SQL SERVER會動態調整使用的內存。
Ⅱ 何時使用 SQL 語句高速緩存
數據高速緩存跟操作系統的緩存類似,其存儲最近從數據文件中讀取的數據塊,其中的數據可以被所有的用戶所訪問。如當我們利用Select語句從資料庫中查詢員工信息的時候,其首先不是從數據文件中去查詢這個數據,而是從數據高速緩存中去查找,而沒有這個必要再去查詢磁碟中的數據文件了。只有在數據緩存中沒有這個數據的時候,資料庫才會從數據文件中去查詢。Oracle資料庫為什麼要如此設計呢?這是由於資料庫在讀取數據的時候,讀取內存的速度比讀取磁碟的速度要快很多倍,所以這種機制可以提高數據的整體訪問效率。
Ⅲ 如何自動清理SQL資料庫在內存中的緩存
加大內存吧!360沒有這個自動清理內存的功能吧!
Ⅳ 如何清除某條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
Ⅳ 如何在調用頻繁改變的介面並做緩存
API:應用程序介面(API:Application Program Interface)
應用程序介面(API:application programming interface)是一組定義、程序及協議的集合,通過 API 介面實現計算機軟體之間的相互通信。API 的一個主要功能是提供通用功能集。程序員通過使用 API 函數開發應用程序,從而可以避免編寫無用程序,以減輕編程任務。
遠程過程調用(RPC):通過作用在共享數據緩存器上的過程(或任務)實現程序間的通信。
標准查詢語言(SQL):是標準的訪問數據的查詢語言,通過通用資料庫實現應用程序間的數據共享。
文件傳輸:文件傳輸通過發送格式化文件實現應用程序間數據共享。
信息交付:指松耦合或緊耦合應用程序間的小型格式化信息,通過程序間的直接通信實現數據共享。
當前應用於 API 的標准包括 ANSI 標准 SQL API。另外還有一些應用於其它類型的標准尚在制定之中。A
Ⅵ 如何清除SQL緩存數據
先設置db_recycle_cache_size的大小
然後把你希望不緩存的segment alter table / index ... storage (buffer_pool recycle)
這個只能在segment級別上定義,沒法在sql上定義
Ⅶ sql server 怎麼使用redis做緩存
應用Redis實現數據的讀寫,同時利用隊列處理器定時將數據寫入mysql。
同時要注意避免沖突,在redis啟動時去mysql讀取所有表鍵值存入redis中,往redis寫數據時,對redis主鍵自增並進行讀取,若mysql更新失敗,則需要及時清除緩存及同步redis主鍵。
這樣處理,主要是實時讀寫redis,而mysql數據則通過隊列非同步處理,緩解mysql壓力,不過這種方法應用場景主要基於高並發,而且redis的高可用集群架構相對更復雜,一般不是很推薦。
Ⅷ 資料庫連接緩存概念和如何配置連接緩存
那什麼是連接緩存,它有什麼用好處,如何創建配置連接緩存以及如何在組件中使用連接緩存呢?下面將一一為你解答。我們在開發兩層應用的的時候,總是使用sqlca這個對象來控制,訪問資料庫連接。當我們不用的時候,就會斷開這個連接。另外在兩層應用中,我們總是在程序啟動的時候連接資料庫,而在退出程序的時候才斷開資料庫連接。到了三層開發,你就不能再這樣做了,(當然,如果你不用連接緩存,也是可以的)。所謂連接緩存,就是資料庫連接在組件不需要的時候並不是做物理斷開,而是把這個連接緩存到緩存池中,等下一次某個組件再請求連接的時候再次使用。這要做的好處,就是可以提高系統的效率。要知道,連接資料庫是很浪費時間的操作。這樣一來,就很明顯地看到,使用連接緩存的好處了,那就是提高效率!在EAS中,要想使用連接緩存,你只能使用如下的幾個資料庫連接介面: 1,openclient 2,Oracle專用介面 3,JDBC 4,ODBC 除了這幾種,其他的都不能使用,例如我們經常使用的MS SQL Server資料庫專用介面,是不能創建連接緩存的。如果要連接MS SQL Server,你只能使用ODBC的方式。創建連接緩存的方式有多種,我們常見的就是用管理器和使用jagtool命令行先說命令行方式: %JAGTOOL% create ConnCache:SYB_PBWF_Odbc%JAGTOOL% set_props ConnCache:SYB_PBWF_Odbc com.sybase.jaguar.conncache.conlibdll odbc32.dll%JAGTOOL% set_props ConnCache:SYB_PBWF_Odbc com.sybase.jaguar.conncache.conlibname ODBC%JAGTOOL% set_props ConnCache:SYB_PBWF_Odbc com.sybase.jaguar.conncache.db_type Unknown%JAGTOOL% set_props ConnCache:SYB_PBWF_Odbc com.sybase.jaguar.conncache.password.e sql%JAGTOOL% set_props ConnCache:SYB_PBWF_Odbc com.sybase.jaguar.conncache.remotesvrname pbwf%JAGTOOL% set_props ConnCache:SYB_PBWF_Odbc com.sybase.jaguar.conncache.username dba這就可以創建一個連接緩存了。但這樣確實挺麻煩的,但你可以寫成一個bat文件,實現自動創建工作。第二個方法就是用管理器了,手動創建。用管理器連接到easerver,點左面的connection caches,會在右面列出來當前easerver上所有的緩存, 在右面空白處點右鍵,選新建,根據向導,就可以完成緩存的創建,需要注意的是,如果你使用ODBC,那server name中填寫odbc數據源的名字,並且這個odbc你必須要創建到系統數據源裡面,否則eas服務就會找不到指定的數據源。創建完成後,你在緩存列表中那個新建緩存上點右鍵,選擇ping,可以測試緩存是否正常。一旦創建完緩存,你就可以在組件中使用了。那組件中如何使用連接緩存呢?很簡單,假設,你在組件中同樣使用sqlca這個資料庫連接事務對象,則你只要做如下操作: SQLCA.DBMS = ODBCSQLCA.AutoCommit = FalseSQLCA.DBParm = CacheName='myCache' 對,就是這么簡單,你還可以使用如下的方式: SQLCA.DBMS = ODBCSQLCA.AutoCommit = FalseSQLCA.DBParm = ConnectString='DSN=xb_db;UID=db_user;PWD=',CacheName='myCache' 這個方式和上一個方式的區別就是,如果你的緩存mycache的連接參數和前面的參數不一致,就會出現無法連接資料庫的問題。有很多人會問,pb組件如何使用JDBC連接資料庫呢?你只要創建一個JDBC的連接緩存,然後在組件中這樣寫: SQLCA.DBMS = JDBCSQLCA.AutoCommit = FalseSQLCA.DBParm = CacheName='myJdbcCache' 很簡單吧!不過,不要高興得太早了,雖然pb的代碼是不區分大小寫的,但連接緩存是區分大小寫的。比如,你創建的緩存名字叫myJdbcCache,但你在組件應用的時候寫成了 SQLCA.DBParm = CacheName='MyJdbcCache' 你將無法連接到資料庫。切記!
Ⅸ 如何實現基於sql實現redis主動緩存
主動緩存,無異常情況下只從redis中取數據,不走mysql
列表的分類、排序
緩存數據中區分正在進行、未開始、已結束
分析sql語句觸發redis緩存系統中數據的更新
對關聯數據進行同步更新(例 廣告中的數據裡面有商品信息,當商品發生改變時,觸發把廣告中的相關商品數據內容也進行同步更新)
針對單個表的緩存數據重建功能
Ⅹ 如何使用redis做mssql的緩存
應用Redis實現數據的讀寫,同時利用隊列處理器定時將數據寫入mysql。 同時要注意避免沖突,在redis啟動時去mysql讀取所有表鍵值存入redis中,往redis寫數據時,對redis主鍵自增並進行讀取,若mysql更新失敗,則需要及時清除緩存及同步redis主鍵