线程数量设置的地方有3个,业务线程池 数据库连接池 数据库最大线程数
数据库最大线程数设置为500,只是为了不让连接池数量大于这个数,可无视这个数
测试代码,一个查询语句 一个update语句.
查询语句无论怎么测试区别不是很明显 就先不去讨论这个,或者后面我再测试下.
代码:
public class SqlThread { @Autowired IUserDao userDao; @Test public void test() throws InterruptedException { int size = 10000; List<Callable<Object>> list = new ArrayList<Callable<Object>>(); for (int i = 0; i < size; i++) { list.add(new Callable<Object>() { @Override public Object call() throws Exception { userDao.execute("update user set level = ? where uid = ?", 1, 1); return null; } }); } long l = System.nanoTime(); List<Future<Object>> futureList = ScheduledHelper.regScheduler .invokeAll(list); System.out.println("耗时(ms):" + (System.nanoTime() - l) / 1000 / 1000); } }
测试数据:
-----------update user set .............
100业务线程
20
耗时(ms):663 597
70
耗时(s):58 耗时(s):336 ?
140
耗时(s):138
240
耗时(s):144
440
耗时(s):180
100业务线程 1/10
70
耗时(s):9
240
耗时(s):8
340
耗时(s):8
70数据库线程 1/10
10业务线程
耗时(s):37
50业务线程
耗时(s):12
100业务线程
耗时(s):9
200业务线程
耗时(s):9
300业务线程
耗时(s):9
50数据库线程 1/10
25业务线程
耗时(s):31
50业务线程
耗时(s):21 第二次 15
100业务线程
耗时(s):30 第二次 39
200业务线程
耗时(s):27
30线程
50连接池
耗时(ms):11 492
70连接池
耗时(ms):11 991
100线程
50连接池
耗时(ms):9 422
70连接池
耗时(ms):7 379
200连接池
耗时(ms):6 947
300连接池
耗时(ms):6 781
450连接池
耗时(ms):6 865
300线程
100连接池
耗时(ms):7 682
300连接池
耗时(ms):9 250
测试的目的是为了寻找当前数据库软硬件配置的环境下,连接池数量和业务线程数量变化带来的性能影响,执行延迟的变化
没有做表格,,没有标准的数字为 数据库连接池数量,1/10 表示测试数据量为第一次的10% 1w次
如果忽略掉测试的误差.
在这样大的计算压力下基本上可以看出连接池在70左右.业务线程在大于连接池的情况下才能充分利用性能
同样的连接池,业务线程如果过小 或者过大 都会影响性能.
结论是,业务线程数量要大于连接池数量, 业务线程相同,连接池数量在100左右为最佳.
测试的时候mysql数据库 cpu没有多少变化 3-4%的样子,java cpu达到了70%+
这点看来没有发挥出mysql的性能! 这点看来得优化下
相关推荐
数据库连接池是数据库管理中的一个重要概念,它在C#编程中扮演着优化数据库操作的关键角色。C#数据库连接池是一种管理数据库连接的技术,通过复用已存在的连接而不是每次请求时都创建新的连接,从而提高数据库操作的...
Java JDBC 数据库连接池总结 Java 语言中,JDBC(Java DataBase Connection)是应用程序与数据库沟通的桥梁。在 Web 应用开发的早期,主要使用的技术是 CGIASPPHP 等。之后,Sun 公司推出了基于 Java 语言的 ...
数据库连接池在初始化时会创建一定数量的数据库连接并保存起来,当应用程序需要连接时,可以从池中获取一个已存在的连接,而不是每次都去新建,用完后也不立即关闭,而是归还给连接池。这样可以显著减少建立和释放...
MySQL数据库连接池是提高应用程序性能的一种重要技术,它允许开发者管理多个数据库连接并高效地复用这些连接,而不是每次需要时都创建新的连接。在C#编程中,我们可以使用自定义的连接池或者第三方库如ADO.NET的...
数据库连接池在初始化时会创建一定数量的数据库连接并保存在池中,当应用程序需要连接数据库时,不是直接创建新的连接,而是从连接池中获取一个已经存在的连接;使用完毕后,连接不会被立即关闭,而是归还到连接池,...
在IT领域,数据库连接池是优化数据库访问性能的关键技术之一,尤其在高并发的应用场景下,合理配置数据库连接池能够显著提升系统响应速度并降低资源消耗。本文将深入解析几种常用的数据库连接池——Apache DBCP、C3P...
数据库连接池是数据库管理中的重要概念,它在Java Web应用中尤其常见,主要用于优化数据库的连接管理和资源利用。自定义数据库连接池是为了更好地适应特定应用的需求,提高数据存取的效率,减少系统开销,避免频繁...
【数据库连接池】是软件开发中用于管理数据库连接的一种技术,旨在提高数据库操作的效率和资源利用率。在传统的JDBC数据库编程中,每个数据库操作都需要建立、使用和关闭数据库连接,这种模式存在明显的性能瓶颈和...
数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接, 当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。 我们可以通过设定连接池最大连接数...
首先,数据库连接池的基本原理是维护一定数量的数据库连接,当应用需要时,可以从池中获取一个已建立的连接,使用完毕后再归还给池,而不是直接关闭。这样避免了频繁地创建和销毁连接,提高了系统的效率。 1. **...
数据库连接池是数据库管理中的重要组成部分,它在提高应用程序性能和资源管理方面起着关键作用。连接池的基本原理是预先创建一定数量的数据库连接,并将它们保存在一个池中,当应用需要连接数据库时,不再直接建立新...
1. **数据库连接池**:数据库连接池在初始化时会创建一定数量的数据库连接,并将这些连接保存在一个池中。当应用程序需要与数据库交互时,它从池中获取一个已存在的连接,而不是每次都创建新的连接。使用完毕后,...
数据库连接池是Java应用程序中管理数据库连接的一种高效策略,它能显著提高系统性能并减少资源消耗。本篇文章将深入解析一个自定义的JAVA数据库连接池类,帮助开发者更好地理解和运用这一关键技术。 首先,连接池的...
本文将深入讲解数据库连接池的工作原理、优势以及如何通过对比测试来体现其对系统性能的影响。 首先,我们需要理解什么是数据库连接池。在没有连接池的情况下,每次应用程序需要与数据库交互时,都会创建一个新的...
标题 "JMeter测试有无数据库连接池的性能" 涉及到的关键知识点主要集中在性能测试工具Apache JMeter以及数据库连接池在系统性能优化中的作用。这篇博客文章可能通过使用JMeter来比较系统在使用和不使用数据库连接池...
数据库连接池的基本原理是预先在内存中创建一定数量的数据库连接,应用程序在需要时可以从池中获取连接,使用完毕后再归还,而不是每次操作都创建新的连接。这大大减少了创建和销毁连接的开销,提高了系统运行效率。...
数据库连接池是Java应用程序在处理数据库交互时的重要组件,它能有效地管理数据库连接,提高系统性能,降低资源消耗。在Java开发中,我们通常会使用像C3P0、Druid这样的连接池来优化数据库访问。JDBC(Java Database...
数据库连接池,简单来说,就是预先创建并维护一定数量的数据库连接,应用程序需要时可以从池中获取,用完后再归还,而不是每次操作都新建和关闭连接。这种方式极大地提高了数据库操作的效率,减少了系统资源的浪费,...