database-concurrency

    1熱度

    1回答

    這是更多的知識共享帖子。 最近在我的一個項目中,我遇到了一個很常見的問題,但直到遇到它時才真正給它一個想法。 有很多解決方案可用,但不知何故,我沒有找到我正在尋找的那個,我將在這篇文章中分享。我相信你們中的許多人已經知道下面的解決方案,但對於那些不這樣做的人肯定可以成爲救命的人。 :-) 問題: 最近,我正在開發一個windows服務。這項服務應該將一些記錄插入一個長期存在並被其他幾個舊服務使用的

    12熱度

    1回答

    根據reference documentation READ ONLY事務標誌除了允許DEFERRABLE事務之外是有用的嗎? SET SESSION CHARACTERISTICS AS TRANSACTION READ ONLY; 可延遲交易屬性沒有任何影響,除非 交易也是SERIALIZABLE和只讀。當這些屬性的所有三個 被選擇用於交易時,交易可以在第一次獲取其快照時阻塞,之後它能夠運

    0熱度

    1回答

    用戶A和用戶B正在修改同一記錄的同一列,而A完成後,列的值發生變化。 如何防止B覆蓋A輸入的數據或僅顯示一些提示? 我之前使用的方法是添加一個標記爲'更新計數(每次更新增加1)'的列。每次有人更新列時,他/她都會得到標記,所以當他/她承諾進行更新,標記將與數據庫進行比較,當不同時有人改變它。 還有其他想法嗎?

    0熱度

    1回答

    我對這個主題很陌生,我試圖驗證我的理解。所以請考慮以下示例: - 事務包含select和update語句,其中up​​date語句取決於從select語句返回的結果集。用戶A和B同時執行交易,兩個用戶都選擇了數據並且即將執行更新。如果用戶A首先執行更新,用戶B可能會有一個錯誤;因爲它沒有最新的結果集。這被稱爲Phantom Read案例。 對於可序列化的隔離級別:上述情況將不會發生。事務是完全隔離

    1熱度

    1回答

    有沒有人試圖對GAE實施悲觀鎖定?在我的項目中,有一些任務必須互相排斥。只要有只有一個正在處理請求的應用實例 javax.persistence.EntityManager.find(entityClass, primaryKey, LockModeType.PESSIMISTIC_READ); 其查詢數據庫使用SELECT FOR UPDATE和效果很好...:我以做到了這一點。如果有更多的

    0熱度

    1回答

    我有一個DataSet/DataTable,我想將更改寫入MySQL數據庫,如果MySQL數據庫中有任何更改,請將這些更改寫回到我的DataSet/DataTable。 簡而言之: myDataSet - > MySQL數據庫(用戶編輯值) myDataSet < - MySQL數據庫(另一用戶編輯的MySQL數據庫) 填充數據集從MySQL數據庫是通過這種方式完成: private MySqlD

    5熱度

    1回答

    我有一個表,如下所示: game_stats表: id | game_id | player_id | stats | (many other cols...) ---------------------- 1 | 'game_abc' | 8 | 'R R A B S' | ... 2 | 'game_abc' | 9 | 'S B A S' | ... 用戶上傳散裝一個給定的遊戲數據

    0熱度

    2回答

    我目前正在開發一個網站,並在處理數據庫設計時,對併發問題有一些擔心,我正在考慮使用時間戳來避免這種情況。 我在時間戳的理解是,它的工作原理是這樣的: 沒有爲假設其中可對特定行每次更新更新「DateModified」的字段。 然後,每當有一個或多個用戶訪問該行像首先閱讀,然後最終更新它。 在我的工作時間戳的undertaning中,我需要一個條件,將首先閱讀「DateModified」就像我的代碼。

    9熱度

    1回答

    當前正在處理的應用程序需要我在20到30分鐘的時間內多次增加屬於DynamoDB中某個項目的屬性。我一直在做一些關於DynamoDB的額外閱讀conditional writes and atomic counters 發電機中的原子計數器似乎是我需要的合乎邏輯的選擇,但我確實擔心數據的一致性,尤其是跨分佈式數據庫(如發電機)和我的準確性問題數據。我期待API在高峯時段受到重創,但我想避免與條件更

    1熱度

    1回答

    我有一個存儲過程,從表中選擇一個值,然後用它從表B中選擇。如果行數小於閾值,它將更新表A的值並重新選擇表B 。 Select val into v from A; Select ID from B where total > v; if (Found_Rows() < 3) then Update A set val = val +1; end if; 當此存儲過程同時命中和