原創(chuàng)|行業(yè)資訊|編輯:龔雪|2015-10-16 16:18:54.000|閱讀 309 次
概述:通過對比Oracle、SQL Server、PostgreSQL和MySQL解決預備語句的方法,我們更好的了解到MySQL如何以數(shù)據(jù)庫性能為出發(fā)點進行工作的。緩存語句對應(yīng)用程序性能有顯著影響。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
通過對比Oracle、SQL Server、PostgreSQL和MySQL解決預備語句的方法,我們更好的了解到MySQL如何以數(shù)據(jù)庫性能為出發(fā)點進行工作的。
通常,預備語句的方式有兩種:服務(wù)器端和客戶端。
服務(wù)器端預備語句是最常見的形態(tài),它需要兩個數(shù)據(jù)回路:
如果數(shù)據(jù)庫不進行預備語句的緩存,額外的數(shù)據(jù)回路將會影響性能。為此,一些數(shù)據(jù)庫系統(tǒng)不默認執(zhí)行服務(wù)器端的預備語句,而是執(zhí)行客戶端的預備語句。
為了使服務(wù)器端的預備語句可行,必須啟用useServerPrepStmts屬性。
在客戶端的預備語句,綁定參數(shù)標記將先于實際參數(shù)發(fā)送到數(shù)據(jù)庫服務(wù)器。這樣,驅(qū)動程序就可以通過單個請求來獲取結(jié)果集。
在高性能的OLTP系統(tǒng)中,語句緩存在緩解處理延遲中起到了非常重要的作用。為了避免多次準備一個語句,MySQL驅(qū)動程序提供了客戶端的語句緩存。默認狀態(tài)下被禁用,可以使用cachePrepStmtsConnection屬性激活該功能。
對于客戶端的語句,被標記的語句結(jié)構(gòu)可以在不同的預備語句調(diào)用中使用。綁定了一個數(shù)據(jù)庫連接的緩存,當使用一個連接池時,物理接連周期將跨過多個應(yīng)用級事物處理時間(所以緩存會為頻繁執(zhí)行語句提供便利)。
對于服務(wù)器端的語句,驅(qū)動程序?qū)Ψ?wù)器端預備語句進行緩存,同樣還有服務(wù)器端語句支持的緩存(并非所有語句都可以在服務(wù)器端進行預處理)。
總之,緩存語句對應(yīng)用程序性能有顯著影響。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@ke049m.cn