成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

MySQL性能優化知識:長連接、短連接、連接池

數據庫 MySQL
當數據庫服務器和客戶端位于不同的主機時,就需要建立網絡連接來進行通信。客戶端必須使用數據庫連接來發送命令和接收應答、數據。通過提供給客戶端數據庫的驅動指定連接字符串后,客戶端就可以和數據庫建立連接了。

當數據庫服務器和客戶端位于不同的主機時,就需要建立網絡連接來進行通信。客戶端必須使用數據庫連接來發送命令和接收應答、數據。通過提供給客戶端數據庫的驅動指定連接字符串后,客戶端就可以和數據庫建立連接了。可以查閱程序語言手冊來獲知通過何種方式使用短連接、長連接。

1. 短連接

短連接是指程序和數據庫通信時需要建立連接,執行操作后,連接關閉。短連接簡單來說就是每一次操作數據庫,都要打開和關閉數據庫連接,基本步驟是:連接→數據傳輸→關閉連接。

在慢速網絡下使用短連接,連接的開銷會很大;在生產繁忙的系統中,連接也可能會受到系統端口數的限制,如果要每秒建立幾千個連接,那么連接斷開后,端口不會被馬上回收利用,必須經歷一個“FIN”階段的等待,直到可被回收利用為止,這樣就可能會導致端口資源不夠用。在Linux上,可以通過調整

/proc/sys/net/ipv4/ip_local_port_range來擴大端口的使用范圍;調整

/proc/sys/net/ipv4/tcp_fin_timeout來減少回收延期(如果想在應用服務器上調整這個參數,一定要慎重!)。

另外一個辦法是主機使用多個IP地址。端口數的限制其實是基于同一個IP:PORT的,如果主機增加了IP,MySQL就可以監聽多個IP地址,客戶端也可以選擇連接某個IP:PORT,這樣就增加了端口資源。

2. 長連接

長連接是指程序之間的連接在建立之后,就一直打開,被后續程序重用。使用長連接的初衷是減少連接的開銷,盡管MySQL的連接比其他數據庫要快得多。

以PHP程序為例,當收到一個永久連接的請求時,PHP將檢查是否已經存在一個(前面已經開啟了的)相同的永久連接。如果存在,則將直接使用這個連接;如果不存在,則建立一個新的連接。所謂“相同”的連接是指用相同的用戶名和密碼到相同主機的連接。

從客戶端的角度來說,使用長連接有一個好處,可以不用每次創建新連接,若客戶端對MySQL服務器的連接請求很頻繁,永久連接將更加高效。對于高并發業務,如果可能會碰到連接的沖擊,推薦使用長連接或連接池。

從服務器的角度來看,情況則略有不同,它可以節省創建連接的開銷,但維持連接也是需要內存的。如果濫用長連接的話,可能會使用過多的MySQL服務器連接。現代的操作系統可以擁有幾千個MySQL連接,但很有可能絕大部分都是睡眠(sleep)狀態的,這樣的工作方式不夠高效,而且連接占據內存,也會導致內存的浪費。

對于擴展性好的站點來說,其實大部分的訪問并不需要連接數據庫。如果用戶需要頻繁訪問數據庫,那么可能會在流量增大的時候產生性能問題,此時長短連接都是無法解決問題的,所以應該進行合理的設計和優化來避免性能問題。

如果客戶端和MySQL數據庫之間有連接池或Proxy代理,一般在客戶端推薦使用短連接。對于長連接的使用一定要慎重,不可濫用。如果沒有每秒幾百、上千的新連接請求,就不一定需要長連接,也無法從長連接中得到太多好處。在Java語言中,由于有連接池,如果控制得當,則不會對數據庫有較大的沖擊,但PHP的長連接可能導致數據庫的連接數超過限制,或者占用過多的內存。

對此,研發工程師、系統運維工程師、DBA需要保持溝通,確定合理的連接策略,千萬不要不假思索就采用長連接。

3. 連接池

由于一些數據庫創建和銷毀連接的開銷很大,或者相對于所執行的具體數據操作,連接所耗的資源過多,此時就可能需要添加連接池來改進性能。

數據庫連接池是一些網絡代理服務或應用服務器實現的特性,如J2EE服務器,它實現了一個持久連接的“池”,允許其他程序、客戶端來連接,這個連接池將被所有連接的客戶端共享使用,連接池可以加速連接,也可以減少數據庫連接,降低數據庫服務器的負載。

4. 持久連接和連接池的區別

長連接是一些驅動、驅動框架、ORM工具的特性,由驅動來保持連接句柄的打開,以便后續的數據庫操作可以重用連接,從而減少數據庫的連接開銷。而連接池是應用服務器的組件,它可以通過參數來配置連接數、連接檢測、連接的生命周期等。

如果連接池或長連接使用的連接數很多,有可能會超過數據庫實例的限制,那么就需要留意連接相關的設置了,比如連接池的最小、最大連接數設置,以及php-fpm的進程個數等,否則程序將不能申請新的連接。

 

責任編輯:姜華 來源: IT技術分享社區
相關推薦

2011-06-01 13:54:10

MySQL

2018-06-06 11:01:25

HTTP長連接短連接

2019-12-30 15:30:13

連接池請求PHP

2020-09-05 17:00:20

HTTP長連接短連接

2023-03-03 09:55:40

MySQL高可用

2010-05-17 16:38:08

MySQL 連接池

2011-05-13 09:34:51

TomcatMysql連接池

2009-09-22 14:52:55

Hibernate p

2009-09-22 16:04:50

Hibernate連接

2009-06-17 16:22:45

Hibernate連接

2022-11-11 09:41:04

連接池微服務數據庫

2019-04-15 14:37:23

HTTPTCP長連接

2009-11-12 09:25:21

ADO.NET連接池

2009-11-11 14:04:14

ADO.NET連接池

2018-02-07 16:23:58

連接池內存池AI

2018-10-10 14:27:34

數據庫連接池MySQL

2017-06-22 14:13:07

PythonMySQLpymysqlpool

2012-05-15 09:46:37

監聽

2009-06-16 09:25:31

JBoss配置

2009-07-09 17:36:44

JDBC連接池配置
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩视频中文字幕 | 久久综合99 | 午夜播放器在线观看 | 成人国产精品入口免费视频 | 久久久久免费 | 91.com视频| 农村真人裸体丰满少妇毛片 | 一区二区三区日 | 毛片一级片| 欧美在线天堂 | 91啪影院 | 欧美5区 | 日韩中文字幕在线视频观看 | 欧美美女爱爱 | 久久久久久国产精品免费免费狐狸 | 国产午夜精品理论片a大结局 | 国产精品二区三区在线观看 | 久久久一区二区 | 欧美一区二区三区精品免费 | 国产精品二区三区 | 伊人精品一区二区三区 | 国产精品免费一区二区三区四区 | 成人免费精品 | 91亚洲精华国产 | 高清国产午夜精品久久久久久 | www.99热.com | 91精品久久久久久久久 | 99久久久无码国产精品 | 国产999精品久久久久久 | 午夜精品一区二区三区三上悠亚 | 日韩免费一区二区 | 久久精品99| 天堂一区二区三区 | 国产精品视频一区二区三区四区国 | 精品一区二区久久久久久久网站 | 日本大香伊一区二区三区 | 日本精品视频一区二区三区四区 | 日韩精品一区二区三区在线播放 | 国产丝袜一区二区三区免费视频 | 久久网站免费视频 | 欧美福利 |