鍍金池/ 問(wèn)答/Java  數(shù)據(jù)庫(kù)  網(wǎng)絡(luò)安全/ JAVA起5個(gè)線程查5個(gè)sql會(huì)比1個(gè)線程查5個(gè)sql更快嗎?

JAVA起5個(gè)線程查5個(gè)sql會(huì)比1個(gè)線程查5個(gè)sql更快嗎?

項(xiàng)目背景:內(nèi)網(wǎng)OLAP應(yīng)用,具體來(lái)說(shuō)是做給領(lǐng)導(dǎo)看的各種統(tǒng)計(jì)圖表。項(xiàng)目并發(fā)量不大,所以可以為一次請(qǐng)求用多個(gè)線程,瓶頸在于統(tǒng)計(jì)sql太慢(用的postgresql)

問(wèn)題描述:現(xiàn)在有5個(gè)慢sql,我們想優(yōu)化性能,方案1是web服務(wù)器單線程串行的發(fā)請(qǐng)求給數(shù)據(jù)庫(kù)查5個(gè)sql,方案2是web服務(wù)器有5個(gè)線程去發(fā)請(qǐng)求給數(shù)據(jù)庫(kù)查5個(gè)sql。

問(wèn)題:忽略方案2省掉的網(wǎng)絡(luò)IO延時(shí),方案2查完5個(gè)sql能更快么?

我的理解是方案2并不能更快,理由是:

數(shù)據(jù)庫(kù)那慢的是磁盤(pán)IO,對(duì)于數(shù)據(jù)庫(kù)來(lái)說(shuō),1個(gè)連接查5個(gè)sql或者5個(gè)連接查5個(gè)sql總歸要串行的掃5遍盤(pán),應(yīng)該并不能優(yōu)化?
請(qǐng)問(wèn)這樣理解對(duì)嗎?5個(gè)線程會(huì)更快嗎?

回答
編輯回答
柒喵

你可以試驗(yàn)一下,我的實(shí)驗(yàn)結(jié)果是方案2快。
方案1的5個(gè)sql串行,postgre服務(wù)器并沒(méi)有充分利用多核優(yōu)勢(shì),速度慢。
方案2并發(fā)5個(gè)sql,相當(dāng)于5個(gè)連接,postgre服務(wù)器利用多核優(yōu)勢(shì),速度快。

不過(guò)你說(shuō)的也有道理,我沒(méi)有測(cè)試出來(lái)你理解的結(jié)果,說(shuō)明磁盤(pán)IO并不是影響速度關(guān)鍵。

2017年2月2日 19:45
編輯回答
毀了心

我想知道數(shù)據(jù)庫(kù)設(shè)計(jì)和sql和數(shù)據(jù)量

2017年2月25日 11:26