欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

mysql怎么連接池子,mysql默認(rèn)連接池大小

什么叫連接池,連接池的具體實(shí)現(xiàn)是如何實(shí)現(xiàn)的

importMySQLdbimporttimeimportstringimportredisclassPooledConnection:#構(gòu)建連接池實(shí)例def__init__(self,maxconnections,connstr,dbtype):fromQueueimportQueueself._pool=Queue(maxconnections)#createthequeueself.connstr=connstrself.dbtype=dbtypeself.maxconnections=maxconnections#根據(jù)你給數(shù)目來(lái)創(chuàng)建鏈接,并且寫(xiě)入剛才創(chuàng)建的隊(duì)列里面。try:foriinrange(maxconnections):self.fillConnection(self.CreateConnection(connstr,dbtype))exceptException,e:raiseedeffillConnection(self,conn):try:self._pool.put(conn)exceptException,e:raise"fillConnectionerror:"+str(e)defreturnConnection(self,conn):try:self._pool.put(conn)exceptException,e:raise"returnConnectionerror:"+str(e)defgetConnection(self):try:returnself._pool.get()exceptException,e:raise"getConnectionerror:"+str(e)defColseConnection(self,conn):try:self._pool.get().close()self.fillConnection(self.CreateConnection(connstr,dbtype))exceptException,e:raise"CloseConnectionerror:"+str(e)defCreateConnection(self,connstr,dbtype):ifdbtype=='xxx':passelifdbtype=='mysql':try:db_conn=connstr.split("#");#conndb=MySQLdb.connect(db=conf.mydb,host=conf.dbip,user=conf.myuser,passwd=conf.mypasswd);conndb=MySQLdb.connect(user=db_conn[0],passwd=db_conn[1],host=db_conn[2],port=string.atoi(db_conn[3]),db=db_conn[4]);conndb.clientinfo='datasyncconnectionpoolfromdatasync.py';conndb.ping();exceptException,e:raise'conntargetdbdatasourceExcepts,%s!!!(%s).'%(db_conn[2],str(e))returnNone#mysql如下創(chuàng)建連接池:connstring="xiaorui.cc#xiaoru.cc#xiaorui.cc#3306#dbname";mysqlpool=PooledConnection(10,connstring,"mysql");#獲取連接:mysqlpool.getConnection()

創(chuàng)新互聯(lián)主要從事成都做網(wǎng)站、成都網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)薛城,10多年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來(lái)電咨詢建站服務(wù):028-86922220

MySQL與Redis數(shù)據(jù)庫(kù)連接池介紹(圖示+源碼+代碼演示)

數(shù)據(jù)庫(kù)連接池(Connection pooling)是程序啟動(dòng)時(shí)建立足夠的數(shù)據(jù)庫(kù)連接,并將這些連接組成一個(gè)連接池,由程序動(dòng)態(tài)地對(duì)池中的連接進(jìn)行申請(qǐng),使用,釋放。

簡(jiǎn)單的說(shuō):創(chuàng)建數(shù)據(jù)庫(kù)連接是一個(gè)很耗時(shí)的操作,也容易對(duì)數(shù)據(jù)庫(kù)造成安全隱患。所以,在程序初始化的時(shí)候,集中創(chuàng)建多個(gè)數(shù)據(jù)庫(kù)連接,并把他們集中管理,供程序使用,可以保證較快的數(shù)據(jù)庫(kù)讀寫(xiě)速度,還更加安全可靠。

不使用數(shù)據(jù)庫(kù)連接池

如果不使用數(shù)據(jù)庫(kù)連接池,對(duì)于每一次SQL操作,都要走一遍下面完整的流程:

1.TCP建立連接的三次握手(客戶端與 MySQL服務(wù)器的連接基于TCP協(xié)議)

2.MySQL認(rèn)證的三次我收

3.真正的SQL執(zhí)行

4.MySQL的關(guān)閉

5.TCP的四次握手關(guān)閉

可以看出來(lái),為了執(zhí)行一條SQL,需要進(jìn)行大量的初始化與關(guān)閉操作

使用數(shù)據(jù)庫(kù)連接池

如果使用數(shù)據(jù)庫(kù)連接池,那么會(huì) 事先申請(qǐng)(初始化)好 相關(guān)的數(shù)據(jù)庫(kù)連接,然后在之后的SQL操作中會(huì)復(fù)用這些數(shù)據(jù)庫(kù)連接,操作結(jié)束之后數(shù)據(jù)庫(kù)也不會(huì)斷開(kāi)連接,而是將數(shù)據(jù)庫(kù)對(duì)象放回到數(shù)據(jù)庫(kù)連接池中

