广告
返回顶部
首页 > 资讯 > 数据库 >数据库SQL千万级数据规模处理有哪些
  • 465
分享到

数据库SQL千万级数据规模处理有哪些

2024-04-02 19:04:59 465人浏览 独家记忆
摘要

这篇文章主要讲解了“数据库sql千万级数据规模处理有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“数据库SQL千万级数据规模处理有哪些”吧!

这篇文章主要讲解了“数据库sql千万级数据规模处理有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“数据库SQL千万级数据规模处理有哪些”吧!

1. 数据太多。放在一个表肯定不行。

比如月周期表。一个月1000万,一年就1.2亿,如此累计下去肯定不行的。所以都是基于一个周期数据一个表。甚至一个周期数据就要分几个分表。主要是考虑实际的数据量而定。当你创建一个新表时,可能这个表需要有索引,但是都要先取消索引,或者先建立表,导入数据后,再建立索引。

必要时处理完,统计完后,就备份到磁带或者其他介质。然后清掉。

从问题域来看,一个周期内的数据关联性最大。比如统计一个客户某个帐期的话单总额,同比上月增幅,还有就是零话费客户等。如此种种,参照的数据不外乎本周期,或者两个周期,甚至更多就是一个季度,或者半年的样子(类似三个月连续零话费,或者三个月连续欠费未交之类的,保存量之类的报表可能会要一年的数据)。而且这样的情况在数据挖掘或者高级管理报表中比较常见,一般营业部门使用的界面中,是不可能含有这样的统计的。

所以数据按表分开,甚至于可以按数据库分开,更便于管理。

大家要打消一种固有的思路,这些数据,跟环卫工人处理垃圾一样,是几乎有点带人工处置的多步骤方式,也就是不会作为常规数据(如客户基本资料等)长期存在和频繁使用的。所以我们可以改变思路,就是想尽办法,在需要的时候,做最佳处理,而在不需要时,清理掉它。也就是说,比如分表,你可以分100个表,1000个表都可以。只要方便统计和得到所需数据即可。

view只是说你能在写select语句时简单一点,对速度没有任何提高。

主要是,你的分表的方式能建立减少访问所有数据,就能提高速度。比如你做某个统计,那些数据恰好在某个分表内。举例说,你有10个分部,而你统计id=1这个分部时,你恰好把数据放在第一个分表里,你就可以在存储器内通过判断,只访问第一个分表,从而提高统计速度。如果你的统计需要统计全部分表内的数据,那处理速度还是一样慢。

2. 假设每个表的数据在数十万条,那统计起来是没有任何瓶颈的。常规的数据库都应该没任何问题。

3. 预处理的必要性。

有人问:我统计一千万条数据汇总,要多久多久,能否提高。。。试想你把中国人所有的存款加总,需要多长时间吧?看看这个问题的规模,其实再复杂的数据库dbms,我们说他都逃不过:找出符合条件的数据,一条一条的加总这个计算过程。暂且不提where条件了。预处理的必要性在于,如此规模的数据处理,本身就是一个非常耗时的过程,我们有必要提前,处理其结果到一个表内,或者多个表里面。用户查询时,再显示出来。比如说1000万数据分10个分部,要看每个分部的应收增长,那我们可以预先统计数据到分部费用表中,则用户端报表显示时,就非常快。如果任何数据汇总都要从原始数据去统计,那是不现实的。所以我们可以设置原始数据表,中间结果表,结果表,汇总表,月结表,期间表之类的东西。逐步统计归属。

另外要提的是,这样的动作肯定非常耗时,而且!这样的数据如果由服务器的存储过程定期定时执行的话,处理的规模就只有一次,任何客户端,都只从结果表里产生报表。如果不用此方法,任何客户端报表都从原始数据产生,理论上是可以,但是这样的千万条数据汇总的处理会做N次。而且时间上也是不容许的。


还有,这样的统计过程最好是分开db进行存放,而公用的数据比如客户基本资料,最好拷贝一份到这个新db中来处理。这样可以不干扰到正常的使用。

可以在晚上,或者另开db或者在另外的server上跑这个过程。处理完后,写一个标志告诉主db,则客户端可以统计这些报表了。

