今天,在多个java进程同时访问同一数据库中的同一张表进行update操作时,出现了一条update语句要执行30s左右的时间才能完成的情况,经过排查,发现是程序中的update语句中的where条件中的字段没有建立索引,导致了全表锁,建立索引之后变为行级锁(通过explain可以看出),速度就快了很多很多......
update语句如图:
其中file_name与running_agent_id之前并没有建立索引......
好,开始建立索引:
附:
show index from table_name:查看表中的所有索引
drop INDEX index_name on table_name:删除表中名为index_name的索引