0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

MySQL各存儲引擎使用了三種類型的鎖定機(jī)制

冬至子 ? 來源:后端元宇宙 ? 作者:binron ? 2022-11-17 14:09 ? 次閱讀

圖片

表級鎖、行級鎖、頁級鎖

數(shù)據(jù)庫鎖定機(jī)制簡單來說,就是數(shù)據(jù)庫為了保證數(shù)據(jù)的一致性,而使各種共享資源在被并發(fā)訪問變得有序所設(shè)計(jì)的一種規(guī)則。

MySQL數(shù)據(jù)庫由于其自身架構(gòu)的特點(diǎn),存在多種數(shù)據(jù)存儲引擎,每種存儲引擎的鎖定機(jī)制都是為各自所面對的特定場景而優(yōu)化設(shè)計(jì),所以各存儲引擎的鎖定機(jī)制也有較大區(qū)別。

MySQL各存儲引擎使用了三種類型(級別)的鎖定機(jī)制:表級鎖定行級鎖定頁級鎖定。

表級鎖

表級別的鎖定是MySQL各存儲引擎中最大顆粒度的鎖定機(jī)制。該鎖定機(jī)制最大的特點(diǎn)是實(shí)現(xiàn)邏輯非常簡單,帶來的系統(tǒng)負(fù)面影響最小。所以獲取鎖和釋放鎖的速度很快。

當(dāng)然,鎖定顆粒度大所帶來最大的負(fù)面影響就是出現(xiàn)鎖定資源爭用的概率也會最高,致使并發(fā)度大打折扣。

使用表級鎖定的主要是MyISAM,MEMORY,CSV等一些非事務(wù)性存儲引擎。

行級鎖

行級鎖定最大的特點(diǎn)就是鎖定對象的顆粒度很小,由于鎖定顆粒度很小,所以發(fā)生鎖定資源爭用的概率也最小,能夠給予應(yīng)用程序盡可能大的并發(fā)處理能力而提高一些需要高并發(fā)應(yīng)用系統(tǒng)的整體性能。

雖然能夠在并發(fā)處理能力上面有較大的優(yōu)勢,但是行級鎖定也因此帶來了不少弊端。

由于鎖定資源的顆粒度很小,所以每次獲取鎖和釋放鎖需要做的事情也更多,帶來的消耗自然也就更大了。此外,行級鎖定也最容易發(fā)生死鎖。

使用行級鎖定的主要是InnoDB存儲引擎

頁級鎖

頁級鎖定是MySQL中比較獨(dú)特的一種鎖定級別。頁級鎖定的特點(diǎn)是鎖定顆粒度介于行級鎖定與表級鎖之間,所以獲取鎖定所需要的資源開銷,以及所能提供的并發(fā)處理能力也同樣是介于上面二者之間。

使用頁級鎖定的主要是BerkeleyDB存儲引擎。

總結(jié)

總的來說,MySQL這3種鎖的特性可大致歸納如下:

表級鎖:開銷小,加鎖快;不會出現(xiàn)死鎖;鎖定粒度大,發(fā)生鎖沖突的概率最高,并發(fā)度最低;

行級鎖:開銷大,加鎖慢;會出現(xiàn)死鎖;鎖定粒度最小,發(fā)生鎖沖突的概率最低,并發(fā)度也最高;

頁面鎖:開銷和加鎖時間界于表鎖和行鎖之間;會出現(xiàn)死鎖;鎖定粒度界于表鎖和行鎖之間,并發(fā)度一般。

共享鎖、排它鎖

InnoDB 實(shí)現(xiàn)了標(biāo)準(zhǔn)的行級鎖,包括兩種:共享鎖(簡稱 s 鎖)、排它鎖(簡稱 x 鎖)。

對于共享鎖而言,對當(dāng)前行加共享鎖,不會阻塞其他事務(wù)對同一行的讀請求,但會阻塞對同一行的寫請求。只有當(dāng)讀鎖釋放后,才會執(zhí)行其它事物的寫操作。

對于排它鎖而言,會阻塞其他事務(wù)對同一行的讀和寫操作,只有當(dāng)寫鎖釋放后,才會執(zhí)行其它事務(wù)的讀寫操作。

圖片