4. 对单行数据做计算字段。举个例子,比如一条记录的产生时间是2009-01-01 12:00:00.001,如果你的统计刚好需要对某个时段进行统计,那最好增加字段,比如hour字段,下一个批处理命令下去,取得小时数,然后再统计。


5. select语句中忌讳对column做函数。因为函数将导致查询条件不走索引,而改走遍历所有数据。这样你就是查一条数据,也会遍历所有数据,那岂不是可怜。


6. 条件尽量都是数字,也就是都用id,比如分部,镇区,业务种类,接入类型,客户地址,等等,都需要用到fk方式的编码,主表里只用数字id,请记住是数字型id。整数型数字是计算最快的数据类型。如果金额极大,可以用decimal(小数=0)。varchar类型是效率很低的,不过好像有sql的md5算法,我想可以尝试这个方法(我还没试过)。


7. 索引,这个是海量数据查询首要解决的问题。

没有索引,就是遍历。索引没有覆盖到,也会走遍历。


8. 复杂的统计,用存储器做分步处理,然后得到结果,同比一条select语句实现要轻松和明白得多。

而且对表的占用时间要短得多。当然,很复杂的统计可能要用到条件判断,循环等,一条select语句是无法处理的。多层的where中的子句也是效率低,容易占用表的写法。

原则上,这里我所讨论的问题都不是那种基于网站内容管理的小case,主要对企业运用而言。比如举例说查一个“存量客户增幅表”,问题都不是简单到直接对比两个月的话费总额这么简单,还得找出之前他的话费如何,比如超过多少钱的才列入统计对象。所以,我的理解:复杂的问题,必须存储过程。真正做过几个项目才会明白,写sql语句会比编程代码还要多。真正的程序,其实是sql。

最后说一句,如果经验足够丰富,写出的统计过程,其执行时间在数分钟甚至几个小时都是正常的。所以初学者应该明白,数据量是与处理时间成正比的。如果平时处理几条数据感觉很快,数据量猛然增加几个数量级,不要认为时间上还能优化到几秒钟。


ERP里的MRP展开计算,通常能到几个小时的。这都是正常的。(主要是物料多,bom多,计算步骤太多造成)

9. 补充一点。如果数据量超过我们标题的千万级,甚至几十亿数量级。那也不存在问题,还是分而治之的思路,就是把数据在多台服务器上并行运行。就好像为灾区捐款一样,靠一个人的力量是不行的。人多力量大。类似数据分拣之类的,只需要原始数据和基本资料,还有一些计费策略之类的。完全可以分布在多台server上同时处理,也是必要的。主要根据你的数据量和单台处理的速度以及你要求的总的处理时间而决定的。有人说select语句难道也需要分布?只能说,如果确实有必要,也能做到。比如你要返回所有话单异常的数据,那也可以从每台执行检索,然后汇合到一起,我想是可以的。

总而言之:

一。合理设计表结构,使得统计汇总最高效(包括fk设计和用数字id,不用varchar,索引设计,计算字段);

二。合理分表,使得单表数据规模适当;

三。用存储器分多个步骤处理。

四。数据预先处理。

五。分布在多台server上同时处理。

也就是分而治之与预处理。

感谢各位的阅读,以上就是“数据库SQL千万级数据规模处理有哪些”的内容了,经过本文的学习后,相信大家对数据库SQL千万级数据规模处理有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

您可能感兴趣的文档:

--结束END--

本文标题: 数据库SQL千万级数据规模处理有哪些

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

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

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

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

