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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Unable to Connect to Database with Oracle Client Software for WindowsDatabaseOracleclientWindows
- DB2 connect to database連線資料包錯DB2Database
- TNS-12535 Unable To Connect To Remote Database using certain ApplicationsREMDatabaseAIAPP
- Connect oracle database error in sqlplus: ORA-12560: TNS: protocol adapter errorOracleDatabaseErrorSQLProtocolAPT
- oracle的connect by語句Oracle
- connect by 的排序問題排序
- 【CONNECT BY】使用connect by level/rownum實現連續數字的插入
- Oracle connect byOracle
- start with ... connect by
- EBS R12加入應用節點報錯 RC-40201: Unable to connect to Database SRMG -1Database
- EBS R12加入應用節點報錯 RC-40201: Unable to connect to Database SRMG -2Database
- Laravel connect oracleLaravelOracle
- start with connect by prior
- start with connect by 用法
- Oracle “CONNECT BY” 使用Oracle
- session,connect,processSession
- oracle connect by用法Oracle
- Oracle Start with ....Connect ByOracle
- START WITH...CONNECT BY
- Connect:一個更好的 gRPCRPC
- connect-time failover的配置!AI
- [求助] start with connect by 奇怪的問題
- standby database to primary database.Database
- Oracle中的Connect、session、process的區別OracleSession
- connect by層內排序排序
- JDBC connect SCAN IPJDBC
- MySQL-undefinedfunctionmysql_connect()MySqlUndefinedFunction
- START WITH and CONNECT BY in Oracle SQLOracleSQL
- connect by..start with..
- mysql connect speed is slowMySql
- start with ...connect by --轉載
- QObject::connect()函式Object函式
- connect your tunnel to CloudflareCloud
- Oracle的SYS_CONNECT_BY_PATH函式Oracle函式
- redux connect的淺比較說明Redux
- UDP中使用bind和connect的作用UDP
- 關於刪除itunes connect的appAPP
- react-redux的Provider和connectReactReduxIDE