Sql最佳化(九) 程式的可擴充套件性-- 短連線的危害,以及資料庫連線(connection)管理
在官方文件《oracle performance tuning guide》中提到Connecting to the database is an expensive operation that is highly unscalable。資料庫的連線操作是昂貴的,且難以擴充套件(支援大量併發)。
感覺上一個資料庫登入操作是瞬間的事,它有多昂貴呢?簡單說,監聽器收到遠端連線請求後,轉給server process;對於每個session資料庫都會生成一個server process,要為session分配記憶體,要進行鑑權、審計…[@more@]
感覺上一個資料庫登入操作是瞬間的事,它有多昂貴呢?簡單說,監聽器收到遠端連線請求後,轉給server process;對於每個session資料庫都會生成一個server process,要為session分配記憶體,要進行鑑權、審計…[@more@]
另外在一個session中,可以採用一些方法重用遊標,例如PLSQL程式,所有static sql都是被cache的,重複呼叫時不會進行soft parse;有時可以設定session_cached_cursor引數減少soft parse。因此如果一個程式使用短連線,頻繁logon/logoff,是無法用到這些特性的。這是短連線的另一壞處。
儘管這是個很簡單易懂的問題,但設計人員還是應該有'連線管理'的概念,避免短連線的危害。在某個在用生產系統上,我們還是能看到短連線:
grep '<txt>22-OCT-2012 14:47' log.xml|wc
102 1220 18141
每分鐘100多個連線,光是處理連線請求,可能就消耗了半個cpu。
那麼應用設計中該怎樣進行連線管理呢?
1) 簡單的應用,或者c/s結構的應用,在啟動應用(介面開啟)時建立連線,應用關閉時才終止連線。這樣正常情況下,一個終端1天才發起1-2次連線。
2) java程式可以使用連線池,能夠在多個執行緒間共享。
3)目前大多數系統採用中介軟體(websphere、weblogic),使用連線池(connection pool),每發起請求時,從連線池中獲取連線控制程式碼,不需要不斷建立新連線。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25462274/viewspace-2124914/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Golang 全域性sql資料庫連線GolangSQL資料庫
- PHP擴充套件資料庫連線引數說明詳解PHP套件資料庫
- 如何透過連線資料庫的方式對線下應用進行線上擴充套件資料庫套件
- 《基於 swoole 擴充套件實現真正的 PHP 資料庫連線池》讀後感套件PHP資料庫
- 高度可擴充套件,EMQX 5.0 達成 1 億 MQTT 連線套件MQQT
- c#連線SQL Server資料庫C#SQLServer資料庫
- http的長連線和短連線HTTP
- 長連線和短連線的使用
- 資料庫的連線數資料庫
- java 資料庫程式設計(一)JDBC連線Sql Server資料庫Java資料庫程式設計JDBCSQLServer
- 用Navicat連線資料庫-資料庫連線(MySQL演示)資料庫MySql
- 可擴充套件性套件
- 連線資料庫資料庫
- 連線資料庫提示sqlstate[hy000] [2002] Connection refused資料庫SQL
- [20181128]toad連線資料庫的問題(補充).txt資料庫
- 長連線和短連線
- 資料庫與python的連線資料庫Python
- 資料庫的連線過程資料庫
- python 連線 mongo 資料庫連線超時PythonGo資料庫
- python遠端連線mysql以及pandas.DataFrame.to_sql寫入資料庫PythonMySql資料庫
- 資料庫連線池-Druid資料庫連線池原始碼解析資料庫UI原始碼
- Java專案連線資料庫Mysql報錯create connection SQLExceptionJava資料庫MySqlException
- [資料庫][SQL]圖解各種連線join資料庫SQL圖解
- 1.3.3. 通過SQL*Plus 連線資料庫SQL資料庫
- PL/SQL Developer連線遠端Oracle資料庫SQLDeveloperOracle資料庫
- 【MySQL】自定義資料庫連線池和開源資料庫連線池的使用MySql資料庫
- mysqli連線資料庫MySql資料庫
- Mongodb資料庫連線MongoDB資料庫
- Android 連線資料庫Android資料庫
- java連線資料庫Java資料庫
- 連線資料庫-mysql資料庫MySql
- jmeter連線資料庫JMeter資料庫
- Mybatis連線資料庫MyBatis資料庫
- JSP連線資料庫JS資料庫
- JDBC連線資料庫JDBC資料庫
- Flask連線資料庫Flask資料庫
- iis網站怎麼連線資料庫連線網站資料庫
- 1.3.3.1. 關於連線資料庫的SQL*Plus 工具描述資料庫SQL
- 解決無法連線SQL Server資料庫的方法BWSQLServer資料庫