2024-10-30
问题:kettle往pgsql插入更新,数据非常慢,只有几条每秒,但是网速,磁盘,表的字段长度,索引,都是正常的。 原因:pgsql统计信息过时,并没有更新索引查询,执行ANALYZE table后正常 pln_act_his表执行删除插入更新数据非常慢的排查分析
我的排查记录大概如下,记录一下,下次遇到好直接找到问题
检查现有索引:SELECT * FROM pg_indexes WHERE tablename = 'pln_act_his'; 发现已经有相关字段的索引 CREATE INDEX add_index ON ods_mes.pln_act_his USING btree (vcl_id, plt_cd, shp, ln_cd, tp_cd)
查询删除插入更新的sql语句分析 EXPLAIN DELETE FROM ods_mes.pln_act_his WHERE vcl_id = 'JA023830026' AND plt_cd = 'J' AND shp = 'W' AND ln_cd = '1' AND tp_cd = '40'
发现返回的Seq Scan on pln_act_his,代表没有走索引,顺序查询
执行统计信息更新:ANALYZE ods_mes.pln_act_his;
然后再次尝试 EXPLAIN DELETE FROM ods_mes.pln_act_his WHERE vcl_id = 'JA023830026' AND plt_cd = 'J' AND shp = 'W' AND ln_cd = '1' AND tp_cd = '40'
发现返回Index Scan using add_index on pln_act_his 代表已经走了add_index索引 再次执行kettle脚本任务,发现数据拉取速度提升巨大
tips:Your personal homepage URL will be publicly linked, but your email address will not be publicly displayed; your IP address will be saved, but only your current city name will be publicly displayed.
comment