解決資料庫讀和寫死鎖的異常

2021-05-21 19:43:05 字數 496 閱讀 6784

本人正在開發的乙個專案是gprs的資料傳輸伺服器,需要將近1000個客戶端連線服務端,使用者需要傳送的指令全部儲存入資料庫表中,由於客戶端(ado.net)和服務端(ado)是採用不同的語言開發。讀取指令的時候應該是沒有什麼問題,但是當指令操作完成後把狀態資訊儲存入資料庫表中的時候,發生了錯誤現象。由於我設計指令的時候是採用兩張表,因此需要用到sql的事務,當在大資料量處理的時候,出現了資料庫級的死鎖現象,導致整個伺服器端軟體死鎖,為此,本人模擬客戶端128個同時連線。然後用客戶端傳送指令,服務端讀取,結果客戶端的連線出現問題。查閱sql的資料以後發現nolock 和 readpast

可以幫助我解決這個問題。

nolock 和 readpast 都是處理查詢、插入、刪除等操作時候,如何應對鎖住的資料記錄。

nolock  可能把沒有提交事務的資料也顯示出來.

readpast 會把被鎖住的行不顯示出來 

由於我的業務對於資料的顯示要求不是很高,為此我採用readpast。也就是說不讀取鎖住的行。

oracle資料庫死鎖解決

進入oracle使用者 su oracle 進入dba模式 sqlplus as sysdba 1.查詢被鎖的情況 select object name,machine,s.sid,s.serial from v locked object l,dba objects o v session s w...

資料庫寫多讀少和讀多寫少會怎麼處理?

3,雙主互備 防止單點主庫宕機,引起寫資料出現問題,採取雙主互備模式,其實跟主從相比就是反過來再做了一遍主從!都為主,都為從的意思!4,分庫分表 資料庫資料量過大的時候,單庫甚至讀寫分離都已經成為高併發的瓶頸,這個時候採取一定的策略將資料分布在不同的資料庫上是最好的選擇,比如搭建8庫128表,能充分...

資料庫死鎖解決方案

一 活鎖 如果事務t1封鎖了資料r,事務t2又請求封鎖r,於是t2等待。t3也請求封鎖r,當t1釋放了r上的封鎖之後系統首先批准了t3的請求,t2仍然等待。然後t4又請求封鎖r,當t3釋放了r上的封鎖之後系統又批准了t4的請求,t2有可能永遠等待,這就是活鎖的情形。避免活鎖的簡單方法是採用先來先服務...