下载Word文档
猜你喜欢
  • 数据库SQL千万级数据规模处理有哪些
    这篇文章主要讲解了“数据库SQL千万级数据规模处理有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“数据库SQL千万级数据规模处理有哪些”吧! ...
    99+
    2022-10-18
  • springbatch怎么处理千万级数据
    处理千万级数据的方法可以通过以下步骤实现:1. 分批读取数据:使用Spring Batch的chunk机制,将数据分批读取到内存中。...
    99+
    2023-08-18
    springbatch
  • MySQL千万级大数据SQL查询优化知识点有哪些
    这篇文章给大家分享的是有关MySQL千万级大数据SQL查询优化知识点有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 wh...
    99+
    2022-10-18
  • MySQL单表千万级数据处理的思路分享
    目录项目背景改进思路观察数据特征多进程处理思路总结数据处理技巧项目背景 在处理过程中,今天上午需要更新A字段,下午爬虫组完成了规格书或图片的爬取又需要更新图片和规格书字段,由于单表千万级深度翻页会导致处理速度越来越慢...
    99+
    2022-05-20
    MySQL 单表数据处理 MySQL 千万级数据处理
  • MySQL数据库有哪些规范
    今天就跟大家聊聊有关MySQL数据库有哪些规范,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。基础规范(1) 必须使用InnoDB存储引擎说明:支持事...
    99+
    2022-10-18
  • MySQL数据库规范有哪些
    MySQL数据库规范有哪些,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、数据库命令规范 所有数据库对象名称必须使用小写字母并...
    99+
    2022-10-18
  • SQL Server数据库中有哪些恢复模式
    SQL Server数据库中有哪些恢复模式,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1.Simple 简单恢复模式,Sim...
    99+
    2022-10-18
  • mysql数据库的规范有哪些
    今天就跟大家聊聊有关mysql数据库的规范有哪些,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。基础规范【建议】使用In...
    99+
    2022-10-18
  • 数据库安全规范有哪些
    今天就跟大家聊聊有关数据库安全规范有哪些,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、     ...
    99+
    2022-10-18
  • 数据库命名规范有哪些
    本篇文章给大家分享的是有关数据库命名规范有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。数据库命名规范  采用26个英文字母(区分大小写)...
    99+
    2022-10-18
  • 数据库设计规范有哪些
    1. 数据库表命名规范:表名应该具有描述性,表名应该使用小写字母,单词之间使用下划线连接。2. 字段命名规范:字段名应该使用小写字母...
    99+
    2023-06-10
    数据库设计规范 数据库
  • Mysql数据库的数据模型有哪些?
    今天小编就为大家带来一篇介绍Mysql数据库的数据模型的文章。小编觉得挺实用的,为此分享给大家做个参考。一起跟随小编过来看看吧。层次模型层次模型是数据库系统最早使用的一种模型,它的数据结构是一棵“有向树”。...
    99+
    2022-10-18
  • 【已解决】Java 中使用 ES 高级客户端库 RestHighLevelClient 清理百万级规模历史数据
    🎉工作中遇到这样一个需求场景:由于ES数据库中历史数据过多,占用太多的磁盘空间,需要定期地进行清理,在一定程度上可以释放磁盘空间,减轻磁盘空间压力。 🎈在经过调研之后发现,某服务项目每周产生的数据量已经...
    99+
    2023-08-22
    java elasticsearch restClient
  • Access数据库升级为SQL数据库的注意事项和方法有哪些
    这篇文章主要介绍“Access数据库升级为SQL数据库的注意事项和方法有哪些”,在日常操作中,相信很多人在Access数据库升级为SQL数据库的注意事项和方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出...
    99+
    2022-10-18
  • 数据库中加锁规则有哪些
    这篇文章主要介绍数据库中加锁规则有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!间隙锁再加上行锁,很容易在判断是否会出现锁等待的问题上犯错。因为间隙锁在可重复读隔离级别下才有效,...
    99+
    2022-10-18
  • 数据库命名的规则有哪些
    这篇文章给大家介绍数据库命名的规则有哪些,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。数据库命名规范 1 目的规范数据库各种对象的命名规则。2 数据库命名原则2.1 数据文件如果数据库...
    99+
    2022-10-18
  • MySQL数据库开发规范有哪些
    这篇文章给大家介绍MySQL数据库开发规范有哪些,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。关于MySQL数据库开发规范有哪些就分享到这里了,希望以上内容可以对大家有一定的帮助,可以...
    99+
    2022-10-18
  • MySQL数据库设计规范有哪些
    本篇文章给大家分享的是有关MySQL数据库设计规范有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、数据库设计以下所有规范会按照【高危】...
    99+
    2022-10-18
  • 数据库规范化技巧有哪些
    这篇文章给大家介绍数据库规范化技巧有哪些,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。  数据库规范化有哪些技巧  在设计表之前,应明确您打算如何处理数据,还要了解随着时间的推移数据会...
    99+
    2022-10-18
  • SQLServer数据库有哪些设计规范
    这篇文章给大家介绍SQLServer数据库有哪些设计规范,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。  SQLServer数据库的设计规范有什么  1、对象注释规则:  注释头:注释...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作