PHP:PHP 5.3.6 (cli) (built: Jun 15 2011 16:29:50)

MYSQL:5.1.51

如果我们有的一张表有几百万或几千万的记录,我们要使用 PHP 将所有的记录都获取过来(遍历数据表)进行处理。查询语句:

SELECT * FROM largetable;

PS:为了证明上面的做法是最佳的办法,我尝试使用 largetable 中的一个字段做 where ,以及 LIMIT,OFFSET 。上面那种 WHERE 获得结果很慢,虽然用了索引。后面这种 LIMIT 可以让你有一种想死的感觉(有兴趣可以了解下,《分页优化》)。

以 MYSQL 以及PDO_MYSQL 为例,尝试直接使用以下代码,必然会出现超内存的情况:

$result = mysql_query($sql);

while ($rowset = mysql_fetch_assoc($mysql)) {

...

$stmt = $dbh->prepare($sql);

$stmt->execute();

while ($row = $stmt->fetch(PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT)) {

...

原因在于在查询执行后,PHP 的MYSQL、PDO_MYSQL 将查询结果全部缓存到了客户端,也就是 PHP 执行所在机器上。这样如果我们要 SELECT * FROM LARGETABLE 查询的记录在 百万以上的时候 ,缓存的结果就会非常大,超出 PHP 使用内存。所以为了避免这样情况就需要关闭客户端的缓存。

这里提供二个测试脚本,分别为 MYSQL、PDO_MYSQL 关闭缓存后查询样例。点击下载:mysql_query

以下是 PDO_MYSQL 在查询 ~100W 以及 ~200W (540M)数据结果(因为我的 PHP 内存使用设置了1G所以没挂:) )

可以很明显的看出在缓存结果后占用内存惊人…,当我们处理千万数据的时候必挂。

以下是 PDO_MYSQL 关闭缓存查询 ~200W 的数据结果。这下处理千万以及E级的数据的时候,对内存表示很淡定。

PS:如果你要处理的数据就几十万,你还是调大点内存好了。比如 MYSQL:

mysql_unbuffered_query() 的好处是有代价的:在 mysql_unbuffered_query() 返回的结果集之上不能使用 mysql_num_rows() 和 mysql_data_seek()。此外在向 MySQL 发送一条新的 SQL 查询之前,必须提取掉所有未缓存的 SQL 查询所产生的结果行。

mysql处理大数据量的查询速度究竟有多快和能优化到什么程度

mysql处理大数据量的查询速度究竟有多快和能优化到什么程度 深圳-ftx(1433725026) 18:10:49  mysql有没有排名函数啊 横瓜(601069289) 18:13:06  无 ...

mysql的大数据量的查询

mysql的大数据量查询分页应该用where 条件进行分页,limit 100000,100,mysql先查询100100数据量,查询完以后,将 这些100000数据量屏蔽去掉,用100的量,但是如果 ...

WinForm查询大数据界面假死,使用异步调用解决

用DataGridView无分页绑定一个几千条数据的查询,查询的时候界面直接卡死十几秒,用户体验非常不好,因此用异步操作解决界面卡死的问题原本场景:点击[查询]后,界面直接卡死优化场景:点击[查询]后 ...

在HDInsight中从Hadoop的兼容BLOB存储查询大数据的分析

在HDInsight中从Hadoop的兼容BLOB存储查询大数据的分析 低成本的Blob存储是一个强大的.通用的Hadoop兼容Azure存储解决方式无缝集成HDInsight.通过Hadoop分布式 ...

MySql查询分页数据

MySql查询分页数据

MySQL分页查询大数据量优化方法

方法1: 直接使用数据库提供的SQL语句 语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N适应场景: 适用于数据量较少的情况(元组百/千级)原因/缺点: ...

mysql优化----大数据下的分页,延迟关联,索引与排序的关系,重复索引与冗余索引,索引碎片与维护

理想的索引,高效的索引建立考虑: :查询频繁度(哪几个字段经常查询就加上索引) :区分度要高 :索引长度要小 : 索引尽量能覆盖常用查询字段(如果把所有的列都加上索引,那么索引就会变得很大) : 索引 ...

[转] MySql 优化 大数据优化

一.我们可以且应该优化什么? 硬件 操作系统/软件库 SQL服务器(设置和查询) 应用编程接口(API) 应用程序 ------------------------------------------ ...

Mysql优化-大数据量下的分页策略

一.前言 通常,我们分页时怎么实现呢? 1 SELECT * FROM table ORDER BY id LIMIT 1000, 10; 但是,数据量猛增以后呢? 1 SELECT * FROM t ...

随机推荐

ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室 实战系列

ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(零) 前言  http://www.cnblogs.com/panzi/p/5742089.html ASP.NET S ...

iOS基础-NSString及NSMutableString剖析

一.NSString头文件 NSString : NSObject 实现协议: NSCopying/NSMutableCopying/NSSecureCoding 类别: //扩展类别 NSStrin ...

IEquatable(T) interface in .Net

原文:http://weblogs.asp.net/pawanmishra/iequatable-t-interface-in-net 泛型方法: public static bool AreEqua ...

FORTH 安装使用

body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...

Java常用类--数字常用类

math java提供了基本的 + - * / %等基本算术运算的运算符,但对于更复杂的数学运算比如:三角函数,对数运算,指数运算就无能为力了.Java提供了Math工具类来完成这些复杂的运算,Mat ...

彻底搞懂Scrapy的中间件(一)

中间件是Scrapy里面的一个核心概念.使用中间件可以在爬虫的请求发起之前或者请求返回之后对数据进行定制化修改,从而开发出适应不同情况的爬虫. "中间件"这个中文名字和前面章节讲到 ...

Wechat微信公众平台开发

一.微信概述 1.历史背景 1)2011年1月21日,腾讯推出微信应用程序.(张小龙) 2)2012年8月20日,腾讯推出微信公众平台功能,同年11月开放第三方接口 3)2013年11月注册用户量突破 ...

