如何计算线程切换的总开销?
当数据库的处理能力很强时,就特别容易看出客户端因为线程切换带来的重大负面影响,就拿图1的 lealone 的数据来看,48个线程平均每个线程的处理时间是15-20毫秒,而48个线程的总处理时间基本在50毫秒以上,所以线程切换浪费了将近2倍的时间,也就是40毫秒左右。
而其他3个数据库的平均处理时间本身就高,所以48个线程总处理时间跟平均处理时间只多了40毫秒左右,刚好就是 lealone 48个线程的总处理时间减去每个线程的平均处理时间,也就是线程切换的总开销是固定的40毫秒左右。收起
@zhh-4096
一直用 jdk 17 的 zgc 做压测,看数据不是很稳定,还不如 g1,结果换成 jdk 25的 zgc,压测出来的数据立马就漂亮稳定多了。每次开48个线程并发写9600条记录,连续跑了150次,lealone 平均每个线程的耗时基本维持在15-20毫秒左右。lealone 的数据确实最漂亮,h2、mysql、postgresql 基本在90-120毫秒。
