动态平局分配节点 Mysql 存储过程

替换 your_table
sql:

BEGIN

# 节点分布情况(没下架的)
DROP VIEW
IF EXISTS `view_node_count`;

# 创建一个视图
CREATE ALGORITHM = UNDEFINED 
DEFINER = `root`@`localhost` 
SQL SECURITY DEFINER 
VIEW `view_node_count` AS ( 
        select
            count(0) as c_num, node 
        from 
            your_table
        where `status` <> 10 and `node` <> '33_2' and node <> '33_3' GROUP BY node
);

# count最多的那台机器的数量
set @max_count=                             
(
    select MAX(c_num)
    from view_node_count
);

# count最少的那台机器的数量
set @min_count=                             
(
    select MIN(c_num)
    from view_node_count
);

set @max_node = (select node from view_node_count where c_num = @max_count limit 1);

set @min_node = (select node from view_node_count where c_num = @min_count limit 1);

# 更新最大node的到最小的上
update your_table
set node = @min_node
where node = @max_node and status <> 10 LIMIT 1;

SELECT * from view_node_count; # 显示结果
END
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值