JDBC Statements, PreparedStatement和CallableStatement语句

当获得了与数据库的连接后,就可以与数据库进行交互了. JDBC Statement,CallableStatement和PreparedStatement接口定义了可用于发送SQL或PL/SQL命令, ...

XML_CPP_资料_libxml2库函数详解

http://blog.csdn.net/hanchaoman/article/details/42557195 许多事物符合80/20法则,libxml中也是20%的函数提供了80%的功能.下面的列 ...

mysql的时间函数整理

转:这里总结的非常齐全: http://fengbin2005.iteye.com/blog/1999763   Mysql时间函数 对于每个类型拥有的值范围以及并且指定日期何时间值的有效格式的描 ...

php查询mysql表里的数据_PHP/MYSQL 查询大数据/遍历表相关推荐

  1. 如何学习大数据!!我要做大数据!

    一文读懂大数据平台--写给大数据开发初学者的话! 第一章:初识Hadoop 第二章:更高效的WordCount 第三章:把别处的数据搞到Hadoop上 第四章:把Hadoop上的数据搞到别处去 第五章 ...

  2. 一文读懂大数据平台——写给大数据开发初学者的话!

     一文读懂大数据平台--写给大数据开发初学者的话! 文|miao君 导读: 第一章:初识Hadoop 第二章:更高效的WordCount 第三章:把别处的数据搞到Hadoop上 第四章:把Hado ...

  3. 如何学习大数据!!我要做大数据! 1

    一文读懂大数据平台--写给大数据开发初学者的话! 文|miao君 导读: 第一章:初识Hadoop 第二章:更高效的WordCount 第三章:把别处的数据搞到Hadoop上 第四章:把Hadoop上 ...

  4. 百分点“数据隧道”玩转大数据平台实时数据复制

    实时数据复制技术在银行.电信.保险.政务和电商等领域应用非常广泛. 比如银行领域的收单业务涉及收单行.银行卡组织及发卡行的数据同步.收单行的数据需要传输到银行卡组织,再由银行卡组织传输给发卡行. 如果 ...

  5. python开发和大数据开发工程师_大数据开发工程师的岗位职责

    大数据开发工程师负责该领域的业务需求讨论,完成技术方案及数据开发.下面是学习啦小编整理的大数据开发工程师的岗位职责. 大数据开发工程师的岗位职责1 职责: 1.负责所分管团队的团队建设和日常管理工作; ...

  6. 物联网与大数据(四)大数据技术 物联网操作系统

    前言 关于物联网与大数据的分享已经迎来最后一期,回顾之前的内容:我们在物联网与大数据(一)中介绍了物联网与大数据的含义.背景:在从物联网看大数据中探讨了物联网形成大数据的主要环节:在从大数据看物联网中 ...

  7. 大数据学习总结+JAVA学习总结+大数据面试+java面试+大数据java异常总结

    文章目录 一.java模块面试问题 1.动态代理 2.浏览器禁用Cookie后的Session处理 3.主从复制的流程[重要] 5.redis的数据类型[重要] 6.Junit测试的注解 7.缓存问题 ...

  8. 大数据(二)大数据相关的技术

    大数据(二)大数据相关的技术 1. 云技术 大数据常和云计算联系到一起,因为实时的大型数据集分析需要分布式处理框架来向数十.数百或甚至数万的电脑分配工作.可以说,云计算充当了工业革命时期的发动机的角色 ...

  9. 了解大数据,才能更好地学习大数据

    大数据的话题近几年是越来越火了,马云曾说:21世纪的竞争是数据的竞争,谁掌握数据,谁就掌握未来!多么痛的领悟.大数据是一个很庞大的只是体系,学习的过程很枯燥,需要大量的练习.记忆.思考,我也没想着在十 ...

  10. 大数据开发及和大数据相关的技术

    在现如今,随着互联网技术飞速的发展,目前有不少朋友询问关于大数据方面的问题,比如什么是大数据开发啊,和大数据相关的技术是什么呢等问题,我们今天就浅谈一下大数据开发及和大数据相关的技术的问题. 首先,大 ...

