EAServer 數據庫鏈接緩存概念和如何配置鏈接緩存

EAS爲了提升系統的運行效率,提供了鏈接緩存。那什麼是鏈接緩存,它有什麼用好處,如何建立配置鏈接緩存以及如何在組件中使用鏈接緩存呢?下面將一一爲你解答。sql

咱們在開發兩層應用的的時候,老是使用sqlca這個對象來控制,訪問數據庫鏈接。當咱們不用的時候,就會斷開這個鏈接。另外在兩層應用中,咱們老是在程序啓動的時候鏈接數據庫,而在退出程序的時候才斷開數據庫鏈接。到了三層開發,你就不能再這樣作了,(固然,若是你不用鏈接緩存,也是能夠的)。數據庫

所謂鏈接緩存,就是數據庫鏈接在組件不須要的時候並非作物理斷開,而是把這個鏈接緩存到緩存池中,等下一次某個組件再請求鏈接的時候再次使用。這要作的好處,就是能夠提升系統的效率。要知道,鏈接數據庫是很浪費時間的操做。緩存

這樣一來,就很明顯地看到,使用鏈接緩存的好處了,那就是提升效率!測試

在EAS中,要想使用鏈接緩存,你只能使用以下的幾個數據庫鏈接接口:命令行

1,openclientserver

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 = "ODBC"
SQLCA.AutoCommit = False
SQLCA.DBParm = "CacheName='myCache'"

對,就是這麼簡單,你還可使用以下的方式:

SQLCA.DBMS = "ODBC"
SQLCA.AutoCommit = False
SQLCA.DBParm = "ConnectString='DSN=xb_db;UID=db_user;PWD=',CacheName='myCache'"

這個方式和上一個方式的區別就是,若是你的緩存mycache的鏈接參數和前面的參數不一致,就會出現沒法鏈接數據庫的問題。

有不少人會問,pb組件如何使用JDBC鏈接數據庫呢?

你只要建立一個JDBC的鏈接緩存,而後在組件中這樣寫:

SQLCA.DBMS = "JDBC"
SQLCA.AutoCommit = False
SQLCA.DBParm = "CacheName='myJdbcCache'"

很簡單吧!

不過,不要高興得太早了,雖然pb的代碼是不區分大小寫的,但鏈接緩存是區分大小寫的。好比,你建立的緩存名字叫myJdbcCache,但你在組件應用的時候寫成了

SQLCA.DBParm = "CacheName='MyJdbcCache'"

你將沒法鏈接到數據庫。切記!

須要你瞭解的還有一個,就是,組件鏈接數據庫通常都是在activate事件中,而斷開數據庫鏈接則寫在deactivate事件中。

另外,你能夠象寫兩層應用同樣,執行connect using sqlca;和disconnect using sqlca;來鏈接數據庫和斷開數據庫。easerver將會在你執行disconnect的時候,僅僅是把該數據庫鏈接放到緩存池中,而不是真的從數據庫上斷開。當你執行connect的時候,easerver將會從鏈接緩存池中拿出一個數據庫鏈接給當前組件使用,而不是真的執行鏈接數據庫操做。

相關文章
相關標籤/搜索