iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL NDB如何进行批量更新100万行数据
  • 379
分享到

MySQL NDB如何进行批量更新100万行数据

2024-04-02 19:04:59 379人浏览 薄情痞子
摘要

本篇文章为大家展示了Mysql NDB如何进行批量更新100万行数据,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。 生产NDB数据库中

本篇文章为大家展示了Mysql NDB如何进行批量更新100万行数据,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

生产NDB数据库中的一张800多万行的大表需要更新部分字段,为减少对数据库性能的影响,编写了一个存储过程来实现:
1. 导出这张表的主键字段,数据量有100多万条
select MSISDN from TEST where LastAccessTimeStamp=0
into outfile '/tmp/TEST_out.txt' fields terminated by ',' ;

2. 在其中一个sql节点,创建两张临时表
--创建第一张临时表,用于和生产数据库的源表主键进行关联,以更新部分字段
create table tmp_Subscribers_01(id int not null auto_increment primary key,MSISDN char(20)) engine=innodb;
--向第一张临时表导入之前的导出数据
load data infile '/tmp/Subscribers_out.txt' into table tmp_Subscribers_01 fields terminated by ',' (MSISDN);
--创建第二张临时表,用于记录数据更新的进度
create table tmp_Subscribers_02(id int, MSISDN char(20),cdate datetime) engine=innodb;

3. 编写数据更新的存储过程
drop procedure proc_Subscribers_update;
delimiter $$
create procedure proc_Subscribers_update(IN v_fetch_cnt INT, IN v_sleep_secs INT)
begin
DECLARE v_count INT;
DECLARE v_times INT DEFAULT 1;
DECLARE v_max_value INT;
 
  select ceil(count(MSISDN)/v_fetch_cnt) into v_count from tmp_Subscribers_01;
 
  WHILE v_times < v_count DO
    select ifnull(max(id),0) into v_max_value from tmp_Subscribers_02;
    if v_max_value < v_fetch_cnt * v_count then
      SET v_times = 1 + floor(v_max_value/v_fetch_cnt);
      update TEST s,tmp_Subscribers_01 t set s.LastAccessTimeStamp=1420066800
      where s.MSISDN=t.MSISDN and t.id > v_max_value and t.id <= v_fetch_cnt * v_times;
     
      insert into tmp_Subscribers_02 select id, MSISDN, now() from tmp_Subscribers_01 where id = v_fetch_cnt * v_times;
      select concat('The job',' has already updated ', v_fetch_cnt * v_times, ' rows..') as Info;
      select sleep(v_sleep_secs);
    end if;
    commit;
  END WHILE;
  select concat('The job',' is ','finished!') as Info;
  commit;
end$$
delimiter ;

--执行存储过程
--其中第一个传入参数为每次更新的行数,第二个参数为每次更新后的休眠时间
call proc_Subscribers_update(10000, 2);

上述内容就是mysql NDB如何进行批量更新100万行数据,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网数据库频道。

您可能感兴趣的文档:

--结束END--

本文标题: MySQL NDB如何进行批量更新100万行数据

