上一篇文章我详解介绍了mysql中的查询语句是如何工作的,我相信你还记得,一条查询语句需要经过 连接器、分析器、优化器、执行器,最终才能到达存储引擎。
那么,更新语句是如何工作的呢?
我们来看一下下面这条语句
update T set money = money + 1 where ID = 1;
首先可以确认的是,查询语句的那一套流程,更新语句也是同样会走一遍。
执行更新语句首先通过连接器连接数据库。
然后清空这个表的所有缓存。
接下来分析器进行词法语法校验,来识别这个语句是update语句
现象:
阿里金融某业务的MySQL机器的内存每隔几天会增长,涨上去后,却不下来。累积后内存爆掉。
分析:
此业务是间隔的对MySQL有大访问,其它时间几乎无访问。排查发现,内存涨时,一般会有MySQL读非常大,主要是InnoDB_DATA_READS。
结合此时的特性,业务同学给出此时的主要场景:
1、14个线程并发;
2、写入数据流程:先查询再update;
select pid,value from tableName where i