一、多線程并發(fā)訪問(wèn)數(shù)據(jù)庫(kù)中不同記錄時(shí)應(yīng)該采用什么辦法
關(guān)系型數(shù)據(jù)庫(kù)基本已經(jīng)解決你的問(wèn)題了。數(shù)據(jù)庫(kù)有行級(jí)鎖。
注意以下都是一個(gè)事務(wù)內(nèi)包含了多個(gè)線程并發(fā)訪問(wèn)時(shí)候的一些建議,多線程程序一般都是開(kāi)在同一個(gè)事務(wù)點(diǎn)上,所以才有下面的一點(diǎn)建議。
但設(shè)計(jì)的程序的時(shí)候還是很有難度的。
一個(gè)事務(wù)內(nèi)的多個(gè)線程,盡量別交叉執(zhí)行,分兩部分執(zhí)行,部分1 讀數(shù)據(jù)庫(kù) 部分2 寫(xiě)數(shù)據(jù)庫(kù)。
先讀后寫(xiě),如果業(yè)務(wù)允許的話。這樣可以有效避免很多障礙,甚至很解決不了的坑。
(比如一個(gè)寫(xiě)線程還沒(méi)提交,一個(gè)大的讀線程恰巧導(dǎo)致寫(xiě)線程無(wú)法提交,等待讀線程完成才會(huì)提交,會(huì)照成很長(zhǎng)時(shí)間的鎖等待,一堵塞,就很容易產(chǎn)生數(shù)據(jù)庫(kù)假死。)
對(duì)于一個(gè)事務(wù)內(nèi)的多個(gè)線程,有時(shí)候臟讀是合理的情況下,一定要合理利用,這樣可以避免無(wú)法分成讀寫(xiě)兩部分執(zhí)行而產(chǎn)生等待的問(wèn)題,比如可以提前在寫(xiě)隊(duì)列里面提前commit,那么讀的部分完全可以異步,首先要確認(rèn)業(yè)務(wù)是否可行,要不就會(huì)出錯(cuò)數(shù)據(jù),這地方是個(gè)鋼絲繩。
也就是,題主不要認(rèn)為多線程可以完全異步,那樣成本和設(shè)計(jì)難度是幾何上升的(關(guān)系型數(shù)據(jù)庫(kù)幾乎不太可能)。
異步和同步混用,可以考慮采用隊(duì)列等數(shù)據(jù)結(jié)構(gòu)來(lái)進(jìn)行多線程控制順序。
延伸閱讀:
二、Power BI是什么
Power BI(power business intelligence)是軟件服務(wù)、應(yīng)用和連接器的集合,它們協(xié)同工作以將相關(guān)數(shù)據(jù)來(lái)源轉(zhuǎn)換為連貫的視覺(jué)逼真的交互式見(jiàn)解。 無(wú)論用戶(hù)的數(shù)據(jù)是簡(jiǎn)單的 Excel 電子表格,還是基于云和本地混合數(shù)據(jù)倉(cāng)庫(kù)的集合,Power BI 都可讓用戶(hù)輕松地連接到數(shù)據(jù)源,直觀看到(或發(fā)現(xiàn))重要內(nèi)容,與任何所希望的人進(jìn)行共享。
Power BI 簡(jiǎn)單且快速,能夠從 Excel 電子表格或本地?cái)?shù)據(jù)庫(kù)創(chuàng)建快速見(jiàn)解。 同時(shí) Power BI 也可進(jìn)行豐富的建模和實(shí)時(shí)分析,及自定義開(kāi)發(fā)。 因此它既是用戶(hù)的個(gè)人報(bào)表和可視化工具,還可用作組項(xiàng)目、部門(mén)或整個(gè)企業(yè)背后的分析和決策引擎。