当前位置:Gxlcms > 数据库问题 > 再送一波干货,测试2000线程并发下同时查询1000万条数据库表及索引优化

再送一波干货,测试2000线程并发下同时查询1000万条数据库表及索引优化

时间:2021-07-01 10:21:17 帮助过:4人阅读

技术分享

100多秒啊。。。我的天,这用户体验也没准了O(∩_∩)O哈哈~

二.加索引后再次进行高并发下测试:

数据库加索引SQL语句如下:这里我有一个疑问,上个星期我加索引等了半个小时我都没加完索引我就停止了,今天下午居然只用了551秒就加完了索引。。。搞不懂

技术分享

clean下项目代码后再次运行(尽量经常clean下项目去掉缓存,不然结果会有出入):

技术分享

看到这个结果有没有被惊呆啊?哈哈加了索引由100多秒提升到1~2毫秒,查询速度提示1万多倍,查询性能得到大幅度变态级提升~~~

没加索引之前我查询单个记录都要2秒多

技术分享

用explain查看语句可以知道要扫描全表,性能当然大幅度下降

 

 

 

 

 

技术分享

下面我们来挑战2000线程同时并发访问查询数据库。看看结果:

把数据库最大连接数设置为2500

技术分享

测试代码改为2000

package insert;
 
public class TestThreadToMysql {
 
    public static void main(String[] args) {
        for (int i = 1; i <=2000; i++) {
            String teacherName=String.valueOf(i);
            new ThreadToMysql(teacherName, "123456").start();
        }
    }
 
}

  结果截图:

技术分享

性能没问题,平均几十毫秒,很满意

下面我们来挑战一下1万个线程同时高并发访问,大家可以先想想结果会怎么样,哈哈

设置数据库最大连接数12000

技术分享

测试代码改为10000(再次提示。clean一下项目去掉缓存,这样结果更准确)

package insert;
 
public class TestThreadToMysql {
 
    public static void main(String[] args) {
        for (int i = 1; i <=10000; i++) {
            String teacherName=String.valueOf(i);
            new ThreadToMysql(teacherName, "123456").start();
        }
    }
 
}

  结果如下(运行后发现电脑有点卡):

技术分享

技术分享

结果出现两种报错,1.连接请求被拒绝 2.连接失效 3.不过也有一部分成功连接上并且正确运行

然后我在数据库查看最大连接响应数:

技术分享

可以看出来就算你的数据库设置为再高你的数据库服务器也响应不过来。。。。顶多响应5758个

技术分享

100多秒啊。。。我的天,这用户体验也没准了O(∩_∩)O哈哈~

二.加索引后再次进行高并发下测试:

数据库加索引SQL语句如下:这里我有一个疑问,上个星期我加索引等了半个小时我都没加完索引我就停止了,今天下午居然只用了551秒就加完了索引。。。搞不懂

技术分享

clean下项目代码后再次运行(尽量经常clean下项目去掉缓存,不然结果会有出入):

技术分享

看到这个结果有没有被惊呆啊?哈哈加了索引由100多秒提升到1~2毫秒,查询速度提示1万多倍,查询性能得到大幅度变态级提升~~~

没加索引之前我查询单个记录都要2秒多

技术分享

用explain查看语句可以知道要扫描全表,性能当然大幅度下降

 

 

 

 

 

技术分享

下面我们来挑战2000线程同时并发访问查询数据库。看看结果:

把数据库最大连接数设置为2500

技术分享

测试代码改为2000

 

再送一波干货,测试2000线程并发下同时查询1000万条数据库表及索引优化

标签:sql语句   root   current   order   知识   ima   from   体验   用户   

人气教程排行