mysql-分布式锁

分布式锁

当我们的微服务连接到一个数据库的时候,可以使用mysql的 select for update 来作为分布式锁使用。

pictureMapper.findLock();
select id from table_lock where id = 'lock' for update

由于我们查询的时候 默认会自动提交,即autoCommit为true。所以有2中方式可以解决。

方式1:

给当前的事务添加@Transactional注解

方式2:

设置提交方式为非自动提交,让我们手动来提交。

conn = XxlJobAdminConfig.getAdminConfig().getDataSource().getConnection();
                        connAutoCommit = conn.getAutoCommit();
                        conn.setAutoCommit(false);

                        preparedStatement = conn.prepareStatement(  "select * from xxl_job_lock where lock_name = 'schedule_lock' for update" );
                        preparedStatement.execute();


conn.commit();

你可能感兴趣的:(mysql,分布式事务,分布式,mysql,数据库)