天天看點

Mysql的JDBC 的常見連接配接屬性

在JDBC中,Connection類的建立方式有三種函數(不包括連接配接池),

一是:DriverManager.getConnection(String url),

二是:DriverManager.getConnection(String url,String user,String password);

三是:DriverManager.getConnection(String url,Properties info);

第一種與第二種函數常見,但是第三種方式就不是太常見了,我查了半天書,隻知道第三種函數十分有用,能修改資料庫的預設連接配接設定參數,但是有那些參數,隻說"具體情況具體分析"----讓讀者自己查去,無奈之下,隻得運用搜尋引擎大法.

經過一番搜尋,還真讓我查到了MySQL的JDBC的連接配接屬性,本着共享的原則,就它貼出來了

屬性名 定義 要求?
Connection/Authentication(連接配接/鑒定)
user 連接配接的使用者 No
password 連接配接時使用的密碼。 No
socketFactory 驅動程式用于建立與伺服器套接字連接配接的類的名稱。該類必須實作了接口“com.mysql.jdbc.SocketFactory”,并有公共無參量構造函數。 No
connectTimeout 套接字連接配接的逾時(機關為毫秒),0表示無逾時。僅對JDK-1.4或更新版本有效。預設值為“0”。 No
socketTimeout 網絡套接字連接配接的逾時(預設值0表示無逾時)。 No
useConfigs 在解析URL屬性或應用使用者指定的屬性之前,加載由逗号“,”分隔的配置屬性清單。在文檔的“配置”部分中解釋了這些配置。 No
interactiveClient 設定CLIENT_INTERACTIVE标志,根據INTERACTIVE_TIMEOUT而不是WAIT_TIMEOUT向MySQL通報逾時連接配接。 No
propertiesTransform com.mysql.jdbc.ConnectionPropertiesTransform的1個實施執行個體,在嘗試連接配接之前,驅動程式将使用它來更改傳遞給驅動的URL屬性。 No
useCompression 與伺服器進行通信時采用zlib壓縮(真/假)? 預設值為“假”。 No
High Availability and Clustering(高可用性和簇集)
autoReconnect 驅 動程式是否應嘗試再次建立失效的和/或死連接配接? 如果允許,對于在失效或死連接配接上發出的查詢(屬于目前事務),驅動程式将抛出異常,但在新事務的連接配接上發出下一個查詢時,将嘗試再連接配接。不推薦使用該特 性,這是因為,當應用程式不能恰當處理SQLExceptions時,它會造成與會話狀态和資料一緻性有關的副作用,設計它的目的僅用于下述情況,即,當 你無法配置應用程式來恰當處理因死連接配接和/或無效連接配接導緻的SQLExceptions時。作為可選方式,可将MySQL伺服器變量 “wait_timeout”設定為較高的值,而不是預設的8小時。 No
autoReconnectForPools 使用适合于連接配接池的再連接配接政策(預設值為“假”)。 No
failOverReadOnly 在autoReconnect模式下出現故障切換時,是否應将連接配接設定為“隻讀”? No
reconnectAtTxEnd 如果将autoReconnect設定為“真”,在每次事務結束後驅動程式是否應嘗試再連接配接? No
roundRobinLoadBalance 啟用了autoReconnect而且failoverReadonly為“假”時,是否應按照循環方式挑選要連接配接的主機? No
queriesBeforeRetryMaster 出現故障切換(使用多主機故障切換)并傳回主機之前發出的查詢數。無論首先滿足了哪個條件,“queriesBeforeRetryMaster”或“secondsBeforeRetryMaster”,均會再次與主機進行連接配接。預設值為“50”。 No
secondsBeforeRetryMaster 出現故障切換後,在嘗試再次連接配接到主伺服器之前,驅動程式應等待的時間? 無論首先滿足了哪個條件,“queriesBeforeRetryMaster”或“secondsBeforeRetryMaster”,均會再次與主機進行連接配接。機關為秒,預設值為30。 No
enableDeprecatedAutoreconnect 自3.2版開始,自動再連接配接功能受到冷落,在3.3版中将删除該功能。将該屬性設定為“真”可禁止檢查配置的特性。 No
Security(安全)
allowMultiQueries 在一條語句中,允許使用“;”來分隔多條查詢(真/假,預設值為“假”)。 No
useSSL 與伺服器進行通信時使用SSL(真/假),預設值為“假”。 No
requireSSL 要求SSL連接配接,useSSL=true? 預設值為“假”。 No
allowUrlInLocalInfile 驅動程式在是“LOAD DATA LOCAL INFILE”語句中否允許URL? No
paranoid 采取措施,防止在錯誤資訊中洩漏敏感資訊,并可可能時清除儲存敏感資料的資料結構? 預設值為“假”。 No
Performance Extensions(性能擴充)
metadataCacheSize 如果将cacheResultSetMetaData設定為“真”,對cacheResultSetMetadata的查詢次數(預設值為50)。 No
prepStmtCacheSize 如果允許預處理語句緩沖功能,應緩沖處理多少條預處理語句? No
prepStmtCacheSqlLimit 如果允許預處理語句緩沖功能,驅動程式将執行解析緩沖處理的最大SQL是什麼? No
maintainTimeStats 驅動程式是否應維持各種内部定時器,以允許空閑時間計算,以及與伺服器的連接配接失敗時允許提供更詳細的錯誤消息? 将該屬性設定為“假”,對于每次查詢,至少能減少兩次對System.getCurrentTimeMillis()的調用。 No
blobSendChunkSize 組塊,當通過ServerPreparedStatements發送BLOB/CLOB時使用。 No
cacheCallableStmts 驅動程式是否應對CallableStatements的解析過程執行緩沖處理。 No
cachePrepStmts 驅動程式是否應對用戶端預處理語句的PreparedStatements的解析過程執行緩沖處理,是否應檢查伺服器端預處理語句的适用性以及伺服器端預處理語句本身? No
cacheResultSetMetadata 驅動程式是否應對用于Statements和PreparedStatements的ResultSetMetaData執行緩沖處理? 要求 JDK-1.4+,真/假,預設為“假”。 No
cacheServerConfiguration 驅動程式是否應根據每條URL對“HOW VARIABLES”和“SHOW COLLATION”的結果執行緩沖處理? No
dontTrackOpenResources JDBC規範要求驅動程式自動跟蹤和關閉資源,但是,如果你的應用程式不能明确調用作用在語句或結果集上的close(),可能會導緻記憶體洩漏。将該屬性設定為“真”,可放寬該限制,對于某些應用程式,會提供更高的記憶體效率。 No
dynamicCalendars 需要時,驅動程式是否應檢索預設月曆,或根據連接配接/會話對其進行緩沖處理? No
elideSetAutoCommits 如果使用MySQL-4.1或更高版本,當伺服器的狀态與Connection.setAutoCommit(boolean)請求的狀态不比對時,驅動程式是否僅應發出“set autocommit=n”查詢? No
holdResultsOpenOverStatementClose 驅動程式是否應按照JDBC規範的要求關閉Statement.close()上的結果集? No
locatorFetchBufferSize 如果将“emulateLocators”配置為“真”,當擷取關于getBinaryInputStream的BLOB資料時,緩沖區的大小應是多少? No
useFastIntParsing 是否使用内部“String->Integer”轉換子程式來避免建立過多對象? No
useLocalSessionState 驅動程式是否應引用autocommit的内部值,以及由Connection.setAutoCommit()和Connection.setTransactionIsolation()設定的事務隔離,而不是查詢資料庫? No
useNewIO 驅動程式是否應将java.nio.* interfaces用于網絡通信(真/假),預設為“假”。 No
useReadAheadInput 從伺服器讀取資料時,是否使用較新的、優化的非成組緩沖輸入流? No
Debuging/Profiling(調試/仿形)
logger 實作了com.mysql.jdbc.log.Log的類的名稱,com.mysql.jdbc.log.Log用于記錄消息(預設為“com.mysql.jdbc.log.StandardLogger”,它會将日志記錄到STDERR)。 No
profileSQL 跟蹤查詢以及它們對已配制記錄器的執行/擷取次數(真/假),預設為“假”。 No
reportMetricsIntervalMillis 如果允許“gatherPerfMetrics”,記錄它們的頻率是多少(機關毫秒)? No
maxQuerySizeToLog 調試或仿形時,控制将記錄的查詢的最大長度/大小。 No
packetDebugBufferSize 當“enablePacketDebug”為“真”時,需要保留的最大資訊包數目。 No
slowQueryThresholdMillis 如果允許“logSlowQueries”,在将查詢記錄為“慢”之前的查詢時間是多少(毫秒)? No
useUsageAdvisor 驅動程式是否應發出“使用情況”警告,就DBC和MySQL Connector/J的恰當和高效使用給出建議(真/假,預設為“假”)? No
autoGenerateTestcaseScript 驅動程式是否應将正在執行的SQL(包括伺服器端預處理語句)轉儲到STDERR? No
dumpQueriesOnException 驅動程式是否應将發送至伺服器的查詢内容轉儲到SQLExceptions中? No
enablePacketDebug 允許時,将保留“packetDebugBufferSize”資訊包的環形緩沖區,并當在驅動程式代碼的關鍵區域抛出異常時進行轉儲。 No
explainSlowQueries 如果允許了“logSlowQueries”,驅動程式是否應在伺服器上自動發出“EXPLAIN”,并以WARN級别将結果發送給配置好的日志? No
logSlowQueries 是否要記錄時間長于“slowQueryThresholdMillis”的查詢? No
traceProtocol 是否應記錄跟蹤級網絡協定? No
Miscellaneous(其他)
useUnicode 處理字元串時,驅動程式是否應使用Unicode字元編碼? 僅應在驅動程式無法确定字元集映射,或你正在強制驅動程式使用MySQL不是固有支援的字元集時(如UTF-8)才應使用。真/假,預設為“真”。 No
characterEncoding 如果“useUnicode”被設定為“真”,處理字元串時,驅動程式應使用什麼字元編碼? 預設為“autodetect”。 No
characterSetResults 字元集,用于通知伺服器以何種字元集傳回結果。 No
connectionCollation 如果設定了它,将通知伺服器通過“set collation_connection”使用該校對。 No
sessionVariables 以逗号隔開的“名稱/值”對清單,當驅動程式建立了連接配接後,以“SET SESSION ...”的方式将其發送給伺服器。 No
allowNanAndInf 驅動程式是否應在PreparedStatement.setDouble()中允許NaN或+/- INF值? No
autoDeserialize 驅動程式是否應自動檢測并串并轉換儲存在BLOB字段中的對象? No
capitalizeTypeNames 是否将DatabaseMetaData中的類型名轉換為大寫? 通常僅在使用WebObjects時有用,真/假。預設為“假”。 No
clobberStreamingResults 這會使“流式”結果集被自動關閉,如果在所有資料尚未從伺服器中讀取完之前,執行了另一查詢,正在從伺服器流出的任何未完成資料均将丢失。 No
continueBatchOnError 如果一條語句失敗,驅動程式是否應繼續處理批指令? JDBC規範允許任何一種方式(預設為“真”)。 No
createDatabaseIfNotExist 如果不存在,建立URL中給定的資料庫。假定使用者具有建立資料庫的權限。 No
emptyStringsConvertToZero 驅動程式是否應允許從空字元串字段到數值“0”的轉換? No
emulateLocators N/A No
emulateUnsupportedPstmts 驅動程式是否應檢測不被伺服器支援的預處理語句,并用用戶端模拟版替換它們? No
ignoreNonTxTables 是否忽略關于回退的非事務表? 預設值為“假”。 No
jdbcCompliantTruncation 連接配接到支援告警的伺服器時(MySQL 4.1.0和更高版本),當按照JDBC的要求截短資料時,驅動程式是否應抛出java.sql.DataTruncation異常? No
maxRows 傳回的最大行數(0,預設值表示傳回所有行)。 No
noDatetimeStringSync 不保證ResultSet.getDatetimeType().toString().equals(ResultSet.getString()。 No
nullCatalogMeansCurrent 當DatabaseMetadataMethods請求“目錄”參數時,值“Null”是否意味着使用目前目錄? 它不相容JDBC,但符合驅動程式早期版本的傳統行為。 No
nullNamePatternMatchesAll 接受*pattern參數的DatabaseMetaData方法是否應将null按對待“%”的相同方式處理(不相容JDBC,但驅動程式的早期版本能接受與規範的這類偏離)。 No
pedantic 嚴格遵守JDBC規範。 No
relaxAutoCommit 如果驅動程式所連接配接的MySQL伺服器的版本不支援事務,仍允許調用commit()、rollback()和setAutoCommit()?真/假,預設為“假”。 No
retainStatementAfterResultSetClose 調用ResultSet.close()後,驅動程式是否應将語句引用儲存在結果集中? 在JDBC-4.0後,與JDBC不相容。 No
rollbackOnPooledClose 當連接配接池中的邏輯連接配接關閉時,驅動程式是否應發出rollback()? No
runningCTS13 允許在Sun與JDBC相容的testsuite 1.3版中處理缺陷。 No
serverTimezone 覆寫時區的檢測/映射。當伺服器的時區為映射到Java時區時使用。 No
strictFloatingPoint 僅在相容性測試的早期版本中使用。 No
strictUpdates 驅動程式是否應對可更新結果集進行嚴格檢查(選擇所有的主鍵)?真/假,預設為“真”。 No
tinyInt1isBit 驅動程式是否應将資料類型TINYINT(1)當作BIT類型對待?建立表時,伺服器會執行BIT -> TINYINT(1)操作。 No
transformedBitIsBoolean 如果驅動程式将TINYINT(1)轉換為不同的類型,為了與MySQL-5.0相容,驅動程式是否應使用BOOLEAN取代BIT?這是因為MySQL-5.0具有BIT類型。 No
ultraDevHack

由于UltraDev已損壞,并為所有語句發出了prepareCall(),需要時,是否要為prepareCall()建立PreparedStatements?

真/假,預設值為“假”。

No
useHostsInPrivileges 在DatabaseMetaData.getColumn/TablePrivileges()中為使用者添加“@hostname”。真/假,預設為“真”。 No
useOldUTF8Behavior 與4.0和更早版本的伺服器進行通信時,使用UTF-8。 No
useOnlyServerErrorMessages 對伺服器傳回的錯誤消息,不事先設定“标準的”SQLState錯誤消息。 No
useServerPrepStmts 如果伺服器支援,是否使用伺服器端預處理語句? 預設值為“真”。 No
useSqlStateCodes 使用SQL标準狀态碼取代“傳統的”X/Open/SQL狀态碼,真/假,預設為“真”。 No
useStreamLengthsInPrepStmts 是否采用PreparedStatement/ResultSet.setXXXStream()方法調用中的流長度參數?真/假,預設為“真”。 No
useTimezone 是否在用戶端和伺服器時區間轉換時間/日期類型(真/假,預設為“假”)? No
useUnbufferedInput 不使用BufferedInputStream來從伺服器讀取資料。 No
yearIsDateType JDBC驅動程式是否應将MySQL類型“YEAR”當作java.sql.Date或SHORT對待? No
zeroDateTimeBehavior 當驅動程式遇到全由0組成的DATETIME值時,應出現什麼?MySQL使用它來表示無效日期。有效值是“exception”、“round”和“convertToNull”。 No

這些連接配接屬性可能會随着MySQL官方實作版本的更新有所變動,我查到的隻是它的5.0版,如果想得到最新的資料,最好是去MySQL網站檢視,

繼續閱讀