偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

MySQL鎖表簡(jiǎn)介

數(shù)據(jù)庫(kù) MySQL
為了能有快速的鎖,MySQL除了InnoDB和BDB這兩種存儲(chǔ)引擎外,所有的都是用表級(jí)鎖,但是表鎖也其一定的局限性。

MySQL鎖表相信大家都不陌生,下面就為您介紹一些和MySQL鎖表方面的知識(shí),供您參考,如果您對(duì)MySQL鎖表方面感興趣的話,不妨一看。

MySQL鎖表

為了能有快速的鎖,MySQL除了InnoDB 和 BDB 這兩種存儲(chǔ)引擎外,所有的都是用表級(jí)鎖(而非頁(yè)、行、列級(jí)鎖)。

對(duì)于InnoDB和BDB 表,MySQL只有在指定用 LOCK TABLES 鎖表時(shí)才使用表級(jí)鎖。在這兩種表中,建議***不要使用 LOCK TABLES,因?yàn)镮nnoDB自動(dòng)采用行級(jí)鎖,BDB 用頁(yè)級(jí)鎖來保證事務(wù)的隔離。
如果數(shù)據(jù)表很大,那么在大多數(shù)應(yīng)用中表級(jí)鎖會(huì)比行級(jí)鎖好多了,不過這有一些陷阱。
表級(jí)鎖讓很多線程可以同時(shí)從數(shù)據(jù)表中讀取數(shù)據(jù),但是如果另一個(gè)線程想要寫數(shù)據(jù)的話,就必須要先取得排他訪問。正在更新數(shù)據(jù)時(shí),必須要等到更新完成了,其他線程才能訪問這個(gè)表。
更新操作通常認(rèn)為比讀取更重要,因此它的優(yōu)先級(jí)更高。不過***要先確認(rèn),數(shù)據(jù)表是否有很高的 Select 操作,而更新操作并非很‘急需’。
表鎖在一個(gè)線程在等待,因?yàn)榇疟P空間滿了,但是卻需要有空余的磁盤空間,這個(gè)線程才能繼續(xù)處理時(shí)就有問題了。這種情況下,所有要訪問這個(gè)出問題的表的線程都會(huì)被置為等待狀態(tài),直到有剩余磁盤空間了。

表鎖在以下設(shè)想情況中就不利了:
一個(gè)客戶端提交了一個(gè)需要長(zhǎng)時(shí)間運(yùn)行的 Select 操作。
其他客戶端對(duì)同一個(gè)表提交了 Update 操作,這個(gè)客戶端就要等到 Select 完成了才能開始執(zhí)行。
其他客戶端也對(duì)同一個(gè)表提交了 Select 請(qǐng)求。由于 Update 的優(yōu)先級(jí)高于 Select,所以 Select 就會(huì)先等到 Update 完成了之后才開始執(zhí)行,它也在等待***個(gè) Select 操作。