簡而言之,就是

讀鎖會阻塞寫(X),但是不會堵塞讀(S)。而寫鎖則會把讀(S)和寫(X)都堵塞

對于InnoDB 在RR(MySQL默認(rèn)隔離級別) 而言,對于 update、delete 和 insert 語句, 會自動給涉及數(shù)據(jù)集加排它鎖(X);

對于普通 select 語句,innodb 不會加任何鎖。如果想在select操作的時候加上 S鎖 或者 X鎖,需要我們手動加鎖。

-- 加共享鎖(S)
select * from table_name where ... lock in share mode
-- 加排它鎖(X)
select * from table_name where ...
for update

用 select… in share mode 獲得共享鎖,主要用在需要數(shù)據(jù)依存關(guān)系時來確認(rèn)某行記錄是否存在,并確保沒有人對這個記錄進(jìn)行 update 或者 delete 操作。

但是如果當(dāng)前事務(wù)也需要對該記錄進(jìn)行更新操作,則有可能造成死鎖,對于鎖定行記錄后需要進(jìn)行更新操作的應(yīng)用,應(yīng)該使用 select… for update 方式獲得排他鎖。

記錄鎖(Record Locks)

記錄鎖其實(shí)很好理解,對表中的記錄加鎖,叫做記錄鎖,簡稱行鎖。比如

SELECT * FROM `test` WHERE `id`=1 FOR UPDATE;

它會在 id=1 的記錄上加上記錄鎖,以阻止其他事務(wù)插入,更新,刪除 id=1 這一行。

需要注意的是:

  • id 列必須為唯一索引列或主鍵列,否則上述語句加的鎖就會變成臨鍵鎖(有關(guān)臨鍵鎖下面會講)。
  • 同時查詢語句必須為精準(zhǔn)匹配(=),不能為 >、<、like等,否則也會退化成臨鍵鎖。

其他實(shí)現(xiàn)

在通過 主鍵索引 與 唯一索引 對數(shù)據(jù)行進(jìn)行 UPDATE 操作時,也會對該行數(shù)據(jù)加記錄鎖:

-- id 列為主鍵列或唯一索引列 
UPDATE SET age = 50 WHERE id = 1;

記錄鎖是鎖住記錄,鎖住索引記錄,而不是真正的數(shù)據(jù)記錄.

如果要鎖的列沒有索引,進(jìn)行全表記錄加鎖

記錄鎖也是排它(X)鎖,所以會阻塞其他事務(wù)對其插入、更新、刪除。

間隙鎖(Gap Locks)

間隙鎖 是 Innodb 在 RR(可重復(fù)讀) 隔離級別 下為了解決幻讀問題時引入的鎖機(jī)制。間隙鎖是innodb中行鎖的一種。

請務(wù)必牢記:使用間隙鎖鎖住的是一個區(qū)間,而不僅僅是這個區(qū)間中的每一條數(shù)據(jù)。

舉例來說,假如emp表中只有101條記錄,其empid的值分別是1,2,…,100,101,下面的SQL:

  SELECT * FROM emp WHERE empid > 100 FOR UPDATE

當(dāng)我們用條件檢索數(shù)據(jù),并請求共享或排他鎖時,InnoDB不僅會對符合條件的empid值為101的記錄加鎖,也會對empid大于101(這些記錄并不存在)的“間隙”加鎖。

這個時候如果你插入empid等于102的數(shù)據(jù)的,如果那邊事物還沒有提交,那你就會處于等待狀態(tài),無法插入數(shù)據(jù)。

有關(guān)間隙鎖所需講的東西還是蠻多的,我會單獨(dú)寫一篇文章來分析間隙鎖,并在文章中附上完整的示例。

臨鍵鎖(Next-Key Locks)

Next-key鎖是記錄鎖和間隙鎖的組合,它指的是加在某條記錄以及這條記錄前面間隙上的鎖。

也可以理解為一種特殊的間隙鎖。通過臨建鎖可以解決幻讀的問題。每個數(shù)據(jù)行上的非唯一索引列上都會存在一把臨鍵鎖,當(dāng)某個事務(wù)持有該數(shù)據(jù)行的臨鍵鎖時,會鎖住一段左開右閉區(qū)間的數(shù)據(jù)。

