作者:高鹏(网名八怪),《深入理解MySQL主从原理32讲》系列的作者。
系列链接:https://www.jianshu.com/nb/43148932
一、案例由来
最近看到有人在问如下:
其中的sending data是什么意思。隔离级别为RR,语句为insert..select。
二、关于sending data
以前就说过这个问题,实际上sending data可能包含如下:
Innodb 层数据的定位返回给MySQL 层
Innodb 层数据的查询返回给MySQL 层
Innodb 层数据的修改(如果是insert..select)
Innodb 层加锁以及等待
等待进入Innodb层(innodb_thread_concurrency参数)
MySQL 层发送数据给客户端
三、RR模式下对于insert..selcet 处于 sending data的原因总结
RR模式下insert..select的select表会上S行锁,如果这行处于X锁则会出现 sending data状态
insert..selcet中insert记录如果处于堵塞(唯一性检查)状态会处于 sending data状态
整个过程如果需要操作的数据量较大,处于sending data状态。
四、每行数据处理方式
929 T@4: | | | | | | THD::enter_stage: 'Sending data' /cdh/mysqldebug/