mysql伺服器連接過程淺析,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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-30 16:09
下一篇 2024-12-30 16:09

相關推薦

  • 如何修改mysql的埠號

    本文將介紹如何修改mysql的埠號,方便開發者根據實際需求配置對應埠號。 一、為什麼需要修改mysql埠號 默認情況下,mysql使用的埠號是3306。在某些情況下,我們需…

    編程 2025-04-29
  • Java Bean載入過程

    Java Bean載入過程涉及到類載入器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean載入的過程。 一、類載入器 類載入器是Java虛擬機…

    編程 2025-04-29
  • 伺服器安裝Python的完整指南

    本文將為您提供伺服器安裝Python的完整指南。無論您是一位新手還是經驗豐富的開發者,您都可以通過本文輕鬆地完成Python的安裝過程。以下是本文的具體內容: 一、下載Python…

    編程 2025-04-29
  • STUN 伺服器

    STUN 伺服器是一個網路伺服器,可以協助網路設備(例如 VoIP 設備)解決 NAT 穿透、防火牆等問題,使得設備可以正常地進行數據傳輸。本文將從多個方面對 STUN 伺服器做詳…

    編程 2025-04-29
  • Python操作MySQL

    本文將從以下幾個方面對Python操作MySQL進行詳細闡述: 一、連接MySQL資料庫 在使用Python操作MySQL之前,我們需要先連接MySQL資料庫。在Python中,我…

    編程 2025-04-29
  • 解決docker-compose 容器時間和伺服器時間不同步問題

    docker-compose是一種工具,能夠讓您使用YAML文件來定義和運行多個容器。然而,有時候容器的時間與伺服器時間不同步,導致一些不必要的錯誤和麻煩。以下是解決方法的詳細介紹…

    編程 2025-04-29
  • Python緩存圖片的處理方式

    本文將從多個方面詳細闡述Python緩存圖片的處理方式,包括緩存原理、緩存框架、緩存策略、緩存更新和緩存清除等方面。 一、緩存原理 緩存是一種提高應用程序性能的技術,在網路應用中流…

    編程 2025-04-29
  • MySQL遞歸函數的用法

    本文將從多個方面對MySQL遞歸函數的用法做詳細的闡述,包括函數的定義、使用方法、示例及注意事項。 一、遞歸函數的定義 遞歸函數是指在函數內部調用自身的函數。MySQL提供了CRE…

    編程 2025-04-29
  • MySQL bigint與long的區別

    本文將從數據類型定義、存儲空間、數據範圍、計算效率、應用場景五個方面詳細闡述MySQL bigint與long的區別。 一、數據類型定義 bigint在MySQL中是一種有符號的整…

    編程 2025-04-28
  • Python在線編輯器的優勢與實現方式

    Python在線編輯器是Python語言愛好者的重要工具之一,它可以讓用戶方便快捷的在線編碼、調試和分享代碼,無需在本地安裝Python環境。本文將從多個方面對Python在線編輯…

    編程 2025-04-28

發表回復

登錄後才能評論