今天是我我刚到一个公司上班3个月,2个月的时候我转正了,我在两个月内把公司主要系统的性能压力降低了。
可是我更加困惑了。我发现服务器CPU的压力来源与数据库的拙劣设计,查询的性能低下。由于公司系统是一个历史遗留问题,
这我无能为力,但查询我可以改变吧,公司存储过程和查询语句统一用一种格式,存储过程的参数一般在10个以上,然后还给了默认值,
例如:
create proc test
(
@a1 int=-1,
@a2 nvarchar(50)='',
.......
)
在查询语句中,会发现全部都是:
select col1,col2......,coln from tb1 join tb2 on tb1.id=tb2.id join ......
where (@a1=-1 or tb1.id=@a1)
and (@a2='' or tb1.name in (select * from function_split(@a2,',')))
......
这样写的结果就是大多数查询都是使用并行查询,我通过限制并行查询度和阀值调整了,依然不够。
叫相关负责人改,也不理会。
当你知道系统问题在哪里,也知道怎么解决,但却无法下手的时候,真的很无奈,困惑。