文件首頁
MySQL Connector/J 開發人員指南
相關文件 下載本手冊
PDF (美式信紙) - 1.2Mb
PDF (A4) - 1.2Mb


6.3.13 效能擴充

  • callableStmtCacheSize

    如果啟用 'cacheCallableStmts',應該快取多少可呼叫的陳述式?

    預設值 100
    自版本 3.1.2
  • metadataCacheSize

    如果 'cacheResultSetMetaData' 設定為 "true",要快取多少查詢的 'ResultSetMetadata'。

    預設值 50
    自版本 3.1.1
  • useLocalSessionState

    驅動程式是否應該參考 'Connection.setAutoCommit()' 和 'Connection.setTransactionIsolation()' 設定的自動認可和交易隔離的內部值,以及通訊協定維護的交易狀態,而不是查詢資料庫或盲目傳送命令到資料庫來執行 'commit()' 或 'rollback()' 方法呼叫?

    預設值 false
    自版本 3.1.7
  • useLocalTransactionState

    驅動程式是否應該使用 MySQL 通訊協定提供的交易中狀態來判斷是否應該將 'commit()' 或 'rollback()' 實際傳送到資料庫?

    預設值 false
    自版本 5.1.7
  • prepStmtCacheSize

    如果啟用預先準備的陳述式快取,應該快取多少預先準備的陳述式?

    預設值 25
    自版本 3.0.10
  • prepStmtCacheSqlLimit

    如果啟用預先準備的陳述式快取,驅動程式將快取語法分析的最大 SQL 是多少?

    預設值 256
    自版本 3.0.10
  • queryInfoCacheFactory

    實作 'com.mysql.cj.CacheAdapterFactory' 的類別名稱,將用於建立快取,以用於預先準備的陳述式的語法分析表示法。在 8.0.29 版本之前,此屬性名為 'parseInfoCacheFactory',它仍然是別名。

    預設值 com.mysql.cj.PerConnectionLRUFactory
    自版本 5.1.1
  • serverConfigCacheFactory

    實作 'com.mysql.cj.CacheAdapterFactory' 的類別名稱,將用於建立 MySQL 伺服器組態值的快取。

    預設值 com.mysql.cj.util.PerVmServerConfigCacheFactory
    自版本 5.1.1
  • alwaysSendSetIsolation

    當呼叫 'Connection.setTransactionIsolation()' 時,驅動程式是否應該總是與資料庫通訊?如果設定為 "false",驅動程式只會在要求的交易隔離與較新的值 (透過 'Connection.setTransactionIsolation()' 設定的最後一個值,或在建立連線時從伺服器讀取的值) 不同時,才會與資料庫通訊。請注意,無論 'alwaysSendSetIsolation' 如何設定,"useLocalSessionState=true" 都會強制執行與 "alwaysSendSetIsolation=false" 相同的行為。

    預設值 true
    自版本 3.1.7
  • maintainTimeStats

    驅動程式是否應該維護各種內部計時器,以在連線到伺服器失敗時啟用閒置時間計算以及更詳細的錯誤訊息?將此屬性設定為 false 會移除每個查詢至少兩次呼叫 'System.getCurrentTimeMillis()'。

    預設值 true
    自版本 3.1.9
  • useCursorFetch

    驅動程式是否應該使用以游標為基礎的擷取來擷取資料列?如果設定為 "true" 且 'defaultFetchSize' 設定為大於零的值,或在陳述式上呼叫 'setFetchSize()' 並使用大於零的值,則會使用以游標為基礎的結果集。請注意,在這種情況下,'useServerPrepStmts' 會自動設定為 "true",因為游標功能僅適用於伺服器端預先準備的陳述式。

    預設值 false
    自版本 5.0.0
  • cacheCallableStmts

    驅動程式是否應該快取 CallableStatements 的語法分析階段?

    預設值 false
    自版本 3.1.2
  • cachePrepStmts

    驅動程式是否應該快取用戶端預先準備的陳述式、伺服器端預先準備的陳述式適用性的「檢查」以及伺服器端預先準備的陳述式本身的語法分析階段?

    預設值 false
    自版本 3.0.10
  • cacheResultSetMetadata

    驅動程式是否應該快取陳述式和預先準備的陳述式的 'ResultSetMetaData'?

    預設值 false
    自版本 3.1.1
  • cacheServerConfiguration

    驅動程式是否應該快取每個 URL 的 "SHOW VARIABLES" 和 "SHOW COLLATION" 的結果?

    預設值 false
    自版本 3.1.5
  • defaultFetchSize

    驅動程式會在所有新建立的陳述式上使用此值呼叫 'setFetchSize(n)'。

    預設值 0
    自版本 3.1.9
  • dontCheckOnDuplicateKeyUpdateInSQL

    停止檢查每個 INSERT 陳述式是否包含 "ON DUPLICATE KEY UPDATE" 子句。作為副作用,取得陳述式產生的金鑰資訊將會傳回清單,而正常情況下不會。另請注意,在這種情況下,傳回的產生金鑰清單可能不正確。如果同時設定 "rewriteBatchedStatements=true",則此屬性的效果會被取消。

    預設值 false
    自版本 5.1.32
  • elideSetAutoCommits

    當伺服器的狀態與 'Connection.setAutoCommit(boolean)' 要求的狀態不符時,驅動程式是否應該只發出 'set autocommit=n' 查詢?

    預設值 false
    自版本 3.1.3
  • enableEscapeProcessing

    設定 Statement 物件的預設跳脫處理行為。方法 'Statement.setEscapeProcessing()' 可用於指定個別陳述式物件的跳脫處理行為。預先準備的陳述式中的預設跳脫處理行為必須使用屬性 'processEscapeCodesForPrepStmts' 定義。

    預設值 true
    自版本 6.0.1
  • enableQueryTimeouts

    啟用時,透過 'Statement.setQueryTimeout()' 設定的查詢逾時會使用共享的 'java.util.Timer' 實例進行排程。即使查詢在逾時前完成處理,'TimerTask' 仍會為給定的逾時使用記憶體,這些記憶體直到逾時時間到期(如果未被驅動程式取消)才會被回收。高負載環境可能需要考慮停用此功能。

    預設值 true
    自版本 5.0.6
  • largeRowSizeThreshold

    JDBC 驅動程式應將多大的結果集列視為大型,並因此使用更節省記憶體的方式在內部表示該列?

    預設值 2048
    自版本 5.1.1
  • readOnlyPropagatesToServer

    當呼叫 'Connection.setReadOnly()' 時,驅動程式是否應發出適當的語句,以隱式地在伺服器端設定交易存取模式?將此屬性設定為 "true" 可啟用 InnoDB 唯讀潛在的最佳化,但也需要額外的往返來設定正確的交易狀態。即使此屬性設定為 "false",驅動程式也會盡力防止執行會變更資料庫狀態的查詢。

    預設值 true
    自版本 5.1.35
  • rewriteBatchedStatements

    當呼叫 'executeBatch()' 時,無論 'allowMultiQueries' 的設定為何,驅動程式是否應使用多重查詢,以及將 INSERT 和 REPLACE 查詢的預處理語句改寫為多值子句語句?

    請注意,當使用一般語句且提供的輸入未正確清理時,這可能會允許 SQL 注入。另請注意,對於預處理語句,如果在使用 'PreparedStatement.set*Stream()' 時未指定串流長度,驅動程式將無法確定每個批次的最佳參數數量,並可能傳回錯誤,指出結果封包太大。

    僅當整個批次由 INSERT 或 REPLACE 語句組成時,針對改寫的語句,'Statement.getGeneratedKeys()' 才會運作。

    請注意,當使用 "rewriteBatchedStatements=true" 與 "INSERT ... ON DUPLICATE KEY UPDATE" 進行改寫的語句時,伺服器僅針對批次中所有受影響(或找到)的列傳回一個值,並且無法將其正確地對應到初始語句;在這種情況下,如果總計數為零,則驅動程式會為每個批次語句傳回 "0" 作為結果,如果總計數大於零,則傳回 'Statement.SUCCESS_NO_INFO'。

    預設值 false
    自版本 3.1.13
  • useReadAheadInput

    在從伺服器讀取時,是否使用最佳化的非阻塞緩衝輸入流?

    預設值 true
    自版本 3.1.5