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,而是分别查询出来了!

最新文章

  1. 《JavaScript高级程序设计》笔记整理
  2. PYTHON 链接 Oracle
  3. flask_关注者,联系人和好友
  4. nginx yii2环境配置
  5. quick lua 3.3常用方法和学习技巧之transition.lua
  6. CSS3之圆角
  7. ecshop常用语句
  8. C++ _access和_waccess的使用方法
  9. 动态调用WebService 通用方法Moss 中 传统开发中都可用。
  10. Esper系列(十)NamedWindow语法delete、Select+Delete、Update
  11. 获取所有组合算法、获取全排列算法(java)
  12. Spiral Matrix 解答
  13. opacity在IE6~8下无效果,解决的办法
  14. WebxFrameworkFilter 请求响应过程
  15. mysql变量使用总结(转)
  16. 震撼功能:逐浪CMS全面支持PWA移动生成意指未来
  17. DB2常用命令小结
  18. CentOS7.2重置root密码的处理方法
  19. NOIP2016提高组复赛C 愤怒的小鸟
  20. hibernate状态转换关系图【原】

热门文章

  1. 【2018年全国多校算法寒假训练营练习比赛(第四场)-D】小明的挖矿之旅
  2. bzoj3436
  3. 剑指offer--25.二叉树的镜像
  4. [置顶] Android Shape一些新玩法?
  5. div垂直水平居中的四种方法总结
  6. grep 常用正则匹配
  7. 用java网络编程中的TCP方式上传文本文件及出现的小问题
  8. Git学习资源收集汇总
  9. LOJ103 子串查找
  10. spring_JavaConfig