數(shù)據(jù)庫訪問方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機(jī)技術(shù)領(lǐng)域,尤其涉及數(shù)據(jù)庫訪問方法及裝置。
【背景技術(shù)】
[0002]目前,數(shù)據(jù)庫數(shù)據(jù)的訪問處理采取數(shù)據(jù)庫代理方案,數(shù)據(jù)庫代理的重要功能就是讀寫分離,即主機(jī)只進(jìn)行寫操作,備機(jī)只進(jìn)行讀操作,備機(jī)只提供查詢操作,任何具有Select選擇權(quán)限的用戶都可以使用備機(jī)。
[0003]在數(shù)據(jù)庫的訪問過程中,數(shù)據(jù)庫的性能直接影響對外服務(wù)體驗,其中數(shù)據(jù)庫連接是耗費(fèi)數(shù)據(jù)庫性能的一個重要原因,優(yōu)化數(shù)據(jù)庫連接是提高數(shù)據(jù)庫性能的一個突破口。數(shù)據(jù)庫連接池是目前減少數(shù)據(jù)庫連接的解決方案,針對數(shù)據(jù)庫代理的連接池的實現(xiàn)有MysqlProxy讀寫分離和ScaleBases等產(chǎn)品,上述這些產(chǎn)品的連接池效果圖如圖1所示。
[0004]在采取如圖1所示的連接池技術(shù)中,當(dāng)連接池的連接數(shù)量達(dá)到最大數(shù)量時,用戶登錄會引發(fā)被拒或者連接重置。比如備機(jī)I允許的最大連接個數(shù)為四個當(dāng)達(dá)到四個時,mysql proxy的處理方法是選擇一條已建立的連接進(jìn)行重置,重置連接很耗費(fèi)數(shù)據(jù)庫性能;Scalebases的處理方法為拒絕客戶端連接。
[0005]在上述mysql proxy和Scalebases的處理方案中把連接池和用戶名綁定,導(dǎo)致連接不可被其他用戶復(fù)用,如圖1,備機(jī)I有三個連接A、B、C分別為用戶A、B、C建立,客戶端過來的A、B、C的請求只可以選擇對應(yīng)的連接處理,比如請求A代理只可以選擇連接A發(fā)送,請求B代理只可以選擇連接B發(fā)送,如果用戶A的請求很多B、C的比較少就會導(dǎo)致連接A擁塞連接B、C空閑,服務(wù)器性能沒有最大化。
[0006]綜上,目前采取的連接池技術(shù)提高數(shù)據(jù)庫性能的方式,因連接池和用戶名綁定,無法充分利用連接,導(dǎo)致數(shù)據(jù)庫性能差。
[0007]上述內(nèi)容僅用于輔助理解本發(fā)明的技術(shù)方案,并不代表承認(rèn)上述內(nèi)容是現(xiàn)有技術(shù)。
【發(fā)明內(nèi)容】
[0008]本發(fā)明的主要目的在于提供一種數(shù)據(jù)庫訪問方法及裝置,旨在解決目前采取的連接池技術(shù)提高數(shù)據(jù)庫性能的方式,因連接池和用戶名綁定,無法充分利用連接,導(dǎo)致數(shù)據(jù)庫性能差的問題。
[0009]為實現(xiàn)上述目的,本發(fā)明提供的一種數(shù)據(jù)庫訪問方法,包括:
[0010]在接收到數(shù)據(jù)庫訪問請求后,獲取訪問請求對應(yīng)的訪問權(quán)限;
[0011]確定所述訪問權(quán)限對應(yīng)的待訪問數(shù)據(jù)庫服務(wù)器;
[0012]從所述待訪問數(shù)據(jù)庫服務(wù)器獲取所述訪問請求對應(yīng)的訪問數(shù)據(jù)。
[0013]優(yōu)選地,所述確定所述訪問權(quán)限對應(yīng)的待訪問數(shù)據(jù)庫服務(wù)器的步驟包括:
[0014]確定所述訪問權(quán)限對應(yīng)的訪問數(shù)據(jù)庫服務(wù)器;
[0015]確定所述訪問數(shù)據(jù)庫服務(wù)器當(dāng)前的訪問連接數(shù);
[0016]選擇所述訪問連接數(shù)最少的訪問數(shù)據(jù)庫服務(wù)器作為待訪問數(shù)據(jù)庫服務(wù)器。
[0017]優(yōu)選地,所述確定所述訪問權(quán)限對應(yīng)的待訪問數(shù)據(jù)庫服務(wù)器的步驟包括:
[0018]確定所述訪問權(quán)限對應(yīng)的訪問數(shù)據(jù)庫服務(wù)器;
[0019]確定所述訪問數(shù)據(jù)庫服務(wù)器當(dāng)前的訪問數(shù)據(jù)量;
[0020]選擇所述訪問數(shù)據(jù)量最少的訪問數(shù)據(jù)庫服務(wù)器作為待訪問數(shù)據(jù)庫服務(wù)器。
[0021]優(yōu)選地,所述確定所述訪問權(quán)限對應(yīng)的待訪問數(shù)據(jù)庫服務(wù)器的步驟包括:
[0022]確定所述訪問權(quán)限對應(yīng)的訪問數(shù)據(jù)庫服務(wù)器;
[0023]確定所述訪問數(shù)據(jù)庫服務(wù)器當(dāng)前的剩余處理能力;
[0024]選擇剩余處理能力最大的訪問數(shù)據(jù)庫服務(wù)器作為待訪問數(shù)據(jù)庫服務(wù)器。
[0025]優(yōu)選地,所述獲取訪問請求對應(yīng)的訪問權(quán)限的步驟之后,還包括:
[0026]在獲取所述訪問權(quán)限失敗時,確定主數(shù)據(jù)庫服務(wù)器作為待訪問數(shù)據(jù)庫服務(wù)器。
[0027]優(yōu)選地,所述方法還包括:
[0028]在接收到數(shù)據(jù)庫訪問請求時,解析所述數(shù)據(jù)庫訪問請求得到SQL語句;
[0029]根據(jù)所述SQL語句判斷所述數(shù)據(jù)庫訪問請求是否為讀操作;
[0030]在所述SQL語句判斷所述數(shù)據(jù)庫訪問請求是否為讀操作時,判斷所述數(shù)據(jù)庫訪問請求是否存在預(yù)設(shè)標(biāo)記;
[0031]在所述數(shù)據(jù)庫訪問請求存在預(yù)設(shè)標(biāo)記時,從確定的訪問數(shù)據(jù)庫服務(wù)器中選擇一條空閑連接獲取所述訪問請求對應(yīng)的訪問數(shù)據(jù)。
[0032]此外,為實現(xiàn)上述目的,本發(fā)明還提供一種數(shù)據(jù)庫訪問裝置,包括:
[0033]獲取模塊,用于在接收到數(shù)據(jù)庫訪問請求后,獲取訪問請求對應(yīng)的訪問權(quán)限;
[0034]確定模塊,用于確定所述訪問權(quán)限對應(yīng)的待訪問數(shù)據(jù)庫服務(wù)器;
[0035]所述獲取模塊,還用于從所述待訪問數(shù)據(jù)庫服務(wù)器獲取所述訪問請求對應(yīng)的訪問數(shù)據(jù)。
[0036]優(yōu)選地,所述確定模塊包括:
[0037]確定單元,用于確定所述訪問權(quán)限對應(yīng)的訪問數(shù)據(jù)庫服務(wù)器;還用于確定所述訪問數(shù)據(jù)庫服務(wù)器當(dāng)前的訪問連接數(shù);
[0038]選擇單元,用于選擇所述訪問連接數(shù)最少的訪問數(shù)據(jù)庫服務(wù)器作為待訪問數(shù)據(jù)庫服務(wù)器。
[0039]優(yōu)選地,所述確定單元,還用于確定所述訪問權(quán)限對應(yīng)的訪問數(shù)據(jù)庫服務(wù)器;還用于確定所述訪問數(shù)據(jù)庫服務(wù)器當(dāng)前的訪問數(shù)據(jù)量;
[0040]所述選擇單元,還用于選擇所述訪問數(shù)據(jù)量最少的訪問數(shù)據(jù)庫服務(wù)器作為待訪問數(shù)據(jù)庫服務(wù)器。
[0041]優(yōu)選地,所述確定單元,還用于確定所述訪問權(quán)限對應(yīng)的訪問數(shù)據(jù)庫服務(wù)器;還用于確定所述訪問數(shù)據(jù)庫服務(wù)器當(dāng)前的剩余處理能力;
[0042]所述選擇單元,還用于選擇剩余處理能力最大的訪問數(shù)據(jù)庫服務(wù)器作為待訪問數(shù)據(jù)庫服務(wù)器。
[0043]優(yōu)選地,所述確定模塊,還用于在獲取所述訪問權(quán)限失敗時,確定主數(shù)據(jù)庫服務(wù)器作為待訪問數(shù)據(jù)庫服務(wù)器。
[0044]優(yōu)選地,所述裝置還包括:
[0045]解析模塊,用于在接收到數(shù)據(jù)庫訪問請求時,解析所述數(shù)據(jù)庫訪問請求得到SQL語句;
[0046]判斷模塊,用于根據(jù)所述SQL語句判斷所述數(shù)據(jù)庫訪問請求是否為讀操作;還用于在所述SQL語句判斷所述數(shù)據(jù)庫訪問請求是否為讀操作時,判斷所述數(shù)據(jù)庫訪問請求是否存在預(yù)設(shè)標(biāo)記;
[0047]選擇模塊,用于在所述數(shù)據(jù)庫訪問請求存在預(yù)設(shè)標(biāo)記時,從確定的訪問數(shù)據(jù)庫服務(wù)器中選擇一條空閑連接獲取所述訪問請求對應(yīng)的訪問數(shù)據(jù)。
[0048]本發(fā)明通過客戶端訪問請求的訪問權(quán)限,選擇訪問數(shù)據(jù)庫服務(wù)器,使得不再將用戶與連接綁定,不同用戶可以選擇不同的連接完成數(shù)據(jù)庫服務(wù)器的訪問,實現(xiàn)充分利用連接,提尚數(shù)據(jù)庫性能。
【附圖說明】
[0049]圖1為現(xiàn)有技術(shù)數(shù)據(jù)庫訪問連接的流程示意圖;
[0050]圖2為本發(fā)明數(shù)據(jù)庫訪問方法的第一實施例的流程示意圖;
[0051]圖3為本發(fā)明連接池建立一實施例的流程示意圖;
[0052]圖4為本發(fā)明數(shù)據(jù)庫訪問連接一實施例的流程示意圖;
[0053]圖5為本發(fā)明確定所述訪問權(quán)限對應(yīng)的待訪問數(shù)據(jù)庫服務(wù)器第一實施例的流程示意圖;
[0054]圖6為本發(fā)明確定所述訪問權(quán)限對應(yīng)的待訪問數(shù)據(jù)庫服務(wù)器第二實施例的流程示意圖;
[0055]圖7為本發(fā)明確定所述訪問權(quán)限對應(yīng)的待訪問數(shù)據(jù)庫服務(wù)器第三實施例的流程示意圖;
[0056]圖8為本發(fā)明數(shù)據(jù)庫訪問方法的第二實施例的流程示意圖;
[0057]圖9為本發(fā)明數(shù)據(jù)庫訪問裝置的第一實施例的功能模塊示意圖;
[0058]圖10為圖9中確定模塊一實施例的細(xì)化功能模塊示意圖;
[0059]圖11為本發(fā)明數(shù)據(jù)庫訪問裝置的第二實施例的功能模塊示意圖。
[0060]本發(fā)明目的的實現(xiàn)、功能特點(diǎn)及優(yōu)點(diǎn)將結(jié)合實