需要強(qiáng)調(diào)的一點(diǎn)是,InnoDB 中行級鎖是基于索引實(shí)現(xiàn)的,臨鍵鎖只與非唯一索引列有關(guān),在唯一索引列(包括主鍵列)上不存在臨鍵鎖

假設(shè)有如下表:id主鍵, age 普通索引

圖片

該表中 age 列潛在的臨鍵鎖有:

(-∞, 10],

(10, 24],

(24, 32],

(32, 45],

(45, +∞],

在事務(wù) A 中執(zhí)行如下命令:

-- 根據(jù)非唯一索引列 UPDATE 某條記錄 
UPDATE table SET name = Vladimir WHERE age = 24;
-- 或根據(jù)非唯一索引列 鎖住某條記錄
SELECT * FROM table WHERE age = 24
FOR UPDATE;

不管執(zhí)行了上述 SQL 中的哪一句,之后如果在事務(wù) B 中執(zhí)行以下命令,則該命令會被阻塞:

INSERT INTO table VALUES(100, 26, 'tianqi');

很明顯,事務(wù) A 在對 age 為 24 的列進(jìn)行 UPDATE 操作的同時,也獲取了 (10, 32] 這個區(qū)間內(nèi)的 臨鍵鎖 。

總結(jié)

這里對 記錄鎖、間隙鎖、臨鍵鎖 做一個總結(jié)

  • InnoDB 中的行鎖的實(shí)現(xiàn)依賴于索引,一旦某個加鎖操作沒有使用到索引,那么該鎖就會退化為表鎖。
  • 記錄鎖存在于包括主鍵索引在內(nèi)的唯一索引中,鎖定單條索引記錄。
  • 間隙鎖存在于非唯一索引中,鎖定開區(qū)間范圍內(nèi)的一段間隔,它是基于臨鍵鎖實(shí)現(xiàn)的。
  • 臨鍵鎖存在于非唯一索引中,該類型的每條記錄的索引上都存在這種鎖,它是一種特殊的間隙鎖,鎖定一段左開右閉的索引區(qū)間。

意向鎖

意向鎖也分為意向共享鎖(IS) 和 意向排他鎖(IX)

  • 意向共享(IS)鎖:事務(wù)有意向?qū)Ρ碇械哪承┬屑庸蚕礞i(S鎖)
-- 事務(wù)要獲取某些行的 S 鎖,必須先獲得表的 IS 鎖。
SELECT column FROM table ...
LOCK IN SHARE MODE;
  • 意向排他(IX)鎖:事務(wù)有意向?qū)Ρ碇械哪承┬屑优潘i(X鎖)
 -- 事務(wù)要獲取某些行的 X 鎖,必須先獲得表的 IX 鎖。
SELECT column FROM table ...
FOR UPDATE;

首先我們要明白四點(diǎn)

  • 意向共享鎖(IS)和 意向排他鎖(IX)都是表鎖。
  • 意向鎖是一種 不與行級鎖沖突的表級鎖,這一點(diǎn)非常重要。
  • 意向鎖是 InnoDB 自動加的, 不需用戶干預(yù)。
  • 意向鎖是在 InnoDB 下存在的內(nèi)部鎖,對于MyISAM 而言 沒有意向鎖之說。

這里就會有疑惑,既然前面已經(jīng)有了共享鎖(S鎖)、排它鎖(X鎖)。那么為什么需要引入意向鎖呢?它能解決什么問題呢?

我們可以理解 意向鎖 存在的目的就是 為了讓InnoDB 中的行鎖和表鎖更高效的共存。

為什么這么說,我們來舉一個例子。下面有一張表 id是主鍵

圖片

事務(wù) A 獲取了某一行的排他鎖,并未提交:

SELECT * FROM users WHERE id = 6 FOR UPDATE;

事務(wù) B 想要獲取users表的表鎖:

LOCK TABLES users READ;

因?yàn)楣蚕礞i與排他鎖互斥,所以事務(wù) B 在視圖對 users 表加共享鎖的時候,必須保證:

  • 當(dāng)前沒有其他事務(wù)持有 users 表的排他鎖。
  • 當(dāng)前沒有其他事務(wù)持有 users 表中任意一行的排他鎖 。

