2011-02-28 67 views
4

我有很多事務正在進行,並希望獲得有關如何在當前數據庫中實現鎖定的信息。在零預算下,我的選擇限於mysql 5.5和postgres 9.0。比較數據庫和他們的鎖

有沒有比較鎖具的地方?

從文獻中我知道你可以擁有隻讀和讀寫鎖,並且處理鎖的一個好方法是阻止數據的路徑。這意味着阻止btree的一部分。但我無法找到關於這些數據庫如何工作的具體信息。

非常感謝。

回答

0

也許你會發現這本書很有用:在Microsoft SQL Server 2005內部:存儲引擎。閱讀章節「日誌和恢復」和「鎖定和併發」。本書中的許多信息都適用於當今的許多數據庫系統。這本書真的很好。

我建議你閱讀關於併發控制。您可以從Concurrency_control wiki開始尤其是部分|數據庫事務和ACID規則」

如果你想比較的鎖,我首先閱讀有關交易及有關事務隔離級別存在的問題

+0

非常感謝這個提示。我已經知道了這個知識(或者,如果沒有,我的旁邊就有一本awesom書),但我無法在這兩個數據庫中找到任何細節。我只需要一個空白列表什麼樣的鎖支持,不需要解釋... – 2011-02-28 18:23:44

2

這裏是一個概述。 PostgreSQL的

http://www.postgresql.org/docs/current/static/explicit-locking.html
http://www.postgresql.org/docs/current/static/locking-indexes.html

不知道你的意思是什麼「只讀鎖」,但在PostgreSQL的「鎖定」一個TABL的唯一途徑e被讀取的方式是使用ACCESS EXCLUSIVE模式手動鎖定它,這不會在常規DML語句中發生。只有DDL語句(如ALTER TABLE)才能實現此目的。

+0

你說的是有點模糊,因爲根據你的第一個鏈接'鎖表'可以「保證持有人是唯一的交易訪問表以任何方式「 - 我想你的意思是沒有行級鎖會阻止讀取? – 2011-02-28 21:31:24

+0

@JackPDouglas:你說得對。我指的是行級鎖。 – 2011-02-28 21:47:32

+0

下面是關於innodb表鎖定的MySQL手冊:http://dev.mysql.com/doc/refman/5.0/en/innodb-transaction-model.html請注意,myisam如何鎖定它在很大程度上沒有興趣,因爲它使用「一個大鎖定「方法。 對於PostgreSQL和Innodb鎖定,事務隔離級別非常重要,這引發了您對鎖定感興趣的問題嗎?性能,隔離,謂詞鎖定? – 2013-01-18 06:38:12