iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >如何使用分区处理MySQL的亿级数据优化
  • 936
分享到

如何使用分区处理MySQL的亿级数据优化

mysql亿级处理数据MySQL分区亿级数据 2022-05-11 17:05:34 936人浏览 八月长安
摘要

Mysql在查询上千万级数据的时候,通过索引可以解决大部分查询优化问题。但是在处理上亿数据的时候,索引就不那么友好了。 数据表(日志)是这样的: 表大小:1T,约24亿行; 表分区:按时间分区,每个

Mysql在查询上千万级数据的时候,通过索引可以解决大部分查询优化问题。但是在处理上亿数据的时候,索引就不那么友好了。

数据表(日志)是这样的:

  • 表大小:1T,约24亿行;
  • 表分区:按时间分区,每个月为一个分区,一个分区约2-3亿行数据(40-70G左右)。

由于数据不需要全量处理,经过与需求方讨论后,我们按时间段抽样一部分数据,比如抽样一个月的数据,约3.5亿行。
数据处理的思路:

1)建表引擎选择Innodb。由于数据是按月分区的,我们将该月分区的数据单独copy出来,源表为myisam引擎,因我们可能需要过滤部分数据,涉及到筛选的字段又没有索引,使用myisam引擎加索引的速度会比较慢;
2)按日分区。将copy出来的表加好索引后(约2-4个小时),过滤掉无用的数据,同时再次新生成一张表,抽取JSON中需要的字段,并对该表按日分区。


CREATE TABLE `tb_name` (
  `id_`,
  ...,
  KEY `idx_1` (`create_user_`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='应用日志'
PARTITioN BY RANGE(to_days(log_time_)) (
    PARTITION p1231 VALUES LESS THAN (737425),
    PARTITION p0101 VALUES LESS THAN (737426),
    PARTITION p0102 VALUES LESS THAN (737427),
    PARTITION p0103 VALUES LESS THAN (737428),
    PARTITION p0104 VALUES LESS THAN (737429),
......
);

3)对上面生成的表按每日进行聚合或者其他操作,并将结果存储到临时表中,尽量使用存储过程加工数据,由于加工相对复杂而且耗时较多(跑一次存储过程需要大概1-2小时),因此循环调用存储过程时应记录操作时间和执行过程中的参数等;


delimiter $$
create procedure proc_name(param varchar(50))
begin
 declare start_date date;
    declare end_date date;
    set start_date = '2018-12-31';
    set end_date = '2019-02-01';
    
    start transaction;
 truncate tmp_talbe;
 commit;
    
    while start_date < end_date do
  set @partition_name = date_fORMat(start_date, '%m%d');
        set @start_time = now(); -- 记录当前分区操作起始时间
        
  start transaction;
  set @sqlstr = concat(
   "insert into tmp_talbe",
   "select field_names ",
            "from tb_name partition(p", @partition_name,") t ",
            "where conditions;"
   );
  -- select @sqlstr;
  prepare stmt from @sqlstr;  
  execute stmt;
  deallocate prepare stmt;
  commit;
        
        -- 插入日志
        set @finish_time = now(); -- 操作结束时间
        insert into oprerate_log values(param, @partition_name, @start_time, @finish_time, timestampdiff(second, @start_time, @finish_time));
        
  set start_date = date_add(start_date, interval 1 day);
    end while;
end
$$
delimiter ;

4)对上述生成的结果进行整理加工。

总的来说,处理过程相对繁琐,而且产生了很多中间表,对关键步骤还需要记录操作流程的元数据,这对SQL处理的要求会比较高,因此不建议使用mysql处理这种任务(除非迫不得已),如果能将能处理过程放在大数据平台上处理,速度会更快,而且元数据管理会相对专业。

到此这篇关于如何使用分区处理MySQL的亿级数据优化的文章就介绍到这了,更多相关MySQL 亿级数据优化内容请搜索自学编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持自学编程网!

