mysql连接一些常规配置
rewriteBatchedStatements=true:当设置为true时,JDBC驱动会尝试重新编写SQL语句,以便更有效地执行批量插入操作,从而提高性能。在默认情况下,MySQL JDBC驱动会忽略executeBatch()方法,将批量插入操作拆分成单条插入语句执行,这会导致性能较低。通过该设置,驱动会将多个INSERT、UPDATE、DELETE等语句整合成一个大语句提交,减少与数据库的交互次数,从而减少网络时间消耗。
useSSL=false:不使用证书或者令牌进行连接数据库,而是通过账号密码进行连接。mysq5.7及以下版本该配置默认为false,mysql5.7以上版本需要手动配置。该配置通常设置为false。
useUnicode=true:是否开启Unicode编码,Unicode编码是目前世界上最为全面流行的编码,该配置通常和characterEncoding=utf-8一起配合使用,当然,Unicode编码不止utf-8,还有utf-16等,但是通常情况下utf-8已经足够使用。
characterEncoding=utf-8:使用utf-8编码格式,通常和useUnicode=true配合使用。
zeroDateTimeBehavior=convertToNull:zeroDateTimeBehavior是一个对错误无效时间的处理配置。该配置默认为erorr,即碰到错误无效时间时将抛出有异常,在通常业务场景下,该操作是不可取的。当配置为convertToNull时,将不抛出异常而是转换为null输入输出,继续当前的查询或其他操作。当配置为round,将会取最近的日期或者时间代替,这在通常业务场景下,也是不可取的。
transformedBitIsBoolean=true:在查询时,将数据库tinyint(1)数据类型转换为布尔,可以解决部分数据类型不匹配的问题,但是也可能出现数据不一致影响数据准确和一致性。以我目前的业务了解和对接情况来说,通常我们会避免使用tinyint(1)来对接代码的布尔值,而是直接使用0和1,如mybatis的逻辑删除is_deleted字段就是直接使用0和1。
tinyInt1isBit=false:在数据库操作中,如果不对数据库进行配置,那么tinyint的字段类型,如insert在存入数据0或者1到数据库时,将会被转换为布尔类型。因为mysql数据库本身并没有布尔值类型,所以通常以tinyint(1)为布尔值类型。
allowMultiQueries=true:是否开启批量执行sql语句操作,开启后在批量执行sql语句时,能极大提升性能,该配置可以大量减少与数据库的连接次数,降低网络时间消耗。如批量插入这种情况下,即使不开启rewriteBatchedStatements=true配置,也能大量减少插入时间。当然通常可以两个配置一起开以优化数据库操作性能。
serverTimezone=GMT%2B8:时区配置,表示配置为加8个小时,即东八区。
allowPublicKeyRetrieval=true:用于获取服务器发放的公钥,在mysql8.0及以上版本中,如果使用SHA-256密码加密方式,必须将此参数设置为true,否则会导致报错Public Key Retrieval is not allowed。
如果还有其他常用配置,后续将继续补充,或者大家告诉我一下,感谢!