資源重用:由于數(shù)據(jù)庫(kù)連接得到重用,避免了頻繁的創(chuàng)建、釋放連接引起的性能開(kāi)銷,在減少系統(tǒng)消耗的基礎(chǔ)上,另一方面也增進(jìn)了系統(tǒng)運(yùn)行環(huán)境的平穩(wěn)性(減少內(nèi)存碎片以及數(shù)據(jù)庫(kù)臨時(shí)進(jìn)程/線程的數(shù)量)。

更快的系統(tǒng)響應(yīng)速度:數(shù)據(jù)庫(kù)連接池在初始化過(guò)程中,往往已經(jīng)創(chuàng)建了若干數(shù)據(jù)庫(kù)連接置于池中備用。 此時(shí)連接的初始化工作均已完成。對(duì)于業(yè)務(wù)請(qǐng)求處理而言,直接利用現(xiàn)有可用連接,避免了從數(shù)據(jù)庫(kù)連接初始化和釋放過(guò)程的開(kāi)銷,從而縮減了系統(tǒng)整體響應(yīng)時(shí)間。

統(tǒng)一的連接管理,避免數(shù)據(jù)庫(kù)連接泄露:在較為完備的數(shù)據(jù)庫(kù)連接池實(shí)現(xiàn)中,可根據(jù)預(yù)先的連接占用超時(shí)設(shè)定,強(qiáng)制收回被占用連接。從而避免了常規(guī)數(shù)據(jù)庫(kù)連接操作中可能出現(xiàn)的資源泄露。

如果說(shuō)你的服務(wù)器CPU是4核i7的,連接池大小應(yīng)該為((4*2)+1)=9

相關(guān)視頻推薦

90分鐘搞懂?dāng)?shù)據(jù)庫(kù)連接池技術(shù)|linux后臺(tái)開(kāi)發(fā)

《tcp/ip詳解卷一》: 150行代碼拉開(kāi)協(xié)議棧實(shí)現(xiàn)的篇章

學(xué)習(xí)地址:C/C++Linux服務(wù)器開(kāi)發(fā)/后臺(tái)架構(gòu)師【零聲教育】-學(xué)習(xí)視頻教程-騰訊課堂

需要C/C++ Linux服務(wù)器架構(gòu)師學(xué)習(xí)資料加qun 812855908 獲取(資料包括 C/C++,Linux,golang技術(shù),Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒體,CDN,P2P,K8S,Docker,TCP/IP,協(xié)程,DPDK,ffmpeg 等),免費(fèi)分享

源碼下載

下載方式:(Github中下載)

db_pool目錄下有兩個(gè)目錄,mysql_pool目錄為MySQL連接池代碼,redis_pool為redis連接池代碼

下面介紹mysql_pool

CDBConn解析

概念: 代表一個(gè)數(shù)據(jù)連接對(duì)象實(shí)例

相關(guān)成員:

m_pDBPool:該數(shù)據(jù)庫(kù)連接對(duì)象所屬的數(shù)據(jù)庫(kù)連接池

構(gòu)造函數(shù): 綁定自己所屬于哪個(gè)數(shù)據(jù)庫(kù)連接池

Init()函數(shù): 創(chuàng)建數(shù)據(jù)庫(kù)連接句柄

CDBPool解析

概念:代表一個(gè)數(shù)據(jù)庫(kù)連接池

相關(guān)成員:

Init()函數(shù):常見(jiàn)指定數(shù)量的數(shù)據(jù)庫(kù)實(shí)例句柄,然后添加到m_free_list中,供后面使用

GetDBConn()函數(shù): 用于從空閑隊(duì)列中返回可以使用的數(shù)據(jù)庫(kù)連接句柄

RelDBConn()函數(shù): 程序使用完該數(shù)據(jù)庫(kù)句柄之后,將句柄放回到空閑隊(duì)列中

測(cè)試之前,將代碼中的數(shù)據(jù)庫(kù)地址、端口、賬號(hào)密碼等改為自己的(代碼中有好幾處)

進(jìn)入MySQL, 創(chuàng)建mysql_pool_test數(shù)據(jù)庫(kù)

進(jìn)入到mysql_pool目錄下, 創(chuàng)建一個(gè)build目錄并進(jìn)入 :

然后輸入如下的命令進(jìn)行編譯

之后就會(huì)在目錄下生成如下的可執(zhí)行文件

輸入如下兩條命令進(jìn)行測(cè)試: 可以看到不使用數(shù)據(jù)庫(kù)連接池,整個(gè)操作耗時(shí)4秒左右;使用連接池之后,整個(gè)操作耗時(shí)2秒左右,提升了一倍

