数据库选型,是用多核主机还是多线程主机?我是否可以用比较便宜的单核超线程(Hyper-Threading,HT)的机器,来替代双核非HT的机器?
回答这个问题,我们由浅入深的来看。
一,术语:
槽位(socket):指机器上可以容纳物理CPU个数的空间。一般也成为多少多少“路”,英文除了socket,也成processors。
核(core):指一个CPU中,包含若干个独立组成部分。
指令(Instruction):一个指令包含如下步骤:指令预取(IF),指令解码(ID),执行(EX),内存访问(MEM),寄存器写回(WB)注,读取寄存器是在ID阶段。
指令流水线(Instruction pipelining):由于指令被切割成上面5部分,那么通过(以类似流水线的方式)同时执行不同指令的不同部分,来提高吞吐量。
为什么能提高吞吐量,我们打个比方:麦当劳买汉堡,要经过点餐(1分钟),做汉堡(3分钟),做薯条(2分钟),包装(1分钟),送餐(1分钟)。
(1)那么如果非流水线模式,顾客A需要等1+3+2+1+1=8分钟,如果顾客B是和顾客A一起到的,那么他需要等顾客A完成之后,再继续等8分钟。所以如果同时有N个顾客,顾客N需要等的时间是8N分钟。