当前位置:首页 > MySQL

Mysql分页查询丢失数据

canca6年前 (2020-09-28)MySQL964

问题场景描述

将一个sql的查询结果集导出为文件,由于一次查询结果集可能上百万条,在开发环境和测试环境均造成了内存溢出的问题。因此改为分页查询数据的方式,虽然慢点,但是规避了内存溢出的问题。
但是,在这一百多万条导出的数据中,发现导出的文件中的数据与数据库直接查询出的数据不一致。偶发性的部分数据缺失,部分数据有重复,但是总条数一致。

问题分析

最早怀疑是程序问题,但是最后发现程序没问题,然后就把目光聚焦到了一直以为没问题的sql上面。由于我的查询sql最后是用时间来排序的,也就是:order by create_date desc。刚开始,我认为通过时间排序了,已经能保证数据的顺序。但是,当我用了其他几个字段和事件一起做排序,保证每次查询结果集的顺序强一致性,就没有发生过数据丢失或数据重复的问题。

结论

在使用limit进行分页时,一定要保证当前每次查询结果集的顺序一致性。不然可能会出现分页数据顺序不一致,导致分页查询的结果集和期望的结果集不一致。


扫描二维码推送至手机访问。

版权声明:本文由Ant.Master's Blog发布,如需转载请注明出处。

本文链接:https://iant.work/post/727.html

标签: MySQL
分享给朋友:

“Mysql分页查询丢失数据” 的相关文章

小谈MySQL字符集

首先,这片文章纯粹是我的个人经验之谈,适用于我常见的环境及项目中.个人建议,数据库字符集尽量使用utf8(HTML页面对应的是utf-8),以使你的数据能很顺利的实现迁移,因为utf8字符集是目前最适合于实现多种不同字符集之间的转换的...…

MySql导入SQL文件

MySql导入SQL文件: mysql -u root -p <c:\sampledb.sql…

MySQL建立远程登陆用户

如果你想连接你的mysql的时候发生这个错误: ERROR 1130: Host '192.168.1.3' is not allowed to connect to this MySQL server 解决方法: 1. 改表法。可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要…

MySQL免安装配置方法

1.下载一个安装版的。 安装版,安装后%MYSQL_HOME%\bin下有一个mysqld-nt.exe文件。将它复制出来(珍藏起来)。 2.下载一个免安装版MSYQL 将它解压。例如:E:/mysql-6.0.3-alpha-win32 将my-huge.ini另存为my.ini。 打开my.in…

MySQL备份与恢复语句

mysql备份语句:E:\MySQL Server 5.0\bin>mysqldump -uroot -padmin --default-character-set=utf8 --opt --extended-insert=false --triggers -R --hex-blob -x s…

mysql Out of memory (Needed 16777224 bytes)的错误解决

至于我改的这几个值是不是正确的解决方法,目前还不知道。先贴出来这几天碰到这个错误。 至于我改的这几个值是不是正确的解决方法,目前还不知道。先贴出来。 如果过一段时间我还是没有更新,那以后同志们都参考吧 。...…

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。