太搞笑了,别说100万条 sql 了,哪怕只有8万条 sql,我手动用8个平台线程每个负责1万条,都比把这8万条 sql 当成8万个虚拟线程任务快一倍。如果我把这8万条 sql 生成8万个同步任务提交给 lealone 的 ClientScheduler 执行也比虚拟线程快了1.2倍。因为在虚拟线程里无法绑定 Statement 或 Connection 对象,只能从一个外部队列获取,就算扣除出入队列的开销,虚拟线程调用执行 sql 的同步方法时会导致大量的切换操作,所以巨慢无比。
@zhh-4096
很多数据库无法支持100万条连接,即便应用服务器收到100万条并发 sql,它也无法创建100万条连接,只能从包含上千条连接的连接池里取。如果做不到批量执行,我只要开100个平台线程逐条处理这100万条 sql 即可。反而用虚拟线程不好做,只能把执行每条 sql 的方法当成一个虚拟线程任务提交,实测更慢。