本文链接: https://www.lsjlt.com/news/62091.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL NDB如何进行批量更新100万行数据
    本篇文章为大家展示了MySQL NDB如何进行批量更新100万行数据,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。 生产NDB数据库中...
    99+
    2024-04-02
  • mysql怎么批量更新千万数据
    批量更新千万条数据可以使用MySQL的UPDATE语句结合WHERE子句来实现。下面是一个示例: UPDATE 表名 SET...
    99+
    2023-10-24
    mysql
  • Mybatis中如何进行批量更新(updateBatch)
    目录背景描述逐条更新  sql批量更新背景描述 通常如果需要一次更新多条数据有两个方式: (1)在业务代码中循环遍历逐条更新。 (2)一次性更新所有数据(更准确的...
    99+
    2024-04-02
  • MySQL怎么进行批量更新和删除数据shell脚本
    MySQL怎么进行批量更新和删除数据shell脚本,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。#!/bin/bash. ~/.bash_...
    99+
    2024-04-02
  • 基于mybatis进行批量更新
    MyBatis是一种基于Java的持久层框架,提供了一种优雅的方式来进行数据库操作。对于批量更新数据操作,MyBatis 提供了两种方法:使用 foreach 标签和 batch 执行器。 使用 foreach 标签 使用 foreach ...
    99+
    2023-08-18
    mybatis java mysql
  • oracle怎么批量更新百万数据
    在Oracle数据库中,可以使用批量更新语句来更新大量数据。以下是一种常用的方法: 创建一个临时表,将需要更新的数据插入到该临时表...
    99+
    2024-03-01
    oracle
  • MySQL如何实现数据批量更新
    最近需要批量更新大量数据,习惯了写sql,所以还是用sql来实现,下面这篇文章主要给大家总结介绍了关于MySQL批量更新的方式,需要的朋友可以参考下 根据不同条件批量更新同一值 这种场景直接通过update语句更新即可,如: 1 UP...
    99+
    2023-10-20
    mysql 数据库
  • oracle如何批量更新数据
    在Oracle中,可以使用UPDATE语句来批量更新数据。以下是一个示例: UPDATE your_table SET co...
    99+
    2024-04-22
    oracle
  • sqlserver如何批量更新数据
    在SQL Server中,可以使用以下方法批量更新数据: 使用UPDATE语句和JOIN语句进行批量更新: UPDATE...
    99+
    2024-04-08
    sqlserver
  • mongodb如何批量更新数据
    在MongoDB中,可以使用updateMany方法来批量更新数据。该方法接受两个参数,第一个参数是查询条件,用来匹配需要更新的文档...
    99+
    2024-05-11
    mongodb
  • MySQL如何实现数据批量更新功能
    本篇内容主要讲解“MySQL如何实现数据批量更新功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL如何实现数据批量更新功能”吧!根据不同条件批量更新同一值这种场景直接通过update语...
    99+
    2023-07-05
  • mysql如何批量删除千万条数据
    在MySQL中,可以使用DELETE语句结合LIMIT关键字来批量删除大量数据,以避免一次性删除所有数据导致性能问题或造成数...
    99+
    2024-04-09
    mysql
  • ASP.NET一次性对GridView批量更新多行数据
    假定有一个Product表,字段有(Id,Name,Quantity,...)我们要一次批量更新Quantity的值 首先在Gridview中,Quantity列以TemplateF...
    99+
    2024-04-02
  • 如何在MySQL中进行批量插入?
    要进行批量插入,我们需要使用带括号的所有列名称,并用“,”分隔。 让我们看一个例子。首先,我们将创建一个表。以下是创建表的CREATE命令。 mysql> CREATE table MultipleRecordWithValues ...
    99+
    2023-10-22
  • 大批量数据分批批量插入或更新(Mybatis+MySQL)
    大批量数据分批批量插入或更新 在MySQL数据库的前提下,插入或更新大批量数据。首先批量插入需要考虑到以下几个因素: 数据库一次可以承受多大或者多少条数据的插入批量插入是否会占用Mysql资源太久,影响系统整体使用性能代码中的集合是否会造成...
    99+
    2023-08-30
    mybatis mysql 数据库 java spring boot
  • 在MySQL中如何执行批量插入数据
    在MySQL中执行批量插入数据可以使用INSERT INTO语句结合多个值的语法来实现。例如,可以使用以下语法来执行批量插入数据: ...
    99+
    2024-04-09
    MySQL
  • sql如何批量更新多条数据
    要批量更新多条数据,可以使用SQL的UPDATE语句结合CASE语句和IN语句来实现。以下是一个示例: 假设有一个名为users的表...
    99+
    2024-04-09
    sql
  • MySQL如何批量更新死锁
    这篇“MySQL如何批量更新死锁”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“MySQL如何批量更新死锁”文章吧。表结构如下...
    99+
    2023-07-06
  • MySQL怎么批量更新多条数据
    要批量更新多条数据,可以使用MySQL的UPDATE语句结合CASE语句来实现。以下是一个示例: 假设有一个名为students的表...
    99+
    2024-04-17
    MySQL
  • Servlet如何进行批量删除
    这篇文章主要介绍了Servlet如何进行批量删除,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Mapper文件in为点选条件 collection为集合 点选id 以“(”开...
    99+
    2023-06-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作