关于单线程数据库与多线程数据库性能

H2是一个单线程数据库,在性能方面有良好的声誉.其他数据库是多线程的.

我的问题是:多线程数据库何时变得比单个线程数据库更有趣?有多少用户?有多少个进程?什么是触发器?谁有经验分享

摘要

>通常的瓶颈是磁盘访问
> SSD很快,但很脆弱(故障程序是必须的)
>单个线程系统上的一个查询将阻止所有其他查询
>配置多线程系统可能很棘手
>即使在单核系统上,多线程数据库也是有益的

解决方法

这是我的意见:

通常,DB系统的瓶颈(或最慢的部分)是磁盘. cpu仅在算术运算,处理或cpu执行的任何其他任务期间出现峰值.通过适当的体系结构,多线程可以帮助将查询负载抵消到cpu上,而不是进行慢速磁盘读/写操作.在某些情况下,使用cpu周期计算值更快,而不是创建计算列(之前已保存到磁盘)并从磁盘读取此列.

在某些RDBMS中,有一个临时DB(tempdb),该实例上的所有DB都使用它来进行排序,散列,临时变量等…多线程和拆分此tempdb文件可用于提高tempdb的吞吐量从而提高整体服务器性能.

使用多线程(并行),可以将查询的结果集拆分为在服务器的不同核心上进行处理,而不是单独使用一个核心.此功能并不总能提高性能,但有时会出现这种情况,因此可以使用该功能.

DB可用的线程用于多种用途:读取/写入磁盘,用户连接,后台作业,锁定/锁存,网络IO等等…根据操作系统体系结构,线程被抢先送入cpu并且使用等待和队列进行管理.如果cpu可以很快地处理这些线程,那么等待时间将会很短.多线程数据库将比单线程数据库更快,因为在单线程数据库中,只会回收一个线程而不是让其他部分可用.

可伸缩性也成为一个问题,因为管理和执行扩展的DB系统需要更多的线程.

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...