最新文章

  1. Python二维离散余弦变换图像压缩应用(基于OpenCV)
  2. springBoot+maven的打包和部署在Tomcat
  3. python内置数据结构教程第四版答案_Python数据结构--内置数据结构
  4. 【收藏】Geomesa(三)图层的裁剪分析
  5. OpenGL Compute Shader Particle System计算着色器粒子系统的实例
  6. 电脑怎么测试硬盘的读写速度_两块硬盘合二为一,电脑读写翻倍?这样的“好事”你必须得了解...
  7. matlab pca和逆pca函数,matlab_PCA,训练集与测试集分开,原理和用法
  8. windows svn
  9. 网站二次开发如何防止别人打包源码_企业网站制作前需注意的几个事项
  10. 蓝桥杯 ALGO-50 算法训练 数组查找及替换
  11. python 判断点在随机多边形内_Python确定散点是否在多边形内,python,判断,内部
  12. html返回顶部代码(简单)
  13. erps 单环基本原理
  14. c语言怎么写注释,C语言注释
  15. 三层交换机也不贵:自己动手做三层交换机
  16. 2018最佳计算机配置,2018年主流的组装电脑配置是什么样的?
  17. 实验六软件包管理linux,oeasy教您玩转linux010202软件包管理apt
  18. dataframe 中的多层索引
  19. 攻略:苹果手机投屏电脑 iPhone镜像投屏怎么操作
  20. k8s 部署 TCP node应用

热门文章

  1. Android打包遇到的那些坑
  2. 多语言文本编辑器EmEdtor
  3. Qt 乐器 钢琴工具
  4. C++中const小结
  5. 嘀嘀打车java_Java滴滴打车系统实现(同时实现租车购物车)
  6. 微信炮轰支付宝:嘀嘀搅局移动生态圈
  7. Android 多线程下载文件原理霸气解析介绍 -----文件的下载(3)
  8. JavaScript王者归来pdf
  9. 复旦发布类ChatGPT模型Moss;OpenAI回应ChatGPT不向中国用户开放;Linux 6.2 发布|极客头条...
  10. GD32F103RCT6 MINI板综合开发教程(新手入门必备选择)