2011-09-17 27 views
1

我需要一個數據庫級別的同步。爲此,我使用GET_LOCK('prefix.some_id',0)。 在某些時候,GET_LOCK在不同主機上的不同腳本中爲同一個鍵返回1。可能是什麼問題呢?我需要大量的鎖,約5-7k。MySQL:GET_LOCK限制和問題

任何想法?

回答

2

按照documentation,你無法通過GET_LOCK()持有每個連接多個鎖(強調):

如果你有GET_LOCK()獲得的鎖,它被釋放當你執行RELEASE_LOCK(),執行一個新的GET_LOCK(),或者連接終止(正常或非正常)

由於丹尼爾張貼,有這個功能feature request,但它是在2003年沒有任何活動提交。

根據您的使用情況,您可能能夠使用MySQL的表或行級鎖定來實現您想要的。

+0

更新「在5.7.5之前,只能獲得一個同時發生的鎖,並且GET_LOCK()會釋放任何現有的鎖。」 「在MySQL 5.7.5中,....可以獲取多個同時鎖。」 –