【问题详细描述】
如图update.sql.jpg所示,当使用update business_apply SET customerid= concat(customerid,substr(serialno,21)) where serialno like 'ylydgjj20190605%'进行更新,更新比较慢的原因是什么?
【解决方法】
1、查看该更新语句的访问计划,如图explain.png,该更新语句走的是索引扫描,所以可以排除走全表扫描导致更新慢;
2、设置sdb的coord节点的审计日志类型为:DQL|DML,执行该更新语句;通过coord节点的审计日志可知,该更新语句将where条件进行匹配,匹配完成后,再逐条向sdb发送update命令。该更新语句使用了模糊查询,总共匹配到是十万条记录,因此更新会慢。
【参考资料】
审计日志配置:
修改节点配置 auditmask,配置审计日志类型,方法如下:
db.updateConf( { "auditmask" : "DQL|DML" )
updateConf在线修改配置:http://doc.sequoiadb.com/cn/index-cat_id-1521424274-edition_id-302
数据库配置:http://doc.sequoiadb.com/cn/SequoiaDB-cat_id-1432190643-edition_id-302