下列所述可以減少表鎖帶來的資源爭(zhēng)奪:
讓 Select 速度盡量快,這可能需要?jiǎng)?chuàng)建一些摘要表。
啟動(dòng) mysqld 時(shí)使用參數(shù) --low-priority-updates。這就會(huì)讓更新操作的優(yōu)先級(jí)低于 Select。這種情況下,在上面的假設(shè)中,第二個(gè) Select 就會(huì)在 Insert 之前執(zhí)行了,而且也無需等待***個(gè)Select 了。
可以執(zhí)行 SET LOW_PRIORITY_UpdateS=1 命令,指定所有的更新操作都放到一個(gè)指定的鏈接中去完成。詳情請(qǐng)看“14.5.3.1 SET Syntax”。
用 LOW_PRIORITY 屬性來降低 Insert,Update,Delete 的優(yōu)先級(jí)。
用 HIGH_PRIORITY 來提高 Select 語(yǔ)句的優(yōu)先級(jí)。詳情請(qǐng)看“14.1.7 Select Syntax”。
從MySQL 3.23.7 開始,可以在啟動(dòng) mysqld 時(shí)指定系統(tǒng)變量 max_write_lock_count 為一個(gè)比較低的值,它能強(qiáng)制臨時(shí)地提高表的插入數(shù)達(dá)到一個(gè)特定值后的所有 Select 操作的優(yōu)先級(jí)。它允許在 WRITE 鎖達(dá)到一定數(shù)量后有 READ 鎖。
當(dāng) Insert 和 Select 一起使用出現(xiàn)問題時(shí),可以轉(zhuǎn)而采用 MyISAM 表,它支持并發(fā)的Select 和 Insert 操作。
當(dāng)在同一個(gè)表上同時(shí)有插入和刪除操作時(shí),Insert DELAYED 可能會(huì)很有用。詳情請(qǐng)看“14.1.4.2 Insert DELAYED Syntax”。
當(dāng) Select 和 Delete 一起使用出現(xiàn)問題時(shí),Delete 的 LIMIT 參數(shù)可能會(huì)很有用。詳情請(qǐng)看“14.1.1 Delete Syntax”
執(zhí)行 Select 時(shí)使用 SQL_BUFFER_RESULT 有助于減短鎖表的持續(xù)時(shí)間.詳情請(qǐng)看“14.1.7 Select Syntax”。
可以修改源代碼 `mysys/thr_lock.c',只用一個(gè)所隊(duì)列。這種情況下,寫鎖和讀鎖的優(yōu)先級(jí)就一樣了,這對(duì)一些應(yīng)用可能有幫助。

以下是MySQL鎖的一些建議:
只要對(duì)同一個(gè)表沒有大量的更新和查詢操作混在一起,目前的用戶并不是問題。
執(zhí)行 LOCK TABLES 來提高速度(很多更新操作放在一個(gè)鎖之中比沒有鎖的很多更新快多了)。將數(shù)據(jù)拆分開到多個(gè)表中可能也有幫助。
當(dāng)MySQL碰到由于鎖表引起的速度問題時(shí),將表類型轉(zhuǎn)換成InnoDB或 BDB 可能有助于提高性能。 

 

 

【編輯推薦】

詳解MySQL數(shù)據(jù)表類型

MySQL字段中的枚舉

詳解MySQL外鍵設(shè)置

MySQL添加字段和刪除字段

深入探討MySQL鎖機(jī)制

 

責(zé)任編輯:段燃 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-08-18 16:30:10

Oracle鎖表查詢kill進(jìn)程

2024-11-29 07:38:12

MySQL數(shù)據(jù)庫(kù)

2025-02-10 09:58:48

2024-03-04 00:01:00

鎖表鎖行MySQL

2020-10-20 13:50:47

MySQL數(shù)據(jù)庫(kù)

2010-05-24 12:50:59

MySQL表級(jí)鎖

2022-10-24 00:33:59

MySQL全局鎖行級(jí)鎖

2018-07-31 10:10:06

MySQLInnoDB死鎖

2024-04-10 14:27:03

MySQL數(shù)據(jù)庫(kù)

2022-07-20 08:06:57

MySQL表鎖Innodb

2011-03-30 13:44:45

MySQL數(shù)據(jù)庫(kù)鎖機(jī)制

2010-10-14 16:18:21

MySQL表鎖情況

2024-11-13 15:29:08

MySQL技術(shù)索引

2010-05-31 15:49:29

MySQL臨時(shí)表

2021-06-26 08:09:21

MySQL不停機(jī)不鎖表

2024-10-08 09:35:23

2010-11-19 16:03:20

Oracle分析表

2023-11-06 08:35:08

表鎖行鎖間隙鎖

2021-07-07 10:45:20

MySQL表級(jí)鎖MyISAM

2020-02-06 10:02:45

MySQL數(shù)據(jù)庫(kù)全局鎖
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)