有一个历史库服务器,大约有20左右的数据库,14000左右的连接,50左右的并发,平日表现的挺好的,一日忽然间闹腾起来了,在一些表上加了索引,好转一些,但是仍然报警。
实际上,每天抓到的BAD TRACE 并不是很多,并且大部分查询条件都很简单,一些查询时间比较长的查询出现的次数也不多,这个事情纠结了几天,终于一日无法在忍受了,和同事一起查看,发现一个简单的查询竟然有阻塞。
这个查询的条件列是我认为表的主键列,怎么会有阻塞呢?查看表结构发现,这个表没有主键,悲剧啊。我一直认为这样的查询条件不会出现什么问题,但是问题出现在表上没主键。纠结。
也许这个问题出现了好久了,之前CPU 没有达到报警的阈值,所以也没去查原因,查原因的时候又先入为主的认为简易查询肯定没问题。也许MISSINGINDEX,以及数据库阻塞都可以给出答案,重要的是 要有发现问题的系统思想,要细心去发现。