大数据小内存排序问题如何巧妙解决

 更新时间:2025年01月27日 09:30:46   作者:思wu邪  
文章介绍了大数据小内存排序的三种方法:数据库排序、分治法和位图法,数据库排序简单但速度慢,对设备要求高;分治法高效但实现复杂;位图法可读性差,但存储空间受限

大数据小内存排序问题,很经典,很常见,类似的还有比如 “如何对上百万考试的成绩进行排序” 等等。

三种方法:

  • 数据库排序(对数据库设备要求较高)
  • 分治法(常见思路)
  • 位图法(Bitmap)

方法概要

  • 数据库排序(对数据库设备要求较高)

    操作:将数据全部导入数据库,建立索引,数据库对数据进行排序,提取出数据。
    特点:操作简单, 运算速度较慢,对数据库设备要求较高。

  • 分治法(常见思路)

    操作:操作与归并排序的思想类似,都是分治。

    将数据进行分块,然后对每个数据块进行内部的排序(假如是对int形数据升序)。

    和归并排序类似,每个数据块取第一个数据(当前块的最小数据),然后比较取出的数据,取其最小加入结果集。

    重复2操作,直到取完所有数据,此时排序完毕。

    特点:

  • 位图法(Bitmap)

    操作:基本思想就是利用一位(bit)代表一个数字,例如第 3 位上为 1,则说明 3 这个数字出现过,若为0,则说明 3 这个数字没有出现过。很简单~

    ​ java.util 封装了 BitSet 这样一个类,是位图法的典型实现。

    特点:

    • 可读性差(不是一般的差 🤔)

    • 位图存储的元素个数虽然比一般做法多,但是存储的元素大小受限于存储空间的大小。要想定义存储空间大小就需要实现知道存储的元素到底有多少

    • 对于有符号类型的数据,需要用 2 位来表示,比如 第 0 位和第 1 位表示 0 这个数据,第 2 位和第 3 位表示 1 这个数据......,这会让位图能存储的元素个数,元素值大小上限减半

    • 只知道元素是否出现,无法知道出现的具体次数

到此这篇关于大数据小内存排序问题如何巧妙解决的文章就介绍到这了,更多相关大数据小内存排序问题内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL性能监控软件Nagios的安装及配置教程

    MySQL性能监控软件Nagios的安装及配置教程

    这篇文章主要介绍了MySQL性能监控软件Nagios的安装及配置教程,这里以CentOS操作系统为环境进行演示,需要的朋友可以参考下
    2015-12-12
  • 详解MySQL从入门到放弃-安装

    详解MySQL从入门到放弃-安装

    这篇文章主要介绍了MySQL从入门到放弃-安装,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • mysql查询结果实现多列拼接查询

    mysql查询结果实现多列拼接查询

    本文主要介绍了mysql查询结果实现多列拼接查询,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • MYSQL必知必会读书笔记第五章之排序检索数据

    MYSQL必知必会读书笔记第五章之排序检索数据

    本文给大家分享mysql必会必知读书笔记第五章之排序检索数据,小编认为非常具有参考价值,特此分享到脚本之家平台供大家参考
    2016-05-05
  • MySQL InnoDB存储引擎的深入探秘

    MySQL InnoDB存储引擎的深入探秘

    这篇文章主要给大家介绍了关于MySQL InnoDB存储引擎的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-02-02
  • MySQL CPU飙高排查的全流程指南

    MySQL CPU飙高排查的全流程指南

    当 MySQL 出现 CPU 持续飙高 时,问题往往不只存在于数据库本身,而可能涉及:SQL 执行效率,系统资源瓶颈以及并发模型等,本文提供一套 工程化三阶段排查方法,需要的朋友可以参考下
    2026-03-03
  • mysql索引失效的几种情况分析

    mysql索引失效的几种情况分析

    这篇文章主要给大家介绍了关于mysql索引失效的情况,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • mysql 5.7更改数据库的数据存储位置的解决方法

    mysql 5.7更改数据库的数据存储位置的解决方法

    随着MySQL数据库存储的数据逐渐变大,已经将原来的存储数据的空间占满了,导致mysql已经链接不上了。所以要给存放的数据换个地方,下面小编给大家分享mysql 5.7更改数据库的数据存储位置的解决方法,一起看看吧
    2017-04-04
  • mysql如何查询某一时间段内没有卖出的商品

    mysql如何查询某一时间段内没有卖出的商品

    室友拿来一道关于mysql查询的问题,利用mysql查询某一时间段内没有卖出的商品,需要的朋友可以参考下
    2014-02-02
  • mysql部分替换sql语句分享

    mysql部分替换sql语句分享

    有时候需要对mysql中的内容进行部分替换,那么可以参考下面的文章。
    2011-11-11

最新评论