本文目錄一覽:
- 1、MySQL與Redis資料庫連接池介紹(圖示+源碼+代碼演示)
- 2、怎麼用mysql連接mysql資料庫
- 3、如何連接遠程Mysql資料庫
- 4、雲南北大青鳥設計培訓告訴你C++連接mysql資料庫的兩種方法?
MySQL與Redis資料庫連接池介紹(圖示+源碼+代碼演示)
資料庫連接池(Connection pooling)是程序啟動時建立足夠的資料庫連接,並將這些連接組成一個連接池,由程序動態地對池中的連接進行申請,使用,釋放。
簡單的說:創建資料庫連接是一個很耗時的操作,也容易對資料庫造成安全隱患。所以,在程序初始化的時候,集中創建多個資料庫連接,並把他們集中管理,供程序使用,可以保證較快的資料庫讀寫速度,還更加安全可靠。
不使用資料庫連接池
如果不使用資料庫連接池,對於每一次SQL操作,都要走一遍下面完整的流程:
1.TCP建立連接的三次握手(客戶端與 MySQL伺服器的連接基於TCP協議)
2.MySQL認證的三次我收
3.真正的SQL執行
4.MySQL的關閉
5.TCP的四次握手關閉
可以看出來,為了執行一條SQL,需要進行大量的初始化與關閉操作
使用資料庫連接池
如果使用資料庫連接池,那麼會 事先申請(初始化)好 相關的資料庫連接,然後在之後的SQL操作中會復用這些資料庫連接,操作結束之後資料庫也不會斷開連接,而是將資料庫對象放回到資料庫連接池中
資源重用:由於資料庫連接得到重用,避免了頻繁的創建、釋放連接引起的性能開銷,在減少系統消耗的基礎上,另一方面也增進了系統運行環境的平穩性(減少內存碎片以及資料庫臨時進程/線程的數量)。
更快的系統響應速度:資料庫連接池在初始化過程中,往往已經創建了若干資料庫連接置於池中備用。 此時連接的初始化工作均已完成。對於業務請求處理而言,直接利用現有可用連接,避免了從資料庫連接初始化和釋放過程的開銷,從而縮減了系統整體響應時間。
統一的連接管理,避免資料庫連接泄露:在較為完備的資料庫連接池實現中,可根據預先的連接佔用超時設定,強制收回被佔用連接。從而避免了常規資料庫連接操作中可能出現的資源泄露。
如果說你的伺服器CPU是4核i7的,連接池大小應該為((4*2)+1)=9
相關視頻推薦
90分鐘搞懂資料庫連接池技術|linux後台開發
《tcp/ip詳解卷一》: 150行代碼拉開協議棧實現的篇章
學習地址:C/C++Linux伺服器開發/後台架構師【零聲教育】-學習視頻教程-騰訊課堂
需要C/C++ Linux伺服器架構師學習資料加qun 812855908 獲取(資料包括 C/C++,Linux,golang技術,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒體,CDN,P2P,K8S,Docker,TCP/IP,協程,DPDK,ffmpeg 等),免費分享
源碼下載
下載方式:(Github中下載)
db_pool目錄下有兩個目錄,mysql_pool目錄為MySQL連接池代碼,redis_pool為redis連接池代碼
下面介紹mysql_pool
CDBConn解析
概念: 代表一個數據連接對象實例
相關成員:
m_pDBPool:該資料庫連接對象所屬的資料庫連接池
構造函數: 綁定自己所屬於哪個資料庫連接池
Init()函數: 創建資料庫連接句柄
CDBPool解析
概念:代表一個資料庫連接池
相關成員:
Init()函數:常見指定數量的資料庫實例句柄,然後添加到m_free_list中,供後面使用
GetDBConn()函數: 用於從空閑隊列中返回可以使用的資料庫連接句柄
RelDBConn()函數: 程序使用完該資料庫句柄之後,將句柄放回到空閑隊列中
測試之前,將代碼中的資料庫地址、埠、賬號密碼等改為自己的(代碼中有好幾處)
進入MySQL, 創建mysql_pool_test資料庫
進入到mysql_pool目錄下, 創建一個build目錄並進入 :
然後輸入如下的命令進行編譯
之後就會在目錄下生成如下的可執行文件
輸入如下兩條命令進行測試: 可以看到不使用資料庫連接池,整個操作耗時4秒左右;使用連接池之後,整個操作耗時2秒左右,提升了一倍
源碼下載
下面介紹redis_pool
測試
進入到redis_pool目錄下, 創建一個build目錄並進入 :
然後輸入如下的命令進行編譯
之後就會在目錄下生成如下的可執行文件
輸入如下的命令進行測試: 可以看到不使用資料庫連接池,整個操作耗時182ms;使用連接池之後,整個操作耗時21ms,提升了很多
進入redis,可以看到我們新建的key:
怎麼用mysql連接mysql資料庫
通常我們在網路上看到的mysql教程和mysql工具書,裡面都是cmd命令和結果集。
也許有一些初學者不懂在系統的哪個角落輸入這些命令,或者啟動mysql的一些工具,下面教你怎樣進入這個mysql的cmd模式和基本的mysql的cmd操作。
以window系統為例,首先,我們把滑鼠移動到左下角的開始,點擊【開始】按鈕,找到【運行】,打開運行後,在輸入框裡面輸入「cmd」,然後按回車鍵(也就是enter鍵),隨即進入了cmd模式(一個背景為黑色的窗口,裡面有一些英文字母)。
打開cmd後,我們看到:C:\Ducuments and Settings\Administrator (有一些朋友的系統使用的不是Administrator系統用戶的也就不同了,如果你進入window系統使用的用戶為user,那這個Administrator就換為user)
其實這串英文字母表示的是一個系統的位置,現在進入cmd之後的位置為:c盤的Ducuments and Settings目錄裡面的Administrator目錄下,那麼,既然知道這個cmd的位置的意思了,我們接著要做什麼呢?對了,就是要進入mysql的bin目錄,到裡面才可以用cmd啟動mysql。
以mysql5.0為例,mysql的安裝目錄在c盤的Program Files目錄裡面的MySQL裡面的MySQL Server 5.0(也就是C:\Program Files\MySQL\MySQL Server 5.0),那麼,我們就準備要進入這個目錄裡面了。
步驟如下:
C:\Ducuments and Settings\Administrator cd\(回車鍵)
出現下面:
C:\
第二步:
C:\cd C:\Program Files\MySQL\MySQL Server 5.0\bin(回車鍵)
出現:C:\Program Files\MySQL\MySQL Server 5.0\bin
第三步:(連接mysql伺服器)
C:\Program Files\MySQL\MySQL Server 5.0\binmysql -hlocalhost -uroot -p(回車鍵)
(上面的-hlocalhost是指使用本地用戶來連接,-uroot是指使用用戶名為root的用戶來連接,-p是指空密碼,一般初學者都還沒有設置root的用戶密碼的,如果你在安裝mysql5.0時候配置了伺服器後,第一個要您設置root的密碼,請你記住,把它填入上面的-p之後)
成功連接後,就會出現mysql的歡迎語和mysql的版本號,
接著cmd的盤符出現為:
mysql
那就表示成功連接mysql伺服器了,以後看到工具書裡面的命令,為mysql命令,你就在這裡輸入行了,結果集會出現在cmd裡面。
如何連接遠程Mysql資料庫
一、連接遠程資料庫:
1、顯示密碼
如:MySQL
連接遠程資料庫(192.168.5.116),埠「3306」,用戶名為「root」,密碼「123456」
C:/mysql -h
192.168.5.116 -P 3306 -u root -p123456
2、隱藏密碼
如:MySQL 連接本地資料庫,用戶名為「root」,
C:/mysql -h
localhost -u root -p
Enter password:
二、配置mysql允許遠程鏈接
默認情況下,mysql帳號不允許從遠程登陸,只能在localhost登錄。本文提供了二種方法設置mysql可以通過遠程主機進行連接。
一、改表法
在localhost登入mysql後,更改 “mysql” 資料庫里的 “user” 表裡的 “host”
項,將”localhost”改稱”%”
例如:
#mysql -u root
-p
Enter password:
……
mysql
mysqlupdate user
set host = ‘%’ where user = ‘root’;
mysqlselect host,
user from user;
二、授權法
例如:
你想myuser使用mypassword(密碼)從任何主機連接到mysql伺服器的話。
mysqlGRANT ALL
PRIVILEGES ON *.* TO ‘myuser’@’%’IDENTIFIED BY ‘mypassword’ WITH GRANT OPTION;
如果你想允許用戶myuser從ip為192.168.1.6的主機連接到mysql伺服器,並使用mypassword作為密碼
mysqlGRANT ALL
PRIVILEGES ON *.* TO ‘myuser’@’192.168.1.3’IDENTIFIED BY
‘mypassword’ WITH GRANT OPTION;
mysqlFLUSH
PRIVILEGES
使修改生效,就可以了
常見問題:
1、在採用法二授權法之後,無法在本地登錄mysql(如:#mysql -u root -p -h
192.168.5.116
Enter password:
ERROR 1045 (28000): Access denied for user
‘root’@’loadb116’ (using password: YES)
上例中loadb116是主機名.
解決方法:
1、這時可以使用:mysql -u
root -p 登錄,進入到mysql後。
mysql grant all privileges on *.* to ‘root’@’loadb116’
identified by ‘123456’ with grant option;
Query OK, 0 rows affected
(0.00 sec)
mysql flush
privileges;
Query OK, 0 rows affected (0.00
sec)
2、在本地使用ip地址登錄
#
mysql -u root -p -h
192.168.5.116
Enter password:
Welcome to the MySQL
monitor. Commands end with ; or /g.
Your MySQL connection id is 60
Server
version: 5.1.45 MySQL Community Server (GPL)
Type ‘help;’ or ‘/h’ for
help. Type ‘/c’ to clear the buffer.
mysql
雲南北大青鳥設計培訓告訴你C++連接mysql資料庫的兩種方法?
現在正做一個介面,通過不同的連接字元串操作不同的資料庫(資料庫培訓資料庫認證)。要用到MySQL(MySQL認證Mysql培訓)資料庫,以前沒用過這個資料庫,用aC++(C++培訓)ess和sqlserver比較多。通過網上的一些資料和自己的摸索,大致清楚了C++連接mysql的方法。大理IT培訓認為可以通過2種方法實現。
第一種方法是利用ADO連接,
第二種方法是利用mysql自己的api函數進行連接。
第一種方法可以實現我當前的需求,通過連接不同的字元串來連接不同的資料庫。暫時只連接了mysql,sqlserver,oracle,access。對於access,因為它創建表的SQL語句不太兼容標準SQL語句,需要做一些處理,這裡暫時不說。第二種方法只能針對於mysql資料庫的連接,不過用這種方法不用安裝MyODBC伺服器程序。
不管用哪種方法,首先需要安裝Mysql資料庫,安裝方法請看「mysql安裝及一些注意點」。最好安裝一個Navicatformysql,方便操作mysql資料庫。下面分別說下這兩種方法:
(一)通過ADO連接MySql資料庫
1、通過ADO連接MySql資料庫,首先得安裝MyODBC伺服器程序。
MyODBC版本要和MySql的版本對應上,否則會連接不上資料庫。我用的版本分別是mysql-5.1.48-win32.msi和mysql-connector-odbc-5.1.5-win32.msi。
安裝好後,點擊開始菜單-設置-控制面板-管理工具-數據源(ODBC)-用戶DSN-添加-選擇MySQLODBC5.1Driver。如下圖:
然後雙擊MySQLODBC5.1Driver進行配置。配置好可以點Test進行下測試(如下圖),如果能連上會彈出connectionsuccessful對話框。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/301817.html