星空网 > 软件开发 > 数据库

从mysql读取大量数据时的实践

背景

程序启动时,从mysql读取所有的数据,在内存中建立数据结构。mysql表中至少有100w条记录。以后根据时间定期从mysql增量读取数据,刷新内存结构。

表结构为{uid, product, state, modify_time,primary key(uid, product), key(modify_time)}

方法一

因为增量的更新都是按照modify_time来的,所以直观的想到根据modify_time来分页读取,每次读取1w行记录,循环100次就能全部读取100w条记录。

于是select * from table  order by modify_time limit 0,10000 直到limit 990000,10000。乍一看没什么问题。但是程序启动居然超过5分钟。用explain分析一下select语句的耗时,发现limit 990000, 10000时居然耗时几秒钟,确实用到了索引modify_time,但是扫描行数超过了5万多行。omg. 对于大数据量时,同一索引下有太多的数据,越往后查找越耗时。100w后数据就已经使系统不可用了。

方法二

表结构加一个字段,id自增类型,并建立唯一索引。查询语句变成select * from table where id >=m and id <n.同样是每次读取1w条数据,但每次都得很快的返回结果,避免了分页limit查询时的急剧下降的性能。

结论

从mysql查询时要避免limit m,n, 当m很大时。




原标题:从mysql读取大量数据时的实践

关键词:MYSQL

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

Lazada越南站点上线卖家屏蔽买家订单功能:https://www.kjdsnews.com/a/696999.html
Shopee印尼站推出2021时装周活动:https://www.kjdsnews.com/a/697000.html
双十一VS黑五 谁更胜一筹?:https://www.kjdsnews.com/a/697001.html
做到这5点,小白卖家也能轻松爆单双12:https://www.kjdsnews.com/a/697002.html
美国黑五线上销售额首次下降达89亿美元,广东梅州完成首票跨境电商“9810”出口业务:https://www.kjdsnews.com/a/697003.html
在Google如何精准有效的搜索?:https://www.kjdsnews.com/a/697004.html
宠物梳专利查询分析:https://www.kjdsnews.com/a/1842293.html
温州旧货市场有玻璃柜卖吗?:https://www.vstour.cn/a/411246.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流