為了檢測是否滿足第二個條件,事務(wù) B 必須在確保users表不存在任何排他鎖的前提下,去檢測表中的每一行是否存在排他鎖。很明顯這是一個效率很差的做法,但是有了意向鎖之后,情況就不一樣了:事務(wù)B只要看表上有沒有意向共享鎖,有則說明表中有些行被共享行鎖鎖住了,因此,事務(wù)B申請表的寫鎖會被阻塞。這樣是不是就高效多了。

這也解釋就應(yīng)該清楚,為什么有意向鎖這個東西存在了。

我們可以舉個生活中的例子,再來理解下為什么需要存在意向鎖。

打個比方,就像有個游樂場,很多小朋友進(jìn)去玩,看門大爺如果要下班鎖游樂場的門(加表鎖),他必須確保每個角落都要去檢查一遍,確保每個小朋友都離開了(釋放行鎖),才可以鎖門。

假設(shè)鎖門是件頻繁發(fā)生的事情,大爺就會非常崩潰。那大爺想了一個辦法,每個小朋友進(jìn)入,就把自己的名字寫在本子上,小朋友離開,就把自己的名字劃掉,那大爺就能方便掌握有沒有小朋友在游樂場里,不必每個角落都去尋找一遍。例子中的“小本子”,就是意向鎖,他記錄的信息并不精細(xì),他只是提醒大爺,是否有人在屋里。

這里我們再來看下 共享(S)鎖、排他(X)鎖、意向共享鎖(IS)、意向排他鎖(IX)的兼容性

圖片

可以看出 意向鎖之間是互相兼容的.那你存在的意義是啥?

意向鎖不會為難意向鎖。也不會為難行級排他(X)/共享(X)鎖,它的存在是為難表級排他(X)/共享(X)鎖。

圖片

注意這里的排他(X)/共享(S)鎖指的都是表鎖!意向鎖不會與行級的共享/排他鎖互斥!

意向鎖與意向鎖之間永遠(yuǎn)是兼容的,因?yàn)楫?dāng)你不論加行級的X鎖或S鎖,都會自動獲取表級的IX鎖或者IS鎖。也就是你有10個事務(wù),對不同的10行加了行級X鎖,那么這個時候就存在10個IX鎖。

這10個IX存在的作用是啥呢,就是假如這個時候有個事務(wù),想對整個表加排它X鎖,那它不需要遍歷每一行是否存在S或X鎖,而是看有沒有存在 意向鎖 ,只要存在一個意向鎖,那這個事務(wù)就加不了表級排它(X)鎖,要等上面10個IX全部釋放才行。

插入意向鎖

在講解插入意向鎖之前,先來思考一個問題

下面有張表 id主鍵,age普通索引

圖片

首先事務(wù) A 插入了一行數(shù)據(jù),并且沒有 commit:

INSERT INTO users SELECT 4, 'Bill', 15;

隨后事務(wù) B 試圖插入一行數(shù)據(jù):

INSERT INTO users SELECT 5, 'Louis', 16;

請問:

1、事務(wù)A使用了什么鎖?

2、 事務(wù) B 是否會被事務(wù) A 阻塞?

插入意向鎖是在插入一條記錄行前,由 INSERT 操作產(chǎn)生的一種間隙鎖。

該鎖用以表示插入意向,當(dāng)多個事務(wù)在同一區(qū)間(gap)插入位置不同的多條數(shù)據(jù)時,事務(wù)之間不需要互相等待。

假設(shè)存在兩條值分別為 4 和 7 的記錄,兩個不同的事務(wù)分別試圖插入值為 5 和 6 的兩條記錄,每個事務(wù)在獲取插入行上獨(dú)占的(排他)鎖前,都會獲?。?,7]之間的間隙鎖,但是因?yàn)閿?shù)據(jù)行之間并不沖突,所以兩個事務(wù)之間并不會產(chǎn)生沖突(阻塞等待)。

