MySQL 异步驱动浅析 (一):性能分析 - Scala Cool
项目设计目标项目官网设计目标如下
快、快、更快低内存开销尽量避免内存拷贝(也是为了更快,更节约内存)易于使用,调用方法,返回 Future从不阻塞所有功能都被测试覆盖很小的依赖可以看出作者是希望通过异步非阻塞能让驱动更快(注意此处我们不讨论是真异步或者伪异步)。接下来本文将具体分析与传统的 mysql-connector/j 相比究竟是不是更快,快在哪里。
网络 IOMysqlAsync 的 IO项目使用 Netty 的 NIO 来实现,在网络 IO 这一点上确实是非阻塞的。协议实现过程也没用使用 synchronized 和 LockNetty 默认情况下线程数为 CPU 核数2倍Mysql JDBC 驱动 的 IOmysql-connector/j 使用的还是 Blocking IO ,这要求处理请求时必需有足够多的线程,否则吞吐量将受很大限制。
例如同样基于 Blocking IO 的 Tomcat7 默认就配置了 200 线程。
连接池MysqlAsync 的链接池
项目还提供一个连接池,采用分区设计,一个 PartitionedAsyncObjectPool 包含多...阅读全文
快、快、更快低内存开销尽量避免内存拷贝(也是为了更快,更节约内存)易于使用,调用方法,返回 Future从不阻塞所有功能都被测试覆盖很小的依赖可以看出作者是希望通过异步非阻塞能让驱动更快(注意此处我们不讨论是真异步或者伪异步)。接下来本文将具体分析与传统的 mysql-connector/j 相比究竟是不是更快,快在哪里。
网络 IOMysqlAsync 的 IO项目使用 Netty 的 NIO 来实现,在网络 IO 这一点上确实是非阻塞的。协议实现过程也没用使用 synchronized 和 LockNetty 默认情况下线程数为 CPU 核数2倍Mysql JDBC 驱动 的 IOmysql-connector/j 使用的还是 Blocking IO ,这要求处理请求时必需有足够多的线程,否则吞吐量将受很大限制。
例如同样基于 Blocking IO 的 Tomcat7 默认就配置了 200 线程。
连接池MysqlAsync 的链接池
项目还提供一个连接池,采用分区设计,一个 PartitionedAsyncObjectPool 包含多...阅读全文