mysql jdbc driver

贝嘉泽
2023-12-01

核心类:ConnectionImpl StatementImpl MysqlIO
Driver.connect建立了真实连接并mysql handshake(先获取了服务端信息,后user,password认证)
jdbc规范不要求,但mysql driver实现线程安全,每个连接都有一把锁
ConnectionPropertiesImpl里有各mysql jdbc url属性

prepareStatement
客户端开启,客户端每次拼接好sql,发给服务端,服务端不感知,和普通sql执行一样
服务端开启,创建prepareStatement时发送prepare语句进行编译,返回serverStatementId给驱动,后面驱动只需发送serverStatementId和参数进行执行
statementCache,客户端根据database和sql从缓存取,取出后clearParameters

服务端预编译:MySQL服务端是在4.1版本之后才开始支持预编译的,mysql驱动 5.0.5之前的版本默认支持预编译,之后版本需useServerPrepStmts开启
statementCache:cachePrepStmts开启

不开启服务端预编译,每次执行都是发一次完整sql给服务端,服务端编译+执行
开启服务端预编译,但不缓存,每次先发prepare(服务端编译),后发execute(服务端执行)
开启服务端预编译且缓存,statement的关闭没有真实关闭,后面能从缓存中取,第一次prepare+execute,后面execute

 类似资料:

相关阅读

相关文章

相关问答