MySQL性能测试

面试的时候总会被问到一些性能相关的问题,比如QPS,比如能够承载的用户量,以及查询一条数据需要的实际时间等。

本文就持续更新,记录一些面经中出现的实战题目


比如一个问题:

MySQL中有30W条数据,查一个带索引的id需要多久,对具体多少ms有没有概念

先看gpt的回答:

这个问题的答案取决于许多因素,如:

  1. 索引类型:不同类型的索引在查询速度上有很大的差异。

  2. 数据库服务器的硬件配置:如果服务器的CPU、内存和磁盘速度较慢,查询时间可能会更长。

  3. 数据库中其他查询的负载:如果有其他查询正在运行,可能会影响查询时间。

  4. 数据库中数据的分布:如果需要查询的ID在数据集的开头或结尾,查询可能会更快。

  5. 数据库中数据的大小:如果每个ID都有大量的关联数据,查询可能会更慢。

综上所述,无法提供一个准确的答案。但是,用适当的索引,适当的硬件和优化的查询,查询30W条数据中的一个带索引的ID应该可以在几毫秒内完成。

参考这篇:

关于mysql百万100W数据查询优化_30万数据查询一般几秒_lumengabc的博客-CSDN博客

其给出的结果在大约0.5s或者0.16s,这样的查询结果,如果执行次数增加,那么延迟会肉眼可见的增大,我们确实需要进行一定的应对方式了。


自己做的实验来进行一些验证:

用navicat创建一张表

 一些基础的配置:

在本表中,学号和姓名都是没有顺序的

 我们利用数据生成,初步生成10W条数据,此时不设置索引

但是确保学号是唯一的:

 生成的结果为:

 首先,基于学号随便查询一条记录,0.025s

如果我们查询二十次,则有1s的延迟,并发场景的话,延迟肯定会更高。

 如果我们查询一个不存在的学号:

 推测是由于进行了全表扫描,所以时间会更久一点0.204s

我们进行分页查询:

我们尝试进行一些数据库表的优化。

1. 建立索引,我们为'学号'字段建立主键索引

 优化之后:

但是并不一定代表查询就变快了,多测试几个值发现

并不一定加快查询速度

我们进行分页查询操作:

如果想看到索引带来的效果,我们要select中查询我们建立索引包含的数值

 

 

 可以对比上面的结果,查询速度得到微小提升。


结论:适当添加索引可以加快查询速度,我这个例子特别简单,在实际应用场景中,对表结构优化,索引优化还是很有好处的。

10W级数据量的情况下,查询一条带索引的id大概也需要0.025s的时间。(centos7,mariadb,1G内存)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值