源碼下載

下面介紹redis_pool

測(cè)試

進(jìn)入到redis_pool目錄下, 創(chuàng)建一個(gè)build目錄并進(jìn)入 :

然后輸入如下的命令進(jìn)行編譯

之后就會(huì)在目錄下生成如下的可執(zhí)行文件

輸入如下的命令進(jìn)行測(cè)試: 可以看到不使用數(shù)據(jù)庫(kù)連接池,整個(gè)操作耗時(shí)182ms;使用連接池之后,整個(gè)操作耗時(shí)21ms,提升了很多

進(jìn)入redis,可以看到我們新建的key:

如何在tomcat配置mysql數(shù)據(jù)連接池

eb開(kāi)發(fā)中與數(shù)據(jù)庫(kù)的連接是必不可少的,而數(shù)據(jù)庫(kù)連接池技術(shù)很好的優(yōu)化了動(dòng)態(tài)頁(yè)與數(shù)據(jù)庫(kù)的連接,相比單個(gè)連接數(shù)據(jù)庫(kù)連接池節(jié)省了很大的資源。用一個(gè)通俗的比喻:如果一個(gè)人洗澡需花一桶水,那一百個(gè)人就要花一百桶水,太浪費(fèi)了.如果都在池子里洗,洗多少個(gè)人都不怕了。

1.將MySQL的JDBC驅(qū)動(dòng)復(fù)制到Tomcat安裝目錄里的lib文件夾下。驅(qū)動(dòng)可以從MySQL官網(wǎng)上下載,為jar包。

2.將Tomcat的配置文件Context.xml做如下修改:

Context path="/DBTest" docBase="DBTest"

debug="5" reloadable="true" crossContext="true"

!-- maxActive: Maximum number of dB connections in pool. Make sure you

configure your mysqld max_connections large enough to handle

all of your db connections. Set to -1 for no limit.

--

!-- maxIdle: Maximum number of idle dB connections to retain in pool.

Set to -1 for no limit. See also the DBCP documentation on this

and the minEvictableIdleTimeMillis configuration parameter.

--

!-- maxWait: Maximum time to wait for a dB connection to become available

in ms, in this example 10 seconds. An Exception is thrown if

this timeout is exceeded. Set to -1 to wait indefinitely.

--

!-- username and password: MySQL dB username and password for dB connections --

!-- driverClassName: Class name for the old mm.mysql JDBC driver is

org.gjt.mm.mysql.Driver - we recommend using Connector/J though.

Class name for the official MySQL Connector/J driver is com.mysql.jdbc.Driver.

--

!-- url: The JDBC connection url for connecting to your MySQL dB.

The autoReconnect=true argument to the url makes sure that the

mm.mysql JDBC Driver will automatically reconnect if mysqld closed the

connection. mysqld by default closes idle connections after 8 hours.

--

Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"

maxActive="100" maxIdle="30" maxWait="10000"

username="javauser" password="javadude" driverClassName="com.mysql.jdbc.Driver"

url="jdbc:mysql://localhost:3306/javatest?autoReconnect=true"/

/Context

注意代碼中紅色部分:DBTest 改為自己的項(xiàng)目路徑;TestDB改為自己的數(shù)據(jù)源名,但是后面使用時(shí)候要與這里的配置保持一致;javauser和 javauser改為自己MySQL的用戶名密碼;url的格式依次為jdbc:mysql://{你的數(shù)據(jù)庫(kù)服務(wù)所在的IP,如果為本機(jī)就為localhost}:{你的數(shù)據(jù)庫(kù)服務(wù)端口號(hào)}/{MySQL中要使用的數(shù)據(jù)庫(kù)名稱}?autoReconnect=true 。

3.修改項(xiàng)目WEB-INF/web.xml 配置文件(若無(wú),請(qǐng)新建),在“/web-app”之上添加如下代碼:

resource-ref

descriptionDB Connection/description

res-ref-namejdbc/TestDB/res-ref-name

res-typejavax.sql.DataSource/res-type

res-authContainer/res-auth

/resource-ref

上步中若修改了數(shù)據(jù)源名此步中紅色部分請(qǐng)保持與上步中的一致。

4.代碼示例:

Context initContext = new InitialContext();

Context envContext = (Context)initContext.lookup("java:/comp/env");

DataSource ds = (DataSource)envContext.lookup("jdbc/TestDB");

Connection conn = ds.getConnection();

Statement st = null;

ResultSet rs = null;

st = conn.createStatement();

rs = st.executeQuery(yoursql);

