Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >mysql查询内存占用过大?

mysql查询内存占用过大?

提问于 2017-11-28 04:05:34
回答 4关注 0查看 2.1K

在查询数据库的时候,由于数据量大,我要做分页,然后首先获取总的条数,但是使用sql语句SELECT COUNT(*) as total from 表 WHERE addtime between 1164038401 and 1511235339;这条sql等于遍历了全表,数据有一百万条,id为主键索引,addtime为普通索引。现在问题是一使用这条语句内存使用量就从一开始的30%多直接上升到90%多,怎么解决这个内存问题?

我现在只是查询个数,但是分页的时候会查询有条件的大量数据,对于内存过大,有什么好的解决办法?比如sql不使用缓存,修改配置文件等等。

回答 4

Tabor

发布于 2017-11-28 06:29:52

几百万行+的大表来说,COUNT(*)是非常耗时的,你看能不能换个方式处理下。

要么在业务上索性就不统计,你想想你做分页,每页10条数据,两百万行就是 20 万页,你统计了别人会翻这么多页吗。

另一种方式就是如果你的主键是连续递增的,就可以通过边界值相减得到统计结果,这比你直接 count 肯定是减少了不少时间。

1008396

发布于 2017-11-28 11:50:15

主要是把设备优化一下,但还有一点,最好能把算法也优化一下,每次查询的时候不要查那么多的数据。

晓小峰哦

发布于 2017-11-28 06:31:36

建议使用MySQL分区表,用addtime作为分区字段,不要任何索引。查询的时候带分区字段,确保查询扫描的分区表个数在一个很少的数量。这个方案不需要改动数据表结构和改动代码,实施成本低,效果很不错。

