H2是一个单线程数据库,在性能方面有良好的声誉.其他数据库是多线程的.
我的问题是:多线程数据库何时变得比单个线程数据库更有趣?有多少用户?有多少个进程?什么是触发器?谁有经验分享?
>通常的瓶颈是磁盘访问
> SSD很快,但很脆弱(故障程序是必须的)
>单个线程系统上的一个长查询将阻止所有其他查询
>配置多线程系统可能很棘手
>即使在单核系统上,多线程数据库也是有益的
解决方法
这是我的意见:
通常,DB系统的瓶颈(或最慢的部分)是磁盘. cpu仅在算术运算,处理或cpu执行的任何其他任务期间出现峰值.通过适当的体系结构,多线程可以帮助将查询的负载抵消到cpu上,而不是进行慢速磁盘读/写操作.在某些情况下,使用cpu周期计算值更快,而不是创建计算列(之前已保存到磁盘)并从磁盘读取此列.
在某些RDBMS中,有一个临时DB(tempdb),该实例上的所有DB都使用它来进行排序,散列,临时变量等…多线程和拆分此tempdb文件可用于提高tempdb的吞吐量从而提高整体服务器性能.
使用多线程(并行),可以将查询的结果集拆分为在服务器的不同核心上进行处理,而不是单独使用一个核心.此功能并不总能提高性能,但有时会出现这种情况,因此可以使用该功能.
DB可用的线程用于多种用途:读取/写入磁盘,用户连接,后台作业,锁定/锁存,网络IO等等…根据操作系统体系结构,线程被抢先送入cpu并且使用等待和队列进行管理.如果cpu可以很快地处理这些线程,那么等待时间将会很短.多线程数据库将比单线程数据库更快,因为在单线程数据库中,只会回收一个线程而不是让其他部分可用.
可伸缩性也成为一个问题,因为管理和执行扩展的DB系统需要更多的线程.