这里有话说,如果文件内容比较多,会分包处理。但这里是多multi_statement。
-
COM_QUERY类型,,命令为:COMMIT; 或 rollback;
-
COM_QUERY类型,,命令为:SET AUTOCOMMIT=1;
1、SET命令执行
SET 命令执行,主要是与 mycat 前端连接打交道,也就是 mysql 客户端—》mycat 前端连接,设置前端连接相应的属性,然后返回设置成功(OK数据包)即可。
2、COM_QUERY multi_statment insert 语句的执行流程
首先进行SQL语句解析,将多insert 语句 转换成单条语句,计算路由,得出在哪些分片上,然后将语句在相应分片上执行,,这个步骤有一个重要的操作,会在本次连接的NonBlockingSession中记录在哪些分片上执行过语句,方便对commit语句的处理。路由解析在这里暂无深入分析,请关注我后续博文《路由解析篇
3、COMMIT;命令执行
该命令的处理,就是根据第2步在哪些分片节点上执行了语句,就在相应分片上执行commit命令,达到提交事务的目的。
这里简单阐述一下关键所在,commit语句没有包含路由信息,那mycat是如何将commit转发到合适datanode上去执行的呢?mycat是这样处理这个问题的,每一个前端连接(Serve