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之日志分析跨分片事务以及存储过程的执行过程的更多相关文章

  1. [转]数据库中间件 MyCAT源码分析——跨库两表Join

    1. 概述 2. 主流程 3. ShareJoin 3.1 JoinParser 3.2 ShareJoin.processSQL(...) 3.3 BatchSQLJob 3.4 ShareDBJo ...

  2. Mycat之日志分析 select * from travelrecord order by id limit 100000,100 的执行过程

    解释:mycat在执行分页排序的时候,分成2步走.如果M很大,会改写成 limit 0,m+n, 然后在每个MYSQL分片上排序后还需要在mycat汇总输出,所以会很慢.下面是详细执行计划以及日志输出 ...

  3. 源码分析之struts1自定义方法的使用与执行过程

    最近有人问我,你做项目中用户的一个请求是怎么与struts1交互的,我说请求的url中包含了action的名字和方法名,这样就可以找到相应方法,执行并返回给用户了. 他又问,那struts1中有什么方 ...

  4. Mycat跨分片Join

    1 前言 Mycat目前版本支持跨分片的join,主要实现的方式有四种. 全局表 ER分片 HBT(参考MyCAT人工智能解决跨分片SQL.docx) ShareJoin ShareJoin在开发版中 ...

  5. MyBatis 源码分析 - SQL 的执行过程

    * 本文速览 本篇文章较为详细的介绍了 MyBatis 执行 SQL 的过程.该过程本身比较复杂,牵涉到的技术点比较多.包括但不限于 Mapper 接口代理类的生成.接口方法的解析.SQL 语句的解析 ...

  6. MyCAT日志分析

    MyCAT日志对于了解MyCAT的运行信息不可获取,譬如MyCAT是否采用读写分离,对于一个查询语句,MyCAT是怎样执行的,每个分片会分发到哪个节点上等等. 默认是info级别,通过log4j.xm ...

  7. Dubbo学习系列之十六(ELK海量日志分析框架)

    外卖公司如何匹配骑手和订单?淘宝如何进行商品推荐?或者读者兴趣匹配?还有海量数据存储搜索.实时日志分析.应用程序监控等场景,Elasticsearch或许可以提供一些思路,作为业界最具影响力的海量搜索 ...

  8. 分库分表后跨分片查询与Elastic Search

    携程酒店订单Elastic Search实战:http://www.lvesu.com/blog/main/cms-610.html 为什么分库分表后不建议跨分片查询:https://www.jian ...

  9. ELK+Kafka集群日志分析系统

    ELK+Kafka集群分析系统部署 因为是自己本地写好的word文档复制进来的.格式有些出入还望体谅.如有错误请回复.谢谢! 一. 系统介绍 2 二. 版本说明 3 三. 服务部署 3 1) JDK部 ...

随机推荐

  1. fastjson缺陷--map转换json时出现$ref的情况

    DisableCircularReferenceDetect来禁止循环引用检测: JSON.toJSONString(..., SerializerFeature.DisableCircularRef ...

  2. LeetCode OJ:4Sum(4数字之和)

    Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = tar ...

  3. php语法笔记

    1.  php中设置页面的编码方式: header(“content-type:text/html;charset=utf-8”); 2.  数据类型 布尔类型:Boolean/bool:true.f ...

  4. I.MX6 网卡能收不能发

    /******************************************************************** * I.MX6 网卡能收不能发 * 说明: * MAC控制器 ...

  5. Ubuntu server 安装samba

    安装Samba时,出现了一下问题: linux-image-generic***依赖出现问题,无法安装Samba. 使用apt-get update 更新,吓尿了,全部是忽略,源是系统自带的.改成其他 ...

  6. 在windows环境初步了解tuxedo

    最近换了一份工作,新公司使用tuxedo来简化应用的开发,而我参加工作这么多年,虽说略懂c++的开发,但是也没有用过tuxedo这种古老的东西.既然没有接触过,那就学学吧.先描述一下道路的曲折性吧. ...

  7. ARP表 MAC表 路由表

    ARP表是一个动态表,存储在计算机当中,目的是做一个ip地址与mac地址的对应.假设在同一子网段,计算机A与计算机B通信计算机A的ip地址192.168.0.1 MAC地址AA-AA-AA-AA-AA ...

  8. Spring源码学习之:ClassLoader学习(5)-自测

    [一]测试目的(ClassLoader的作用) 1:测试涉及三个jar包,nonbankcard-configure-0.0.1-SNAPSHOT.jar,nonbankcard-persist-0. ...

  9. ACM学习历程—51NOD 1685 第K大区间2(二分 && 树状数组 && 中位数)

    http://www.51nod.com/contest/problem.html#!problemId=1685 这是这次BSG白山极客挑战赛的E题. 这题可以二分答案t. 关键在于,对于一个t,如 ...

  10. python 无序模块,hashlib模块

    无序模块什么是无序模块,将字符串转化为十六进制的字符串类型,主要运用在网络编程中.1,json模块 1,用于网络传输,跨语言,可用的类型有 int str 列表-->元祖会变为列表 字典--&g ...