程序里sendStringParametersAsUnicode=true的配置导致sql server cpu使用率高问题处理
一 问题描述
近期生产环境几台sql server从库cpu使用率总是打满,发现抓的带变量值的慢sql,手动代入变量值执行并不慢,秒级返回,不知道问题出在哪里。
二 问题排查
用扩展事件或者sql profiler抓慢sql,抓到了变量值,如下:
执行该sql,需要3秒。
这些字段是varchar类型的,但是这里看到这几个变量都是nvarchar类型的,看来是自动发生了转换。sendStringParametersAsUnicode=true会将字段转为nvarchar。
将nvarchar类型转为varchar类型,查询时长为0秒:
三 解决办法
让开发同事修改代码或nacos配置,将sendStringParametersAsUnicode值改为false