百万级别mysql性能耗时自测

注:实际情况会因建表语句和服务器的配置造成偏差

测试环境 :8核CPU  16G运行内存 

建表语句

CREATE TABLE `user` (
  `id` bigint(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `birthday` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE,
  KEY `idx_username` (`username`(191))
) ENGINE=InnoDB AUTO_INCREMENT=2000016 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=COMPACT;

在数据库中插入200w条数据 ,尽量采用随机数值(模拟真实环境),考虑到节省插入时间 采用了分段批量插入 数据重复度较高,测出结果与真实环境会有较大偏差

未自定义索引

无索引:首次查询 不走索引的条件下进行查询 耗时为 700ms左右 之后查询同样的sql,稳定在430ms (可能mysql自带的缓存机制)

有索引(主键索引):首次查询140MS 之后稳定在2ms

自定义索引

单一索引的情况

加入索引的耗时为 username字段的索引时间+主键索引的耗时 因为测试中name字段重复度较高 因此name索引查询几乎不耗时间,最终结果为4ms

联合索引

未加索引前: 第一次查询时间为 650ms 之后为450ms

加索引之后:发现非联合索引在耗时情况上没有很大区别

插入操作

只有主键索引情况下: 请求25次

加上联合索引之后:

结论

看加索引的数据复杂程序 对索引的影响效果

再数据重复度较高的情况下,影响不是很大

修改操作

有索引:

不加索引:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ADRU

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值