文档首页
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()' 设置的最后一个值,或者在建立连接时从服务器读取的值。请注意,"useLocalSessionState=true" 将强制与 "alwaysSendSetIsolation=false" 相同的行为,无论 "alwaysSendSetIsolation" 如何设置。

    默认值 true
    自版本 3.1.7
  • maintainTimeStats

    驱动程序是否应该维护各种内部计时器以启用空闲时间计算,以及在连接到服务器失败时提供更详细的错误消息?将此属性设置为 false 将移除每个查询至少两次调用 'System.getCurrentTimeMillis()'。

    默认值 true
    自版本 3.1.9
  • useCursorFetch

    驱动程序是否应该使用基于游标的获取来检索行?如果设置为 "true" 并且 'defaultFetchSize' 设置为大于零的值或在语句上调用 'setFetchSize()' 设置大于零的值,那么将使用基于游标的结果集。请注意,在这种情况下,'useServerPrepStmts' 将自动设置为 "true",因为游标功能仅适用于服务器端预处理语句。

    默认值 false
    自版本 5.0.0
  • cacheCallableStmts

    驱动程序是否应该缓存可调用语句的解析阶段?

    默认值 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

    驱动程序是否应该使用多查询(无论 'allowMultiQueries' 的设置如何),以及在调用 'executeBatch()' 时将 INSERT 和 REPLACE 查询的预处理语句重写为多值子句语句?

    请注意,当使用普通语句且未对提供的输入进行适当清理时,这可能会导致 SQL 注入。另外请注意,对于预处理语句,如果在使用“PreparedStatement.set*Stream()”时未指定流长度,驱动程序将无法确定每批最佳参数数量,并可能返回错误,提示结果数据包太大。

    对于仅重写的语句,“Statement.getGeneratedKeys()”仅在整个批次由 INSERT 或 REPLACE 语句组成时有效。

    请注意,当将“rewriteBatchedStatements=true”与“INSERT ... ON DUPLICATE KEY UPDATE”一起用于重写语句时,服务器仅返回所有受影响(或找到)行的一个值,并且无法将其正确映射到初始语句;在这种情况下,如果总计为零,驱动程序会为每个批次语句返回“0”作为结果,如果总计大于零,则返回“Statement.SUCCESS_NO_INFO”。

    默认值 false
    自版本 3.1.13
  • useReadAheadInput

    使用优化的非阻塞缓冲输入流从服务器读取数据?

    默认值 true
    自版本 3.1.5