鍍金池/ 問答/Java  數(shù)據(jù)庫  網(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ǐng)導(dǎo)看的各種統(tǒng)計(jì)圖表。項(xiàng)目并發(fā)量不大,所以可以為一次請(qǐng)求用多個(gè)線程,瓶頸在于統(tǒng)計(jì)sql太慢(用的postgresql)

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

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

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

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

回答
編輯回答
柒喵

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

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

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

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

2017年2月25日 11:26