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