史萊姆論壇

返回   史萊姆論壇 > 專業主討論區 > 論壇程式討論區
忘記密碼?
論壇說明 標記討論區已讀

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


發文 回覆
 
主題工具 顯示模式
舊 2007-12-14, 03:37 PM   #1
Admin1
管理員
 
Admin1 的頭像
榮譽勳章
UID - 112827
在線等級: 級別:29 | 在線時長:972小時 | 升級還需:48小時級別:29 | 在線時長:972小時 | 升級還需:48小時級別:29 | 在線時長:972小時 | 升級還需:48小時級別:29 | 在線時長:972小時 | 升級還需:48小時級別:29 | 在線時長:972小時 | 升級還需:48小時級別:29 | 在線時長:972小時 | 升級還需:48小時級別:29 | 在線時長:972小時 | 升級還需:48小時級別:29 | 在線時長:972小時 | 升級還需:48小時級別:29 | 在線時長:972小時 | 升級還需:48小時
註冊日期: 2007-02-18
VIP期限: 0000-00
文章: 3507
精華: 0
現金: 1702 金幣
資產: 10196 金幣
預設 SQL - 03. 資料表的鎖定(Locking)

資料表的鎖定(Locking)


Lock可分為隱性與顯性二種:www-slime-com-tw
  • 隱性的Lock是由Server自動取得,例如當client執行SELECT操作時Server便會自動取得該tableREAD LOCK;當client執行INSERT操作時Server便會自動取得該tableWRITE LOCK。隱性LOCK的有效期限只限於單一Statement的執行期,一但該Statement的執行完畢系統便會自動釋放LOCK
  • 顯性的LOCK是由Client明確的以指令告知Server進行資料表的鎖定,例如client可以使用LOCK TABLESUNLOCK TABLES來鎖定或解除鎖定資料表,但要注意只有LOCK的擁有者才可以解除資料表的鎖定。若是鎖定tableclient解除鎖定前便斷線,則系統會自動解除資料表的鎖定。
LOCK的層級與支援的Storage Enginewww-slime-com-tw
  1. Table LockMyISAM, MEMORY, MERGE
  2. Page LockBDB
  3. Row LockInnoDB
要使用顯性LOCK必須要具備的權限:www-slime-com-tw
  1. LOCK TABLES
  2. SELECT (對所有被LOCKtable都要有SELECT權限)
LOCK的種類與效果:www-slime-com-tw
  • READ
    當某一client取得tableREAD LOCK後,其他的client仍然可以對該table進行讀取,但不能執行任何寫入的操作,就算是LOCK的擁有者也是只能讀、不能寫。可以由多個不同的client對同一個table同時進行READ LOCK
  • WRITE
    當某一client取得tableWRITE LOCK後,只有LOCK的擁有者可以對table進行讀取或寫入,其他的client皆無法對table進行讀取或寫入。只可以由單一client對同一個table進行WRITE LOCK
  • READ LOCAL
    READ LOCK效果相同,但是允許client進行INSERT操作,前提是使用的Storage Engine必須是MyISAM並且不能有holes(若是有holes則必需先對table進行最佳化)。若是使用在Storage Engine不為MyISAMtable或是tableholes,則效果等同於READ LOCK
  • LOW_PRIORITY WRITE
    當你要對table進行一般的WRITE LOCK時,若有其他client正在使用該table則你必須要等待其他client使用完畢後才可取得WRITE LOCK;若是在等待期間又有其他client打算讀取該table(取得READ LOCK),則要排隊在你的後面。若是使用LOW_PRIORITY WRITE LOCK,則在等待期間若有其他client打算讀取該table(取得READ LOCK),他們將會插隊到你的前面,也就是它們的優先權在你之上。
LOCKTransaction之間的交互影響:www-slime-com-tw
當執行START TRANSACTION時,系統會自動UNLOCK你所擁有的LOCK;當執行 LOCK TABLESUNLOCK TABLES時,系統會自動COMMITtransaction
Advisory Lockingwww-slime-com-tw
這嚴格說起來並不是一種真正的Lock機制,而是利用function來模擬Lock機制而已,它並沒有辦法強制禁止其他client存取被你LOCK住的table


常用的functionwww-slime-com-tw
  1. GET_LOCK
  2. RELEASE_LOCK
  3. IS_FREE_LCOK
  4. IS_USED_LOCK



參考資料:www^slime^com^tw
Paul Dubois, Stefan Hinz, Carsten Pedersen(2005), “MySQL 5.0 Certification Study Guide.”
Admin1 目前離線  
送花文章: 8870, 收花文章: 2195 篇, 收花: 5820 次
回覆時引用此帖
發文 回覆


主題工具
顯示模式

發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用

相似的主題
主題 主題作者 討論區 回覆 最後發表
access資料表中的資料類型問題 turnoff 一般電腦疑難討論區 0 2005-09-06 05:20 PM
鎖定服務資料庫 b096690 軟體應用問題討論區 10 2005-09-02 01:31 PM
如何使AUTOCAD圖檔內資料(材料表)轉換至EXCEL或WORD檔作統計 oldman53 軟體應用問題討論區 2 2004-08-08 11:15 PM


所有時間均為台北時間。現在的時間是 12:07 AM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.


SEO by vBSEO 3.6.1