返回顶部
首页 > 资讯 > 数据库 >如何使用分区处理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://lsjlt.com/news/10416.html(转载时请注明来源链接)

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

猜你喜欢
  • 如何使用分区处理MySQL的亿级数据优化
    mysql在查询上千万级数据的时候,通过索引可以解决大部分查询优化问题。但是在处理上亿数据的时候,索引就不那么友好了。 数据表(日志)是这样的: 表大小:1T,约24亿行; 表分区:按时间分区,每个...
    99+
    2022-05-11
    mysql 亿级处理数据 MySQL分区亿级数据
  • 浅谈MySQL 亿级数据分页的优化
    目录背景分析数据模拟1、创建两个表:员工表和部门表2、创建两个函数:生成随机字符串和随机编号3、编写存储过程,模拟500W的员工数据4、编写存储过程,模拟120的部门数据5、建立关键字段的索引,这边是跑完数据之后再建...
    99+
    2022-05-27
    MySQL 亿级数据分页 MySQL 分页优化
  • 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 队列 数据传输
  • 如何使用Go Shell重定向优化大数据处理?
    Go Shell是Go语言中的一个强大的工具,可以通过它来执行各种Shell命令。当需要处理大量数据时,往往需要进行重定向优化以提高处理效率。本文将介绍如何使用Go Shell重定向优化大数据处理。 一、什么是重定向 在Shell中,重定向...
    99+
    2023-06-23
    shell 重定向 大数据
  • 如何解决亿级用户的分布式数据库数据存储问题
    这篇文章给大家介绍如何解决亿级用户的分布式数据库数据存储问题,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、MySQL复制1.MySQL的主从复制MySQL的主从复制,就是将MySQ...
    99+
    2024-04-02
  • Python 与大数据的完美结合:如何使用 NumPy 优化数据处理?
    随着现代科技的发展,数据处理已经成为了各行各业的一个重要部分,而 Python 作为一种功能强大且易于学习的编程语言,已经成为了数据处理领域的热门选择。而在 Python 中,NumPy 库则是大数据处理领域的重要工具之一。本文将介绍 N...
    99+
    2023-10-03
    大数据 numpy unix
  • 如何用 Golang 优化时区处理性能?
    go 中优化时区处理性能缓存时区对象:应用时区缓存,避免重复创建 cost 高的时区对象。利用并发处理:使用 goroutine 池并发处理多个时区操作,提高效率。使用预加载并行时区:在...
    99+
    2024-05-21
    性能优化 时区 golang
  • mysql亿级数据数据库优化方案测试-银行交易流水记录的查询
    对MySQL的性能和亿级数据的处理方法思考,以及分库分表到底该如何做,在什么场景比较合适? 比如银行交易流水记录的查询 限盐少许,上实际实验过程,以下是在实验的过程中做一些操作,以及踩过的一些坑,我觉得坑对于读者来讲是非常有用的。 ...
    99+
    2015-10-18
    mysql亿级数据数据库优化方案测试-银行交易流水记录的查询
  • 如何使用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
  • 如何优化数据库的数据分组
    优化数据库的数据分组可以通过以下几种方式来实现: 确保合适的索引:在数据库表中创建适当的索引可以加快数据检索速度,减少数据分组时的计算时间。 使用合适的数据类型:选择合适的数据类型可以减少数据存储空间的占用,提高数据分组的效率。 ...
    99+
    2024-07-03
    数据库
  • 如何优化数据库的数据分析
    要优化数据库的数据分析,可以考虑以下几个方面: 数据建模:设计合适的数据模型可以提高数据查询和分析的效率。合理的数据模型能够提高数据的存储效率,并简化数据查询的复杂度。 索引优化:为频繁查询的字段建立索引,可以加快数据查询的速度。同...
    99+
    2024-07-03
    数据库
  • 如何优化数据库的数据分布
    使用索引:索引可以帮助数据库更快地定位数据,提高查询速度。在设计数据库时,需要根据实际情况添加适当的索引。 分区表:将数据表按照某种规则分成多个分区,可以减少单个表的数据量,提高查询性能。 数据归档:对于历史数据或者不经常访问的数据...
    99+
    2024-07-03
    数据库
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作