注意紅色部分與上兩步中的一致;yoursql處寫(xiě)你的sql代碼。

通過(guò)1-3步就在Tomcat中配置好了MySQL的數(shù)據(jù)庫(kù)連接池。

怎么用druid連接池連接mysql

現(xiàn)在常用的開(kāi)源數(shù)據(jù)庫(kù)連接池主要有c3p0、dbcp、proxool三種,其中:

Spring 推薦使用dbcp;

Hibernate 推薦使用c3p0和proxool;

1、 DBCP:apache

DBCP(DataBase connection pool)數(shù)據(jù)庫(kù)連接池。是apache上的一個(gè) java連接池項(xiàng)目,也是 tomcat使用的連接池組件。單獨(dú)使用dbcp需要3個(gè)包:common-dbcp.jar,common-pool.jar,common-collections.jar由于建立數(shù)據(jù)庫(kù)連接是一個(gè)非常耗時(shí)耗資源的行為,所以通過(guò)連接池預(yù)先同數(shù)據(jù)庫(kù)建立一些連接,放在內(nèi)存中,應(yīng)用程序需要建立數(shù)據(jù)庫(kù)連接時(shí)直接到連接池中申請(qǐng)一個(gè)就行,用完后再放回去。dbcp沒(méi)有自動(dòng)的去回收空閑連接的功能。

2、 C3P0:

C3P0是一個(gè)開(kāi)源的jdbc連接池,它實(shí)現(xiàn)了數(shù)據(jù)源和jndi綁定,支持jdbc3規(guī)范和jdbc2的標(biāo)準(zhǔn)擴(kuò)展。c3p0是異步操作的,緩慢的jdbc操作通過(guò)幫助進(jìn)程完成。擴(kuò)展這些操作可以有效的提升性能。目前使用它的開(kāi)源項(xiàng)目有Hibernate,Spring等。c3p0有自動(dòng)回收空閑連接功能。

3、 Proxool:Sourceforge

Proxool是一種Java數(shù)據(jù)庫(kù)連接池技術(shù)。是sourceforge下的一個(gè)開(kāi)源項(xiàng)目,這個(gè)項(xiàng)目提供一個(gè)健壯、易用的連接池,最為關(guān)鍵的是這個(gè)連接池提供監(jiān)控的功能,方便易用,便于發(fā)現(xiàn)連接泄漏的情況。

對(duì)比:

1 相同時(shí)間內(nèi)同等量的線程數(shù)和循環(huán)次數(shù)下:通過(guò)對(duì)三個(gè)連接池的三個(gè)標(biāo)志性性能測(cè)試參數(shù)(Average,median,90%Line)進(jìn)行比較發(fā)現(xiàn):性能dbcp=c3p0proxool;

2 不同情況下的同一數(shù)據(jù)庫(kù)連接池測(cè)試:通過(guò)觀察 Average,median,90%Line三個(gè)參數(shù)發(fā)

現(xiàn)三個(gè)連接池的穩(wěn)定性(三種連接池的三個(gè)測(cè)試參數(shù)的變化情況)依次:穩(wěn)定性dbcp=c3p0proxool。

結(jié)論:

通過(guò)對(duì)三種數(shù)據(jù)庫(kù)連接池的性能測(cè)試發(fā)現(xiàn),proxool和 c3p0能夠更好的支持高并發(fā),但是在穩(wěn)定性方面略遜于 dpcp;

jboss里怎么配置mysql數(shù)據(jù)庫(kù)的連接池

一、要在JBoss中使用MySQL的話首先要把MySQL的JDBC驅(qū)動(dòng)放到CLASSPATH中。然后再JBoss配置。

二、再把/docs/examples/jca/mysql-ds.xml復(fù)制到/server/default/deploy目錄下。修改mysql-ds.xml文件,其中是數(shù)據(jù)庫(kù)主機(jī)名是數(shù)據(jù)庫(kù)名。

我的mysql-ds.xml如下

三、然后需要JBoss配置standardjaws.xml (注:\server\default\conf目錄下)文件。

四、同樣也需要把JBosscmp-jdbc.xml文件 注: \server\default\conf目錄下)。

五、最后再修改login-config.xml(\server\default\conf目錄下)文件來(lái)使用。

六、測(cè)試代碼。

本文標(biāo)題:mysql怎么連接池子,mysql默認(rèn)連接池大小
標(biāo)題網(wǎng)址:http://chinadenli.net/article17/dsgpddj.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yíng)銷推廣品牌網(wǎng)站建設(shè)用戶體驗(yàn)做網(wǎng)站網(wǎng)站排名定制網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)