和开发者交流更多问题细节吧,去 写回答
相关文章
websphere内存增长,占用过大
有些网站web服务的架构是Apache配合websphere application server搭建起来的。如果不注意websphere applicationserver的配置,随着网站访问量的上升,可能出现内存占用不断上涨,网站速度变慢,最后内存耗尽的后果。
震八方紫面昆仑侠
2020/07/23
2.5K0
websphere内存增长,占用过大
查询Ceph的OSD占用内存
之前写过一篇关于查询OSD的运行的CPU的情况的分享,本篇是讲的获取内存占用的,代码包括两种输出,一种是直接的表格,一种是可以方便解析的json
用户2772802
2018/08/06
2.3K0
gitlab prometheus占用磁盘过大
私有化部署gitlab,后期发现磁盘占用过高,经过查询是gitlab中prometheus的data文件夹占用过大,据说这是prometheus的监控日志,我这里每天会产生大概80M左右的文件,默认是保留15天的
itze
2022/10/31
3.8K0
gitlab prometheus占用磁盘过大
MySQL InnoDB 内存占用公式
innodb_buffer_pool_size key_buffer_size max_connections * ( sort_buffer_size + read_buffer_size + binlog_cache_size ) max_connections * 2MB ---- Previous Mac下正确配置JAVA_HOME Next IR_Black Theme for Term
EltonZheng
2021/01/26
5.8K0
宝塔mysql内存占用高如何优化?
其实主要吃内存的一般就是mysql程序,其他的宝塔和Nginx还有php基本不怎么吃内存的。内存占用非常的小。但是我们如果服务器是1G或者512M的内存基本就很吃力的。可能会因为这个内存不足导致mysql自动停止运行。
wordpress建站吧
2020/12/15
6.9K0
宝塔mysql内存占用高如何优化?
MySQL内存占用100%,是正常的?
某项目压测后发现qps达标,服务器cpu和内存占用均在70%以下,然而mysql服务的内存占用高达100%,且并没有因为压测而产生波动。
魏景维
2022/06/01
6.9K1
sentry磁盘占用过大如何清理
如果已经占满100%,可以先去查找筛选出磁盘上其他占用很大的无用文件或者日志等,释放出一部分空间。
ghostsf
2022/09/09
3.7K0
MySQL 占用空间一键查询实践
本文介绍如何查询和分析 MySQL 数据库的磁盘空间使用情况,包括使用 SQL 查询命令和工具进行查询和分析的方法。同时,还介绍了如何使用 MySQL 的系统表查询数据库磁盘空间使用情况,并给出了相关示例和查询结果。
莫韵
2017/03/23
4.7K2
查询统计mysql占用磁盘空间大小
select TABLE_NAME, concat(truncate(data_length/1024/1024,2),’ MB’) as data_size, concat(truncate(index_length/1024/1024,2),’ MB’) as index_size from information_schema.tables where TABLE_SCHEMA = ‘tab’ order by data_length desc;
chimchim
2022/11/13
2.8K0
为什么MySQL内存占用这么大? for InnoDB
这是 Innodb 引擎最重要的缓存,也是提升查询性能的重要手段。一般是global共享内存中占用最大的部分。在进行 SQL 读和写的操作时,首先并不是对物理数据文件操作,而是先对 buffer_pool 进行操作,然后再通过 checkpoint 等机制写回数据文件。占用的内存启动后就不会自动释放,默认通过LRU的算法镜像缓存淘汰,每次的新数据页,都会插入buffer pool的中间,防止前面的热数据被冲掉,长时间没动静的冷数据,会被淘汰出buffer pool,但是是被其它新数据占用了,所以一般这里不会释放的,除非重启(5.7 开始支持动态调整,默认以128M的chunk单位分配内存块)。innodb_buffer_pool主要包含数据页、索引页、undo 页、insert buffer、自适应哈希索引、锁信息以及数据字典等信息。
elontian田凌翔
2019/11/11
7.9K0
为什么MySQL内存占用这么大? for InnoDB
docker限制mysql资源占用(内存、IO等)
容器已启动; 在宿主机任意位置下vim docker.cnf 写入 skip-host-cache skip-name-resolve performance_schema_max_table_instances=400 table_definition_cache=400 table_open_cache=256 performance_schema=off 将这个文件复制到mysql容器内 sudo docker cp ./docker.cnf 容器名:/etc/mysql/conf.d 更新容器资源
devi
2021/08/19
3.5K0
值得收藏的查询进程占用内存情况方法汇总
| 作者:杨一迪,腾讯云数据库后台开发工程师,主要负责腾讯云PostgreSQL、CynosDB等产品后台开发工作。 ---- 现网运维过程中,常有用户咨询实例的内存使用情况,故而和大家一起分享我对于内存占用情况的理解,共同进步。 1 简述 查看进程占用内存情况的方式比较多,包括top命令、/proc/${pid}/smaps文件统计、cgroup统计等。但不同方式的查询结果具体代表什么含义,这里通过一个测试程序,简单验证下这三种查询方式如何反映进程的内存使用情况。想看结论的直接看文末的总结。本文有
腾讯云数据库 TencentDB
2020/02/14
1.8K0
值得收藏的查询进程占用内存情况方法汇总
WordPress 显示数据库查询次数、查询时间及内存占用的代码
如果对进行过WordPress 性能优化,需要一个直观简单的查看方式的话,那么就可以使用下面所提及的代码,通过这段代码,可以在直观或者在html 源代码查看数据库查询次数、查询时间及内存占用。代码本质
Jeff
2018/01/19
2.9K0
WordPress 显示数据库查询次数、查询时间及内存占用的代码
linux mysql 监听端口被占用_Linux 查询端口被占用命令[通俗易懂]
如下,我以3306为例,netstat -anp |grep 3306(此处备注下,我是以普通用户操作,故加上了sudo,如果是以root用户操作,不用加sudo即可查看),如下图1:
全栈程序员站长
2022/07/26
4.2K0
linux mysql 监听端口被占用_Linux 查询端口被占用命令[通俗易懂]
WordPress代码显示查询次数/加载时间/内存占用
performance的参数 ture 表示在页面前端显示。如果你想在页面中不显示,只在html源码中可见可改为 false!
空木白博客
2019/02/28
1.2K0
让WordPress显示页面查询次数、加载时间以及内存占用
显示WordPress页面查询次数、加载时间和内存占用将下面代码添加到当前主题的 functions.php 文件中:
夏末浅笑
2020/04/27
1.4K0
MySQL 5.6内存占用过高解决方案
距离MySQL 5.6正式发布已经有比较长的时间了,目前Oracle官网上的最新GA版本MySQL server也为5.6。但reizhi在安装配置后却发现其内存占用居高不下,无论如何调整cache甚至禁用InnoDB都不能解决。由于VPS仅有1GB内存,在开启常用的Web服务之后,无力再为MySQL提供400MB以上的物理内存。
reizhi
2022/09/26
3.2K0
MySQL 5.6内存占用过高解决方案
恢复磁盘占用过大变成只读模式
如果read_only_allow_delete等于true,则es目前索引是只读状态
summerking
2022/09/19
1.2K0
恢复磁盘占用过大变成只读模式
cmd查询mysql端口占用_windows cmd快速查看端口占用情况
在调试服务或者程序的时候我们经常会通过检测对应端口是否打开来判断服务是否成功启动,本例就拿mysql的3306来实验。
全栈程序员站长
2022/08/31
8.7K0
rsyslogd内存占用率高_怎么减少系统内存占用
用top,用ps都能看到。相伴的systemd-journal cpu和内存占用也很高。
全栈程序员站长
2022/09/21
5.5K0

相似问题

java的项目,占用内存高?

1582

CDB内存占用过高如何优化?

0404

服务器重启内存被大量占用?

1427

c盘文件过大?

1335

PHP Mysql CPU占用高的问题怎么解决?

1441
相关问答用户
腾讯云TDP | 先锋会员擅长2个领域
某公司 | 程序员擅长1个领域
擅长5个领域
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档