mysql查询1亿的数据要多久 mysql 一亿 查询速度

您所在的位置:网站首页 mysql单表一亿 mysql查询1亿的数据要多久 mysql 一亿 查询速度

mysql查询1亿的数据要多久 mysql 一亿 查询速度

2024-07-06 16:16| 来源: 网络整理| 查看: 265

假设记录条数为 100 万时,查询速度为 10 毫秒;为什么记录条数为 1 亿时的查询速度比 10 毫秒的 100 倍,也就是 1 秒长很多( 往往至少是分钟级别 )? 假设记录条数为 100 万时,其中的某个索引大小为 50M,全部加载到内存很轻松,于是全部加载到了内存,查询很快,索引查询耗时 1 毫秒。当记录条数为 1 亿时,索引的大小增长为了之前的 100 倍,也就是大概 4.8G 多,全部加载到内存不太现实,所以查询索引需要多次查询磁盘。假设磁盘的读取速度是内存读取速度的 100 倍,当索引大小为 50M 时,索引全部加载进内存,需要读取 3 次索引,每次需要 1 毫秒,则索引查询一共需要花费 3 毫秒;当索引大小为 4.8G 时,索引不能全部加载进内存,每 50M 大小的索引需要读取3次,则 4.8G 大小的索引一共需要读取 300 次,每次需要花费 3 * 100 毫秒,即 300 毫秒,则 300 次一共需要 90 秒( 即1.5分钟 ),再加上数据库中其他一些深层次的涉及缓存的部分都会因为数据量十分巨大导致需要从内存查询换成从磁盘查询,这就使得总查询时间增长的倍数远远大于记录条数增长的倍数,个人感觉查询时间增长的倍数是记录条数增长倍数的 nx 倍( 其中 x 表示内存查询速度是磁盘查询速度的 x 倍,n 是一个有限的数字,例如可以为 1、3、5...,表示索引的个数加上其他一些有限因素的个数 )。   这也就是为什么单表的数据量大了要分表分库,可以根据一定的规则进行负载均衡,使得分表后,查询同一范围的数据尽量落在一个数据库服务器,这样可以复用该表的索引( 索引只加载一次到内存 ),加快索引的查询速度。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3