博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MyCat_全局表及其死锁问题
阅读量:5925 次
发布时间:2019-06-19

本文共 2177 字,大约阅读时间需要 7 分钟。

hot3.png

全局表

全局表说明

  • 全局表配置使用type='global'
  • 全局表数据增加或者修改时,节点之间保持数据一致
  • 全局表只适合修改不频繁的表,例如字典表

全局表死锁

为了保持数据的一致性,当全局表更新数据时会通过锁机制来保证数据统一。

当时这也导致了并发更新的时候死锁的发生,全局表需要慎用。
以下是测试代码:

z_dict表配置的为全局表

两个线程并发更新一条记录
基本上每次都会造成锁超时的问题

public static void testThreadUpdate(DataSourceFactory ds) throws SQLException {        Connection con1 = ds.getConnection();        Connection con2 = ds.getConnection();        UpdateThread thread1 = new UpdateThread(con1, "update z_dict set name=? where id=?", new ArrayList
() { private static final long serialVersionUID = 1L; { add("Q1"); add("1"); } }); UpdateThread thread2 = new UpdateThread(con2, "update z_dict set name=? where id=?", new ArrayList
() { private static final long serialVersionUID = 1L; { add("Q2"); add("1"); } }); thread1.start(); thread2.start(); try { Thread.sleep(60000); } catch (InterruptedException e) { e.printStackTrace(); } }
package com.am.mycatclient;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.SQLException;import java.util.List;public class UpdateThread extends Thread {    private Connection con;    private List
values; private PreparedStatement ps; public UpdateThread(Connection con, String updateSql, List
values) { super(); this.con = con; this.values = values; try { con.setAutoCommit(false); ps = con.prepareStatement(updateSql); } catch (SQLException e) { e.printStackTrace(); } } @Override public void run() { try { for (int i = 1; i <= values.size(); i++) { ps.setString(i, values.get(i - 1)); } int executeUpdate = ps.executeUpdate(); System.out.println("=="+executeUpdate); con.commit(); ps.close(); con.close(); } catch (Exception e) { e.printStackTrace(); } }}

转载于:https://my.oschina.net/sandant/blog/698886

你可能感兴趣的文章
nodejs即时聊天
查看>>
Spring Security入门(3-4)Spring Security 异常处理、异常传递和异常获取
查看>>
Android学习笔记(三)
查看>>
13.ThreadPoolExecutor线程池之submit方法
查看>>
10.29 工作笔记 ndk编译C++,提示找不到头文件(ndk-build error: string: No such file or directory)...
查看>>
Tushare数据的绘图操作
查看>>
JsonRequestBehavior.AllowGet 方便浏览器调试
查看>>
一分钟了解Android横竖屏 mdpi hdpi xhdpi xxhdpi xxxhdpi
查看>>
JavaFX 一 出生新手村(阅读小规则)
查看>>
Mac Ubuntu ----端口被占用
查看>>
运营推广的一些方法
查看>>
CentOS下MySQL忘记root密码解决方法【转载】
查看>>
Highcharts数据表示(3)
查看>>
[Windows]_[0基础]_[Release程序的崩溃报告minidump解决方式]
查看>>
半年总结——欲戴王冠,必承其重
查看>>
POJ 1985 Cow Marathon(树的直径)
查看>>
LeetCode 3_Longest Substring Without Repeating Characters
查看>>
leetcode-Word Ladder II
查看>>
关于Unity中的本地存储
查看>>
illegal multibyte sequence python3
查看>>