Mycat之日志分析跨分片事务以及存储过程的执行过程
1 针对成功事务:
过程说明:
1.初始化连接,路由到各个分片
2.开启非阻塞执行更新,然后执行时候每个节点执行2次
3.执行提交,各节点返回commit
4.释放连接,先释放datasource然后才说非阻塞连接
执行代码*
#开启事务更新(全表更新)
mysql> select * from travelrecord;
+----------+-----------+------------+------+------+
| id | user_id | traveldate | fee | days |
+----------+-----------+------------+------+------+
| 1000 | chinesern | 2017-10-11 | 100 | 10 |
| 11000000 | chinesern | 2017-10-11 | 100 | 10 |
| 5100000 | chinesern | 2017-10-11 | 100 | 10 |
+----------+-----------+------------+------+------+
3 rows in set (0.03 sec)
mysql> begin ;
Query OK, 0 rows affected (0.01 sec)
mysql> update travelrecord set user_id='fish';
Query OK, 3 rows affected (0.11 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> commit;
Query OK, 0 rows affected (0.03 sec)
分析mycat日志





2 针对失败事务:
情景描述:
1.一个节点开启事务SQL执行,不提交
2. mycat 开启一个事务模拟阻塞,超时后,冲突 手动回滚,并查看mycat日志
rollback过程:
1.获取连接
2.各个节点执行回滚,释放非阻塞连接,最后物理连接。
执行代码*
#在db1执行事务不提交.
[root@localhost bin]# mysql -h 192.168.2.130 -P3306 -u root -proot123
mysql> use db1;
mysql> begin;
mysql>delete from travelrecord where id =1000;
#在mycat里面执行更新,模拟失败
[root@localhost conf]# mysql -h 192.168.2.130 -P8066 -utest -ptest
mysql> begin;
mysql> update travelrecord set user_id='fail';
ERROR 1105 (HY000): Lock wait timeout exceeded; try restarting transaction
mysql> rollback;
分析mycat日志







3 创建存储过程
#MYCAT上执行报错
mysql> DELIMITER $$
mysql> CREATE PROCEDURE `proc_count`()
-> BEGIN
-> select count(*) from travelrecord;
-> END$$
ERROR 1064 (HY000): op table not in schema----PROCEDURE
#在各节点上创建存储
mysql> use db1
mysql> DELIMITER $$
mysql> create procedure proc_select() begin declare i int; select count(*) into i from travelrecord;select i;end$
mysql> use db2
mysql> create procedure proc_select() begin declare i int; select count(*) into i from travelrecord;select i;end$
mysql> use db3
mysql> create procedure proc_select() begin declare i int; select count(*) into i from travelrecord;select i;end$
4 MYCAT上调用pror_select ,路由到特定节点上。**
查询语句
mysql> /*!mycat:sql=select * from travelrecord where ID=1000*/ call proc_select();
+------+
| i |
+------+
| 1 |
+------+
1 row in set (0.03 sec)
分析mycat日志

5 MYCAT上调用proc_select 路由到所有节点
查询语句
mysql> /*!mycat:sql=select * from travelrecord where ID=1000*/ call proc_select();
+------+
| i |
+------+
| 1 |
+------+
1 row in set (0.03 sec)
分析MYCAT日志,可以看到 路由到了三个节点上,但是没有merge,而是分别查询出来了!

Mycat之日志分析跨分片事务以及存储过程的执行过程的更多相关文章
- [转]数据库中间件 MyCAT源码分析——跨库两表Join
1. 概述 2. 主流程 3. ShareJoin 3.1 JoinParser 3.2 ShareJoin.processSQL(...) 3.3 BatchSQLJob 3.4 ShareDBJo ...
- Mycat之日志分析 select * from travelrecord order by id limit 100000,100 的执行过程
解释:mycat在执行分页排序的时候,分成2步走.如果M很大,会改写成 limit 0,m+n, 然后在每个MYSQL分片上排序后还需要在mycat汇总输出,所以会很慢.下面是详细执行计划以及日志输出 ...
- 源码分析之struts1自定义方法的使用与执行过程
最近有人问我,你做项目中用户的一个请求是怎么与struts1交互的,我说请求的url中包含了action的名字和方法名,这样就可以找到相应方法,执行并返回给用户了. 他又问,那struts1中有什么方 ...
- Mycat跨分片Join
1 前言 Mycat目前版本支持跨分片的join,主要实现的方式有四种. 全局表 ER分片 HBT(参考MyCAT人工智能解决跨分片SQL.docx) ShareJoin ShareJoin在开发版中 ...
- MyBatis 源码分析 - SQL 的执行过程
* 本文速览 本篇文章较为详细的介绍了 MyBatis 执行 SQL 的过程.该过程本身比较复杂,牵涉到的技术点比较多.包括但不限于 Mapper 接口代理类的生成.接口方法的解析.SQL 语句的解析 ...
- MyCAT日志分析
MyCAT日志对于了解MyCAT的运行信息不可获取,譬如MyCAT是否采用读写分离,对于一个查询语句,MyCAT是怎样执行的,每个分片会分发到哪个节点上等等. 默认是info级别,通过log4j.xm ...
- Dubbo学习系列之十六(ELK海量日志分析框架)
外卖公司如何匹配骑手和订单?淘宝如何进行商品推荐?或者读者兴趣匹配?还有海量数据存储搜索.实时日志分析.应用程序监控等场景,Elasticsearch或许可以提供一些思路,作为业界最具影响力的海量搜索 ...
- 分库分表后跨分片查询与Elastic Search
携程酒店订单Elastic Search实战:http://www.lvesu.com/blog/main/cms-610.html 为什么分库分表后不建议跨分片查询:https://www.jian ...
- ELK+Kafka集群日志分析系统
ELK+Kafka集群分析系统部署 因为是自己本地写好的word文档复制进来的.格式有些出入还望体谅.如有错误请回复.谢谢! 一. 系统介绍 2 二. 版本说明 3 三. 服务部署 3 1) JDK部 ...
随机推荐
- Oracle归档模式与非归档模式设置
(转自:http://www.cnblogs.com/spatial/archive/2009/08/01/1536429.html) Oracle的日志归档模式可以有效的防止instance和dis ...
- Ajax传输对象,集合或数组。
传输单个对象时: servlet页面 package com.itnba.maya.a; import java.io.IOException; import javax.servlet.Servle ...
- Activity的生命周期,BACK键和HOME对生命周期的影响
下面这张图详细的描述了Activity的整个生命周期: 直接上代码,注意看注释: [java] view plaincopy public class HelloActivity extends Ac ...
- I.MX6 support eMMC 5.0
/***************************************************************************** * I.MX6 support eMMC ...
- (三十七)js改变this指向的方法
最近又遇到了JacvaScript中的call()方法和apply()方法,而在某些时候这两个方法还确实是十分重要的,那么就让我总结这两个方法的使用和区别吧. 1.改变函数内部的this指向的三种方法 ...
- YARN学习笔记——Overview and Architecture
YARN的简介 什么是YARN MRv1的架构和缺陷 经典MapReduce的局限性 解决可伸缩性问题 YARN的架构 一个可运行任何分布式应用程序的集群 YARN中的应用程序提交 YARN的其他特性 ...
- 讲解JSP自定义标签
一.基本概念 1.标签(Tag) 标签是一种XML元素,通过标签可以使JSP网页变得简洁并且易于维护,还可以方便地实现同一个JSP文件支持多种语言版本.由于标签是XML元素,所以它的名称和属性都是大小 ...
- (转)setTextColor()的参数设置方式
setTextColor()的参数设置方式 分类: Android界面研究2011-12-09 23:27 11160人阅读 评论(2) 收藏 举报 查了下资料发现setTextColor()的参数应 ...
- mysql事务隔离级别测试
隔离性mysql提供了4种不同的隔离级别以支持多版本并发控制(MVCC)较低级别的隔离通常可以执行更高的并发,系统的开销也更低read uncommited(未提交读)read commited(提交 ...
- java代码实现从键盘输入编号,输出价格,并且不再编号内的,无效输入!!!!
总结:请给我更好的建议 package com.badu; import java.util.Scanner; //从键盘输入次数,通过输入的编号,输出对应的的商品价格: public class t ...