您可能感兴趣的文档:

--结束END--

本文标题: 如何使用分区处理MySQL的亿级数据优化

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

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

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

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

下载Word文档
猜你喜欢
  • mongodb亿级数据如何处理
    处理MongoDB亿级数据的方法可以包括以下几个方面:1. 数据分片:将数据分散存储在不同的分片上,可以提高读写性能。可以根据数据的...
    99+
    2023-08-23
    mongodb
  • MySQL亿级数据数据库优化的方法是什么
    本篇内容主要讲解“MySQL亿级数据数据库优化的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL亿级数据数据库优化的方法是什么”吧!对MySQ...
    99+
    2024-04-02
  • 如何使用php函数来优化大数据处理?
    在当今大数据时代,处理海量数据已成为一项重要任务。PHP 是一种强大的服务器端编程语言,它提供了许多用于数据处理的函数和工具。本文将介绍一些优化大数据处理的方法,并提供具体的 PHP 代码示例。使用合适的数据结构:在处理大数据时,选择合适的...
    99+
    2023-10-21
    优化 大数据处理 PHP函数
  • 如何使用Python分析14亿条数据
    这篇文章主要介绍“如何使用Python分析14亿条数据”,在日常操作中,相信很多人在如何使用Python分析14亿条数据问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用Python分析14亿条数据”的疑...
    99+
    2023-07-06
  • 阿里云亿级数据库的使用方法与优势
    随着数据量的不断增长,亿级数据库的使用越来越普遍。阿里云亿级数据库作为一款功能强大的数据库,它的使用方式和优势备受关注。本文将详细介绍阿里云亿级数据库的使用方法与优势。 阿里云亿级数据库是一款高性能、高可用的数据库产品,它可以处理亿级别的数...
    99+
    2023-11-19
    阿里 级数 使用方法
  • PHP 和 NumPy:如何优化数据处理和分析?
    随着数据科学和机器学习的兴起,数据处理和分析的需求变得越来越重要。在这个过程中,很多开发者开始寻找能够帮助他们完成这个任务的工具。PHP 和 NumPy 是两个常用的工具,下面我们将探讨如何使用它们来优化数据处理和分析。 PHP PH...
    99+
    2023-07-07
    对象 numpy numy
  • PHP如何优化大数据处理?
    PHP作为一种流行的编程语言,被广泛地应用于大数据处理领域。然而,由于PHP是一种解释性语言,其性能与C语言等编译性语言相比较较差。本文将介绍一些PHP优化技巧,帮助您提高PHP在大数据处理方面的性能。 一、选择合适的数据结构 数据结构是一...
    99+
    2023-06-15
    大数据 unix 索引
  • 如何使用队列优化PHP与MySQL的数据传输和处理流程?
    在PHP与MySQL开发过程中,数据传输和处理是常见的操作。然而,随着数据量的增加和并发操作的增多,传统的数据传输和处理方式可能会导致性能问题。为了解决这个问题,队列成为一种有效的优化手段。本文将介绍如何使用队列来优化PHP与MySQL的数...
    99+
    2023-10-21
    MySQL 优化 PHP 队列 数据传输
  • 如何解决亿级用户的分布式数据库数据存储问题
    这篇文章给大家介绍如何解决亿级用户的分布式数据库数据存储问题,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、MySQL复制1.MySQL的主从复制MySQL的主从复制,就是将MySQ...
    99+
    2024-04-02
  • 如何使用Go Shell重定向优化大数据处理?
    Go Shell是Go语言中的一个强大的工具,可以通过它来执行各种Shell命令。当需要处理大量数据时,往往需要进行重定向优化以提高处理效率。本文将介绍如何使用Go Shell重定向优化大数据处理。 一、什么是重定向 在Shell中,重定向...
    99+
    2023-06-23
    shell 重定向 大数据
  • Python 与大数据的完美结合:如何使用 NumPy 优化数据处理?
    随着现代科技的发展,数据处理已经成为了各行各业的一个重要部分,而 Python 作为一种功能强大且易于学习的编程语言,已经成为了数据处理领域的热门选择。而在 Python 中,NumPy 库则是大数据处理领域的重要工具之一。本文将介绍 N...
    99+
    2023-10-03
    大数据 numpy unix
  • 如何使用Redis+Bitmap实现亿级海量数据统计
    这篇文章给大家分享的是有关如何使用Redis+Bitmap实现亿级海量数据统计的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。寄语多分享多付出,前期多给别人创造价值并且不计回报,从...
    99+
    2024-04-02
  • 如何用Java 几分钟处理完 30 亿个数据(项目难题)
    目录1. 场景说明2. 模拟数据3. 场景分析4. 读取数据5. 处理数据5.1 思路一完整代码测试结果5.2 思路二:分治法初始化阻塞队列生产者消费者1) 队列线程私有化2) 多子...
    99+
    2024-04-02
  • Shell 脚本如何优化大数据处理?
    随着数据量的不断增加,大数据处理已经成为了许多企业必须面对的问题。而在大数据处理过程中,Shell 脚本作为一种常见的工具语言,也被广泛应用。但是,在处理大数据时,Shell 脚本的效率往往会受到一定的限制。本文将介绍一些 Shell 脚...
    99+
    2023-09-22
    大数据 shell 函数
  • GO语言如何优化分布式大数据处理的速度?
    随着互联网和大数据时代的到来,越来越多的企业和组织开始面临大规模数据的处理和分析问题。为了提高效率和减少成本,许多组织和企业开始采用分布式计算和处理技术。而GO语言,作为一种高效、简洁、并发和可扩展性强的语言,成为了越来越多企业和组织选择...
    99+
    2023-07-18
    分布式 大数据 npm
  • MySQL百万级数据大分页查询优化的实现
    目录一、MySQL分页起点越大查询速度越慢二、 limit大分页问题的性能优化方法(1)利用表的覆盖索引来加速分页查询(2)用上次分页的最大id优化三、MySQL百万数据快速生成3....
    99+
    2024-04-02
  • NumPy和Java:如何优化大数据处理的数据类型?
    在大数据处理领域,数据类型是一个非常关键的问题。数据类型的选择会直接影响到数据处理的速度和效率。在这个领域中,NumPy和Java都是非常流行的数据处理工具。本文将介绍如何利用NumPy和Java来优化大数据处理的数据类型选择。 一、Nu...
    99+
    2023-07-08
    numy 大数据 数据类型
  • 如何实现MySQL底层优化:数据统计和分析的应用与优化
    如何实现MySQL底层优化:数据统计和分析的应用与优化随着互联网的迅猛发展,数据对于企业的重要性越来越突出。而MySQL作为一种常用的开源关系型数据库管理系统,其底层优化对于数据统计和分析应用的性能至关重要。本文将重点介绍如何实现MySQL...
    99+
    2023-11-08
    数据分析 优化 数据统计 MySQL底层优化关键词:
  • Python 教程:如何使用异步编程优化大数据处理?
    在处理大量数据时,传统的同步编程方式可能会导致程序变得缓慢和不稳定。为了解决这个问题,Python 提供了异步编程的功能,可以使程序在处理大量数据时更加高效和可靠。本文将介绍如何使用 Python 的异步编程来优化大数据处理。 一、什么是...
    99+
    2023-09-29
    教程 大数据 异步编程
  • 如何实现MySQL底层优化:表分区的应用和优势
    如何实现MySQL底层优化:表分区的应用和优势随着大数据时代的到来,数据库的性能需求也越来越高。MySQL作为常用的关系型数据库,为了满足大规模数据存储和高并发访问的需求,提供了表分区的功能。本文将介绍如何实现MySQL底层优化中的表分区,...
    99+
    2023-11-08
    MySQL 优化 分区
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作