總結(jié)來說,插入意向鎖 的特性可以分成兩部分:

  • 插入意向鎖是一種特殊的間隙鎖 —— 間隙鎖可以鎖定開區(qū)間內(nèi)的部分記錄。
  • 插入意向鎖之間互不排斥,所以即使多個事務(wù)在同一區(qū)間插入多條記錄,只要記錄本身(主鍵、唯一索引)不沖突,那么事務(wù)之間就不會出現(xiàn)沖突等待。

雖然插入意向鎖中含有意向鎖三個字,但是它并不屬于意向鎖而屬于間隙鎖,因?yàn)橐庀蜴i是表鎖而插入意向鎖是行鎖。

現(xiàn)在我們可以回答開頭的問題了:

1、 使用插入意向鎖與記錄鎖。

2、事務(wù) A 不會阻塞事務(wù) B。

為什么不用間隙鎖

如果只是使用普通的間隙鎖會怎么樣呢?我們在看事務(wù)A,其實(shí)它一共獲取了3把鎖

  • id 為 4 的記錄行的記錄鎖。
  • age 區(qū)間在(10,15] 的間隙鎖。
  • age 區(qū)間在(15,20] 的間隙鎖。

最終,事務(wù) A 插入了該行數(shù)據(jù),并鎖住了(10,20] 這個區(qū)間。

隨后事務(wù) B 試圖插入一行數(shù)據(jù):

INSERT INTO users SELECT 5, 'Louis', 16;

因?yàn)?16 位于(15,20] 區(qū)間內(nèi),而該區(qū)間內(nèi)又存在一把間隙鎖,所以事務(wù) B 別說想申請自己的間隙鎖了,它甚至不能獲取該行的記錄鎖,自然只能乖乖的等待 事務(wù) A結(jié)束,才能執(zhí)行插入操作。

很明顯,這樣做事務(wù)之間將會頻發(fā)陷入阻塞等待,插入的并發(fā)性非常之差。這時如果我們再去回想我們剛剛講過的插入意向鎖,就不難發(fā)現(xiàn)它是如何優(yōu)雅的解決了并發(fā)插入的問題。

總結(jié)

InnoDB在RR的事務(wù)隔離級別下,使用插入意向鎖來控制和解決并發(fā)插入。
插入意向鎖是一種特殊的間隙鎖。
插入意向鎖在鎖定區(qū)間相同但記錄行本身不沖突的情況下互不排斥。

審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • MYSQL數(shù)據(jù)庫
    +關(guān)注

    關(guān)注

    0

    文章

    95

    瀏覽量

    9372
  • csv
    csv
    +關(guān)注

    關(guān)注

    0

    文章

    38

    瀏覽量

    5793
