資料庫互斥
A. 區域網內運行多個資料庫,資料庫之間互斥如何解決
不會互斥的.如果是Mysql\oracle\mssql 我知道都可以更改連接埠的.
mysql 默認是 3306 在bin\my 文件中
oracle默認是1521 修改監聽器就可以了
mssql 2000與2005 都可以在企業管理器屬性中改.同一台機器安裝時先安2000.再裝2005,並在安裝2005時不要先擇升級安裝.要不2000就沒有了.
區域網內運行多個資料庫,即使是相同的資料庫,你也不可能在一台機器上的啊.
你在連接時,還是要加上IP或機器名來添加連接.所以就區分開了,不存在互斥問題.
B. 資料庫防止多人同時操作的問題
並發讀臟數據的問題:以Mysql環境為例 針對1,採用雙表枷鎖。假設已經有Key表
由於在寫入的時候鎖是互斥的,所以再建立一個表,只保存一個欄位即可,就是一個自增的id,當有操作需要申請Key的時候,先在這個表裡插入一條空數據,這樣返回一個mysql分配的自增的id,用這個id去第一個表裡取相應該id的Key就可以了。
不會出現多個用戶得到同樣Key的解釋是,此時多個並發的操作肯定可以得到不同的id,因為在插入的時候寫鎖是互斥的,並發的多個操作要想寫資料庫,就會阻塞排隊,第一個操作寫入後,釋放了該鎖,獲得mysql分配的id,其後的操作需要執行insert操作,mysql就會將這個操作順序插入資料庫的不同行,返回不同的id,此時雖然操作是並發的,同時到達的,但對於mysql來說,是一條一條執行插入語句,所以當然操作的是不同的行,返回不同的id,這樣在第一個表裡找到的就是不同的密碼,用戶分配到的也是不同的Key。
當這個分配的id大於密碼表裡的id總數時候,表示Key全部發送完
C. 兩個線程對資料庫同一個表同時寫,需要互斥嗎
前提是2個update 同時獲取了更新數據,
這個一般在sql 中可以事務處理,如下SQL
begin tran
update test
set a=1
where a<>1
commit tran
這樣就不影響數據,因為第二個更新事務必須等待第一個完成,才能操作事務進行更新動作
D. java 多個eclipse如何互斥地讀取資料庫
將
領用1個記錄處理,並修改標志位為「已分配」
兩個操作寫為一個事物並把事物的隔離級別設置為 可串列化 (Serializable)。
serializable完全鎖定欄位,若一個事務來查詢同一份數據就必須等待,直到前一個事務完成並解除鎖定為止 。是完整的隔離級別,會鎖定對應的數據表格,因而會有效率的問題。
E. 如何來解決資料庫管理互斥問題
1. 首先,需要建立一個全局靜態的互斥量;例如:
using System.Threading;
private static Mutex m;
2. 修改原先操作資料庫的部分,注意的是(資料庫查詢是不需要的):
if(m==null)
m=new Mutex();
//Enter into mutex area
m.WaitOne();
//Execute sql command here
//Depart from mutex area
m.ReleaseMutex();
F. 資料庫中,死鎖產生條件中的「互斥條件」與「不剝奪條件」有什麼區別
死鎖的四個必要條件操作系統中有若干進程並發執行,它們不斷申請、使用、釋放系統資源,雖然系統的進程協調、通信機構會對它們進行控制,但也可能出現若干進程都相互等待對方釋放資源才能繼續運行,否則就阻塞的情況。此時,若不藉助外界因素,誰也不能釋放資源,誰也不能解地等待永遠不會發生的條件,系統處於停滯狀態,這就是死鎖。產生死鎖的原因主要是:(1)因為系統資源不足。(2)進程運行推進的順序不合適。(3)資源分配不當等。如果系統資源充足,進程的資源請求都能夠得到滿足,死鎖出現的可能性就很低,否則就會因爭奪有限的資源而陷入死鎖。其次,進程運行推進順序與速度不同,也可能產生死鎖。產生死鎖的四個必要條件:(1)互斥條件:一個資源每次只能被一個進程使用。(2)請求與保持條件:一個進程因請求資源而阻塞時,對已獲得的資源保持不放。(3)不剝奪條件:進程已獲得的資源,在末使用完之前,不能強行剝奪。(4)循環等待條件:若干進程之間形成一種頭尾相接的循環等待資源關系。這四個條件是死鎖的必要條件,只要系統發生死鎖,這些條件必然成立,而只要上述條件之一不滿足,就不會發生死鎖。死鎖的解除與預防:理解了死鎖的原因,尤其是產生死鎖的四個必要條件,就可以最大可能地避免、預防和定資源的合理分配演算法,避免進程永久占據系統資源。此外,也要防止進程在處於等待狀態的情況下佔用資源。因此,對資源的分配要給予合理的規劃。
G. 用友通軟體出現站點互斥怎麼辦
沒有定義項目大類說明你把這個會計科目設置了項目核算但是沒有在項目目錄裡面指定項目。下面的提示互斥是該操作時獨占式的就是說你在用這個的時候其他的電腦要退出來。還有一個原因可能是裡面已經鎖定了要在資料庫裡面刪掉一個東西。
具體的是哪張表我也不是記得很清楚。建議找下你們那的代理商。看這個提示是說你在設置時有其他用戶正在登陸並且在查項目明細賬,所以你在設置時必須所有用戶都退出(除了你自己)才可以。
用友T3提示站點互斥
用友T3模塊互斥問題
點擊銷售下面的業務范圍設置的時候,會出現互斥的站點,不能打開該選項。這是因為在打開銷售模塊的時候同時打開了其他的模塊造成。
1、登錄軟體以後,看看屏幕左邊那一列的模塊中,是否有模塊前面有淡藍色的小方塊,如果有的話就是開啟了那個模塊。
2、滑鼠右鍵點一下那個模塊,會出現注銷的按鈕,點擊注銷就可以了。3、如果以上的方法不能解決的話,可以到登陸「系統管理」依次操作:以admin的身份登入-視圖下面請出異常任務-清除異常單據。
注意:這些操作都是要在t3同時打開的情況下進行操作。
H. 用友U852速度超慢,經常出現互斥的現象
很正常,資料庫多了,跑不起來,互斥,可以找異常清除工具實
現
I. 我用java寫了一個網站,有對資料庫的讀與寫,怎麼實現這個網站的讀寫互斥與寫寫互斥
資料庫讀寫的程度,這是事務控制資料庫隔離裡面的內容。
建議你使用spring聲明式事務,並使用符合你的要求的事務隔離級別即可。
spring目前的提供支持的資料庫事務隔離級別有:
資料庫提供了四種事務隔離級別, 不同的隔離級別採用不同的鎖類開來實現.
在四種隔離級別中, Serializable的級別最高, Read Uncommited級別最低.
大多數資料庫的默認隔離級別為: Read Commited,如Sql Server , Oracle.
少數資料庫默認的隔離級別為Repeatable Read, 如MySQL InnoDB存儲引擎
即使是最低的級別,也不會出現 第一類 丟失 更新問題 .
Read Uncommited :讀未提交數據( 會出現臟讀,不可重復讀,幻讀 ,避免了 第一類丟失 更新 )
Read Commited :讀已提交的數據(會出現不可重復讀,幻讀)
Repeatable Read :可重復讀(會出現幻讀)
Serializable :串列化
J. ASP如何互斥訪問資料庫中的某個欄位
使用事務進行排它性操作
begin tran t1
sql語句
commit
或者使用鎖
select * from 表 with lock
淺談MS SQL鎖機制
http://www.pcvz.com/Program/Database/MSSql/MSSqlJQ/Program_64081_2.html