database的connect
自己原文公眾號: https://mp.weixin.qq.com/s/xGmMgbTm9D5gsFE1jeTW4g
幾天我被問到連線數的問題。一般來說開發都希望設定一個較大的連線數以確保程式不會出問題。
想起我以前經歷公司,我有一次模擬併發場景,測試資料庫壓力。當時我4個會話不停壓update和insert的場景。最後結論是每秒處理2000個事務(單機Oracle)沒有問題。當時我的領導問,我們有幾千個使用者,你只模擬4個不合適吧?我回答,請問我們有幾千臺伺服器嗎?我們應該只有4個tomcat吧?就算有再多的手機連線最後還是匯聚在4個tomcat上,哪裡能有幾千個連線?我領導想想說也是。
再說一個案例,我之前做公安行業的,一個城市幾百上千個攝像頭太正常了。做省級平臺的時候就監控裝置就快上萬了,攝像頭要十幾萬了。很顯然我沒有上萬臺伺服器,有的只是幾臺甚至十幾臺通訊伺服器。每個通訊伺服器連線幾十臺到上百臺監控裝置,不停的採集車輛和人員的資料。也就是說我有上萬的裝置到了資料中心也就幾十臺通訊伺服器。而每個通訊伺服器不停向資料庫寫入資料。其實每個用一個會話就夠了。再加上公安使用者使用一個web系統登入。整個資料庫活動會話也不超過40個。
那麼日常我們為什麼大家習慣於設定較大?主要是一個SQL執行不完,又來一個請求,那麼這個會話不能複用,所以要再來一個會話,如果密集的話那麼就瞬間高了。然後就故障了。
曾經看到一個文章大致是這樣的:(網上可以找到)模擬 9600 個併發執行緒來運算元據庫,每兩次資料庫操作之間 sleep 550ms,
即使是單核 CPU 的計算機也能“同時”執行著數百個執行緒。但我們其實都知道,這只不過是作業系統快速切換時間片,跟我們玩的一個小把戲罷了。 一核 CPU同一時刻只能執行一個執行緒,然後作業系統切換上下文,CPU 核心快速排程,執行另一個執行緒的程式碼,不停反覆,給我們造成了所有程式同時執行假象。
我爸爸就經常說我不要開很多東西,計算機是分時處理系統。
其實,在一核 CPU 的機器上,順序執行 A 和 B 永遠比透過時間分片切換“同時”執行 A 和 B 要快,其中原因,學過作業系統這門課程的童鞋應該很清楚。一旦執行緒的數量超過了 CPU 核心的數量,再增加執行緒數系統就只會更慢,而不是更快,因為這裡涉及到上下文切換耗費的額外的效能。
所以我們沒必要開很多閒置會話,沒什麼用。redis單執行緒也很快啊!對不對?
今天先說到這裡吧。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/637517/viewspace-2847328/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- The database owner SID recorded in the master database differs from the database owner SID recorded in database 'DB_NAME'DatabaseAST
- Connect:一個更好的 gRPCRPC
- Oracle Database Cloud - Database as a Service Quick StartOracleDatabaseCloudUI
- Error querying database. XXXXXXXXXXXXX, No database selected。ErrorDatabase
- Convert a Physical Standby Database into a Snapshot Standby DatabaseDatabase
- Laravel connect oracleLaravelOracle
- Database TimeoutDatabase
- Database OverallDatabase
- database no shardingDatabase
- INBOUND_CONNECT_TIMEOUT與SQLNET.INBOUND_CONNECT_TIMEOUT小結SQL
- CocoaAsyncSocket---Connect (下)
- QObject::connect()函式Object函式
- connect by層內排序排序
- connect your tunnel to CloudflareCloud
- 聊聊jdk httpclient的connect timeout異常JDKHTTPclient
- redux connect的淺比較說明Redux
- Oracle的SYS_CONNECT_BY_PATH函式Oracle函式
- 一個與CONNECT BY相關的BUG
- sys_connect_by_path的兩種用法
- 關於刪除itunes connect的appAPP
- Oracle 12.2 使用Database Link優化Standby Database WorkloadOracleDatabase優化
- ORACLE database vaultOracleDatabase
- Relationship Database DesignDatabase
- 3.4 Quiescing a DatabaseUIDatabase
- idea--DatabaseIdeaDatabase
- Oracle clone databaseOracleDatabase
- Password is required when adding a database to AG group if the database has a master keyUIDatabaseAST
- ORA-16649: possible failover to another database prevents this database from beiAIDatabase
- INBOUND_CONNECT_TIMEOUT(zt)
- dojo.connect初解
- 17、Connect-the-dots(VulnHub)
- MQTT 協議 -- CONNECT & CONNACKMQQT協議
- Linux Use ODBC Connect OracleLinuxOracle
- [轉載] Oracle:start with...connect by子句的用法Oracle
- ftp: connect: 沒有到主機的路由FTP路由
- Guide to Database as a Service (DBaaS)GUIIDEDatabase
- Oracle Database Scheduler整理OracleDatabase
- 3.4.1 About Quiescing a DatabaseUIDatabase