收藏 人收藏

    評論

    相關(guān)推薦

    protel *** 一個庫安裝了三種類型的,怎么回事?

    本帖最后由 pqwlkh 于 2012-11-28 10:15 編輯 protel *** 一個庫安裝了三種類型的,怎么回事?
    發(fā)表于 11-28 09:59

    mysql存儲引擎選擇方法

    mysql怎么選擇合適的存儲引擎
    發(fā)表于 08-08 07:26

    三種類型的復(fù)位

    00. 目錄文章目錄00. 目錄01. 概述02. 系統(tǒng)復(fù)位03. 電源復(fù)位04. 備份域復(fù)位05. 預(yù)留06. 附錄07. 聲明01. 概述共有三種類型的復(fù)位,分別為系統(tǒng)復(fù)位、電源復(fù)位和備份域復(fù)位
    發(fā)表于 07-23 06:10

    MySQL存儲引擎簡析

    MySQL存儲引擎InnoDB??InnoDB 的存儲文件有兩個,后綴名分別是.frm和.idb,其中.frm是表的定義文件,而.idb是數(shù)據(jù)文件。InnoDB 中存在表鎖和行鎖,不過
    發(fā)表于 09-06 06:07

    三種類型的軸承數(shù)據(jù)

    參見相關(guān)說明,或者參見其他帖子。然后下載其中某一個類別的某一個故障數(shù)據(jù)文件后,文件類型是.mat格式,可以使用MATLAB打開,打開后發(fā)現(xiàn)里面又區(qū)分了三種類型的數(shù)據(jù),如上圖,這里不太清楚為什么在已...
    發(fā)表于 09-08 06:32

    AVR系列單片機(jī)內(nèi)部有三種類型的被獨(dú)立編址的存儲

    AVR 系列單片機(jī)內(nèi)部有三種類型的被獨(dú)立編址的存儲器,它們分別為:Flash 程序存儲器、內(nèi)部SRAM 數(shù)據(jù)存儲器和EEPROM 數(shù)據(jù)存儲
    發(fā)表于 11-23 08:22

    編譯的三種類型是什么?

    編譯的三種類型是什么?ARM_Linux制作嵌入式遠(yuǎn)程調(diào)試工具
    發(fā)表于 12-24 06:42

    怎樣選擇存儲引擎MySQL存儲引擎怎么樣?

    MySQL是我們經(jīng)常使用的數(shù)據(jù)庫處理系統(tǒng)(DBMS),不知小伙伴們有沒有注意過其中的“存儲引擎”(storage_engine)呢?有時候面試題中也會問道MySQL幾種常用的
    的頭像 發(fā)表于 09-02 10:15 ?4657次閱讀

    Keil C51的內(nèi)存模型有哪些?三種類型的內(nèi)存模型詳細(xì)說明

    Keil C51編譯器提供三種類型的內(nèi)存模型:small,compact,large。內(nèi)存模型決定了函數(shù)參數(shù)、自動變量以及未顯式聲明存儲類型情況下的默認(rèn)存儲
    發(fā)表于 09-09 17:26 ?2次下載
    Keil C51的內(nèi)存模型有哪些?<b class='flag-5'>三種類型</b>的內(nèi)存模型詳細(xì)說明

    關(guān)于mysql存儲引擎你知道多少

    Mysql中用的最多的兩存儲引擎就是MyISAM和InnDB,其中MyISAM是5.1版本之前的默認(rèn)存儲
    發(fā)表于 08-23 10:52 ?830次閱讀

    氣動氣缸的類型之氣缸的三種種類類型說明

    氣動氣缸的類型(氣缸的三種種類類型)-藤倉自動化 氣動氣缸最常用于工程和制造行業(yè),通過加壓氣體的積聚來產(chǎn)生運(yùn)動。當(dāng)然,您需要的氣缸類型會因具體應(yīng)用和行業(yè)而異。圓柱體也俗稱圓柱體;由于儀
    發(fā)表于 08-05 17:31 ?7130次閱讀

    有哪些不同的MySQL數(shù)據(jù)庫引擎?

    數(shù)據(jù)庫引擎MySQL組件,可以處理SQL操作,例如從數(shù)據(jù)庫創(chuàng)建、讀取和更新數(shù)據(jù)。MySQL中有兩種類型引擎:事務(wù)性和非事務(wù)性。
    的頭像 發(fā)表于 04-03 16:38 ?1079次閱讀

    MySQL三種日志講解

    MySQL 日志包含了錯誤日志、查詢?nèi)罩尽⒙樵內(nèi)罩?、事?wù)日志、二進(jìn)制日志等,如果存儲引擎使用的是 InnoDB ,二進(jìn)制日志(binlog)和事務(wù)日志(包括redo log和undo log) 是肯定繞不過去的,本篇接下來詳細(xì)
    的頭像 發(fā)表于 07-25 11:15 ?689次閱讀
    <b class='flag-5'>MySQL</b><b class='flag-5'>三種</b>日志講解

    常見的socket三種類型

    常見的socket三種類型? Socket是計(jì)算機(jī)網(wǎng)絡(luò)中常用的通信機(jī)制,在網(wǎng)絡(luò)編程中起到了非常重要的作用。Socket可以分為三種類型:流套接字(Stream Socket)、數(shù)據(jù)報(bào)套接字
    的頭像 發(fā)表于 12-08 11:18 ?2243次閱讀

    雷達(dá)的種類有哪三種類型

    雷達(dá)是一利用電磁波進(jìn)行目標(biāo)探測和跟蹤的設(shè)備。它在軍事、航空、海洋、天文和氣象等領(lǐng)域具有廣泛的應(yīng)用。雷達(dá)的種類可以按照不同的分類方式進(jìn)行劃分。在本文中,我們將按照雷達(dá)的工作方式,將雷達(dá)分為三種類型
    的頭像 發(fā)表于 12-21 11:38 ?4987次閱讀