首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    数据量查询容易OOM?试试MySQL流式查询

    一、前言 程序访问 MySQL 数据库时,当查询出来的数据量特别时,数据库驱动把加载到的数据全部加载到内存里,就有可能会导致内存溢出(OOM)。...其实在 MySQL 数据库中提供了流式查询,允许把符合条件的数据分批一部分一部分地加载到内存中,可以有效避免OOM;本文主要介绍如何使用流式查询并对比普通查询进行性能测试。...三、性能测试 创建了一张测试表 my_test 进行测试,总数据量为 27w 条,分别使用以下4个测试用例进行测试: 大数据量普通查询(27w条) 大数据量流式查询(27w条) 小数据量普通查询(10...条) 小数据量流式查询(10条) 3.1....查询耗时 10 条数据量用时 1 秒 ? 四、总结 MySQL 流式查询对于内存占用方面的优化还是比较明显的,但是对于查询速度的影响较小,主要用于解决大数据量查询时的内存占用多的场景。

    2.3K20

    mysql数据量分页查询优化总结

    Mysql的分页查询十分简单,但是当数据量大的时候一般的分页就吃不消了。...传统分页查询:SELECT c1,c2,cn… FROM table LIMIT n,m MySQL的limit工作原理就是先读取前面n条记录,然后抛弃前n条,读后面m条想要的,所以n越大,偏移量越大,...1)limit语句的查询时间与起始记录的位置成正比 2)mysql的limit语句是很方便,但是对记录很多的表并不适合直接使用。...因为利用索引查找有优化算法,且数据就在查询索引上面,不用再去找相关的数据地址了,这样节省了很多时间。另外Mysql中也有相关的索引缓存,在并发高的时候利用缓存就效果更好了。...当然JOIN操作也可以通过子查询实现,不过书中介绍5.6之前版本的mysql相比子查询还是优先使用JOIN。

    1.5K30

    mysql查询优化-千万级数据量

    最近在忙其他项目,偶然发现之前的项目中,有个定时刷新告警信息的模块查询比较慢,简单的一个关联查询,尽然耗了20多秒才能出来, 才发现表的数据量已经达到了700万,我擦,我这暴脾气,不知道我强迫症吗,于是下定决心...30.尽量避免向客户端返回大数据量,若数据量过大,应该考虑相应需求是否合理。...创建的索引返回的行越少越好,此时区分度。 用不上索引的列,不要创建索引。...= 6.对字段加函数或者运算的 在order by操作中,mysql只有在排序条件不是查询条件表达式时才使用索引。...handler_read_rnd_next:这个值越高,说明查询低效 案例分析 一张告警信息表,数据量为620万 查询数量,用时1s image.png 添加内连接,用时5s (device表700

    1.7K30

    MySQL 百万数据量的 count(*) 查询如何优化?

    明确需求 对这个问题有兴趣是源于一次开发中遇到要统计人数的需求。类似于“得到”专栏的订阅数。 但是我的数据量比这个大很多,而对数据的准确性要求就不那么高。所以首先要明确需求。...这个建议还是不要用了,翻了下mysql 的doc,40%的误差概率,碰上就有点了呀。 TABLE_ROWS The number of rows....; 在T1的时候,如果采用Mysql默认的事务隔离级别:读提交。...带条件count(*) 很多时候我们的业务场景不是数据量多,而是条件复杂。这其实就是一个查询优化的问题了,和是不是count(*)没有关系,那么有以下两招常用,这个得具体问题具体分析了。...结合mysql的一些索引查询知识,我们可以大致得出如下结论。 ? 建议直接使用count(*)。 相关阅读 为什么要用自增主键? 蚂蚁金服面试题: 一条SQL查询语句如何执行的 索引使用策略及优化

    12.5K41

    mysql查询sql统计_mysql服务启动慢

    一、概述 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值(long_query_time,单位:秒)的SQL语句。...默认情况下,MySQL不启动慢查询日志。本文简单介绍如何开启慢查询日志,如何用mysqldumpslow分析慢查询。...= file; 说明: 可以看到,我这里设置为了file,就是说我的慢查询日志是通过file体现的,默认是none,我们可以设置为table或者file,如果是table则慢查询信息会保存到mysql...可以看到上述慢查询的SQL语句被记录到日志中。 四、慢查询分析工具 mysqldumpslow mysqldumpslow是MySQL自带的分析慢查询的工具。该工具是Perl脚本。...; 六、小结 默认情况下,MySQL不启动慢查询日志。

    3.2K20

    MySQL索引(六)索引优化补充,分页查询、多表查询统计查询

    JOIN 多表查询优化 创建一一小表 CREATE TABLE `t1` ( `id` int(11) NOT NULL AUTO_INCREMENT, `a` int(11) DEFAULT...并且MySQL 会优先选择小表作为驱动表,先用where 条件过滤驱动表,再根据被驱动表做关联查询。所以在使用 inner join 关联查询时,排在前面的表不一定时驱动表。...多表查询优化 对关联字段设计索引:对于索引字段,MySQL 一般会选择NLJ 算法, 使用小表驱动表:在设计时如果明确哪个关联表是小表,可以使用 straight_join,会节省MySQL 优化器判断大小表时间...关于小表定义:并不是表的数据量大小,而是表根据条件过滤后,参与join 关联的字段数据量数据量小的才是小表。 in、exists 优化 in、exsits 的优化原则就是小表驱动表。...增加数据库统计表,在更新数据行的事务中,增加维护统计表操作。注意需要在一个是事务中实现。

    15710

    MySQL 百万级数据量分页查询方法及其优化

    方法1: 直接使用数据库提供的SQL语句 语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N 适应场景: 适用于数据量较少的情况(元组百/千级) 原因/缺点...ORDER BY id_pk ASC LIMIT M 适应场景: 大数据量 原因: 索引扫描,速度会很快. prepare语句又比一般的查询语句快一点。...大数据量使用limit分页,随着页码的增大,查询效率越低下。...从中我们也能总结出两件事情: limit语句的查询时间与起始记录的位置成正比 mysql的limit语句是很方便,但是对记录很多的表并不适合直接使用。 2....因为利用索引查找有优化算法,且数据就在查询索引上面,不用再去找相关的数据地址了,这样节省了很多时间。另外Mysql中也有相关的索引缓存,在并发高的时候利用缓存就效果更好了。

    76820

    MySQL 百万级数据量分页查询方法及其优化

    数据库SQL优化是老生常谈的问题,在面对百万级数据量的分页查询,又有什么好的优化建议呢?下面将列举了一些常用的方法,供大家参考学习!...方法1: 直接使用数据库提供的SQL语句 语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N 适应场景: 适用于数据量较少的情况(元组百/千级) 原因/缺点...ORDER BY id_pk ASC LIMIT M 适应场景: 大数据量 原因: 索引扫描,速度会很快. prepare语句又比一般的查询语句快一点。...大数据量使用limit分页,随着页码的增大,查询效率越低下。...从中我们也能总结出两件事情: limit语句的查询时间与起始记录的位置成正比 mysql的limit语句是很方便,但是对记录很多的表并不适合直接使用。 2.

    3.4K00

    MySQL百万级数据量分页查询方法及其优化

    方法一:直接使用数据库提供的SQL语句 语句样式:MySQL中可用如下方法: select * from table_name limit m, n; 适用场景:适用于数据量较少的情况(元组百/千级...limit m; 适应场景: 适用于数据量多的情况(元组数上万) 原因: 索引扫描,速度会很快....有朋友提出: 因为数据查询出来并不是按照pk_id排序的,所以会有漏掉数据的情况,只能方法3 方法三:基于索引再排序 语句样式,MySQL中可用如下方法: select * from table_name...order by id_pk asc limit m; 适应场景: 大数据量 原因: 索引扫描,速度会很快. prepare语句又比一般的查询语句快一点。...大数据量使用limit分页,随着页码的增大,查询效率越低下。

    2.7K20

    MySQL百万级数据量分页查询方法及其优化

    方法1: 直接使用数据库提供的SQL语句 语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N 适应场景: 适用于数据量较少的情况(元组百/千级) 原因/缺点...ORDER BY id_pk ASC LIMIT M 适应场景: 大数据量 原因: 索引扫描,速度会很快. prepare语句又比一般的查询语句快一点。...大数据量使用limit分页,随着页码的增大,查询效率越低下。...从中我们也能总结出两件事情: limit语句的查询时间与起始记录的位置成正比 mysql的limit语句是很方便,但是对记录很多的表并不适合直接使用。 2....因为利用索引查找有优化算法,且数据就在查询索引上面,不用再去找相关的数据地址了,这样节省了很多时间。另外Mysql中也有相关的索引缓存,在并发高的时候利用缓存就效果更好了。

    4K10

    mysql的count统计查询到底要怎么用【mysql

    一、前言 1,有人问我,count查询为啥有时候快有时候慢 2,首先要明白count查询的真正作用 2-1:统计某个列的数量 2-1:统计行数 二、原理 1,统计列时,会查询这个列不为空的数量,它是需要计算的...2,统计行数时,如果不加where,它可以直接取到结果,因为它可以利用存储引擎的特性直接获得这个值,比如count(*) 3,统计列时,如果知道这个列不能为空,会转化为count(*),从而加快速度...innodb为聚簇索引同时支持事物,其在count指令实现上采用实时统计方式。...在无可用的二级索引情况下,执行count会使MySQL扫描全表数据,当数据中存在大字段或字段较多时候,其效率非常低下(每个页只能包含较少的数据条数,需要访问的物理页较多) 三、实际应用 1,50万条数据...,没有索引,大约耗时13分钟 2,50万条数据,有索引,大约耗时354毫秒 3,原理 mysql一个数据页为:16k(默认) 能存16*1024/(4+8) =1365条数据(为什么是4+8可以看看mysql

    3.3K20

    MySQL统计数据库所有表的数据量

    场景:mysql统计一个数据库里所有表的数据量,最近在做统计想查找一个数据库里基本所有的表数据量数据量少的通过select count再加起来也是可以的,不过表的数据有点多,不可能一个一个地查 记得在...在mysql里是可以查询information_schema.tables这张表的 SELECT table_rows,table_name FROM information_schema.tables...WHERE TABLE_SCHEMA = '数据库名称' and table_name not in ('不查询的表名称') ORDER BY table_rows DESC; 要统计的...是默认的存储引擎,能支持事务外健,并发情况性能也比较好 所以,根据网上的做法,重新analyze 对应表,在mysql8.0版本是不管用的,发现查询数据还是不对,估计是mysql版本太高,mysql5版本没验证过...的查询效率,会将视图tables和statistics里面的统计信息缓存起来,缓存过期时间由参数information_schema_stats_expiry决定

    6.8K10

    mysql统计账单信息(下):数据导入及查询

    上一篇mysql统计账单信息(上):mysql安装及客户端DBeaver连接使用介绍了mysql5.7的安装及客户端DBeaver的连接配置,本文接上一篇内容,介绍数据导入和查询导出。...; 执行导入 导入过程可能会涉及到max_allowed_packet数值调整,设置max_allowed_packet数值更大些 mysql> show global variables like...'max_allowed_packet'; mysql> set global max_allowed_packet=16777216; 刷新查看 查看yd_csv表结构: 移动全量表明细...: 三、移动查询语句 查询语句基于restore导入的库表,也可以是导入的excel,这里以前者为例 1.查询语句 select liuliangkafukuan.yd_csv.卡号,liuliangkafukuan.yd_csv.ICCID...3.查询结果导出 选择输出的目录和文件名格式 导出如下:

    2.3K30
    领券