v6.0版本性能调优之JDBC连接参数疑问

  1. 此处的JDBC是特指java代码么

特指 Java 代码

  1. golang 语言开发的配置是否适用上述参数,如果不适用,应如何配置类似参数。

Golang 的 MySQL 驱动不支持自动缓存 prepared statement 对象,需要 go 程序代码自己实现,这里提供一个例子,大概需要客户端维护一个 二级 map,二级 key 分别是 连接 id 和 query 文本,value 是已经解析好的prepared statement对象

 func (s *bankState) refreshConn(ctx context.Context) error {
	conn, err := s.db.Conn(ctx)
	if err != nil {
		return err
	}
	s.conn = conn
	s.stmtCache = make(map[string]*sql.Stmt)
	return nil
}

func getBankState(ctx context.Context) *bankState {
	return ctx.Value(bankStateKey).(*bankState)
}

func (d *Driver) getAndCacheStmt(ctx context.Context, query string) (*sql.Stmt, error) {
	state := getBankState(ctx)

	if stmt, ok := state.stmtCache[query]; ok {
		return stmt, nil
	}
	stmt, err := state.conn.PrepareContext(ctx, query)
	if err != nil {
		return nil, err
	}
	state.stmtCache[query] = stmt
	return stmt, nil
}
  1. tidb 5.0版本是否有类似的jdbc参数推荐(除6.0版本新特性的参数)

JDBC 参数从v5.4.0 prepared-plan-cache GA 之后就推荐使用了

1 个赞