色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

在Repeatable Read的隔離級(jí)別下使用select for update可能引發(fā)的死鎖問題

數(shù)據(jù)分析與開發(fā) ? 來源:數(shù)據(jù)分析與開發(fā) ? 作者:數(shù)據(jù)分析與開發(fā) ? 2020-09-24 15:47 ? 次閱讀

本文針對(duì)MySQL InnoDB中在Repeatable Read的隔離級(jí)別下使用select for update可能引發(fā)的死鎖問題進(jìn)行分析。

1. 業(yè)務(wù)案例

業(yè)務(wù)中需要對(duì)各種類型的實(shí)體進(jìn)行編號(hào),例如對(duì)于x類實(shí)體的編號(hào)可能是x201712120001,x201712120002,x201712120003類似于這樣。可以觀察到這類編號(hào)有兩個(gè)部分組成:x+日期作為前綴,以及流水號(hào)(這里是四位的流水號(hào))。

如果用數(shù)據(jù)庫表實(shí)現(xiàn)一個(gè)能夠分配流水號(hào)的需求,無外乎就可以建立一個(gè)類似于下面的表:

CREATETABLEnumber ( prefix VARCHAR(20) NOTNULLDEFAULT''COMMENT'前綴碼', valueBIGINTNOTNULLDEFAULT0COMMENT'流水號(hào)', UNIQUEKEY uk_prefix(prefix) );

那么在業(yè)務(wù)層,根據(jù)業(yè)務(wù)規(guī)則得到編號(hào)的前綴比如x20171212,接下去就可以在代碼中起事務(wù),用select for update進(jìn)行如下的控制。

@Transactional long acquire(String prefix) { SerialNumber current = dao.selectAndLock(prefix); if (current == null) { dao.insert(new Record(prefix, 1)); return1; } else { current.number++; dao.update(current); return current.number; } }

這段代碼做的事情其實(shí)就是加鎖篩選,有則更新,無則插入,然而在Repeatable Read的隔離級(jí)別下這段代碼是有潛在死鎖問題的。(另一處與事務(wù)傳播行為相關(guān)的問題也會(huì)在下文提及)。

2. 分析與解決

當(dāng)可以通過select for update的where條件篩出記錄時(shí),上面的代碼是不會(huì)有deadlock問題的。然而當(dāng)select for update中的where條件無法篩選出記錄時(shí),這時(shí)在有多個(gè)線程執(zhí)行上面的acquire方法時(shí)是可能會(huì)出現(xiàn)死鎖的。

2.1 一個(gè)簡(jiǎn)單的復(fù)現(xiàn)場(chǎng)景

下面通過一個(gè)比較簡(jiǎn)單的例子復(fù)現(xiàn)一下這個(gè)場(chǎng)景首先給表里初始化3條數(shù)據(jù)。

insertintonumberselect'bbb',2; insertintonumberselect'hhh',8; insertintonumberselect'yyy',25;

接著按照如下的時(shí)序進(jìn)行操作:

session 1 session 2
begin;
begin;
select * from number where prefix='ddd' for update;
select * from number where prefix='fff' for update
insert into number select 'ddd',1
鎖等待中 insert into number select 'fff',1
鎖等待解除 死鎖,session 2的事務(wù)被回滾

2.2 分析下這個(gè)死鎖

通過查看show engine innodb status的信息,我們慢慢地觀察每一步的情況:

2.2.1 session1做了select for update

------------TRANSACTIONS------------Trx id counter 238435Purge done for trx's n:o < 238430 undo n:o < 0 state: running but idleHistory list length 13LIST OF TRANSACTIONS FOR EACH SESSION:---TRANSACTION 281479459589696, not started0 lock struct(s), heap size 1136, 0 row lock(s)---TRANSACTION 281479459588792, not started0 lock struct(s), heap size 1136, 0 row lock(s)---TRANSACTION 238434, ACTIVE 3 sec2 lock struct(s), heap size 1136, 1 row lock(s)MySQL thread id 160, OS thread handle 123145573965824, query id 69153 localhost rootTABLE LOCK table?test.number?trx id 238434 lock mode IXRECORD LOCKS space id 1506 page no 3 n bits 80 index uk_prefix of table?test.number?trx id 238434 lock_mode X locks gap before recRecord lock, heap no 3 PHYSICAL RECORD: n_fields 4; compact format; info bits 00: len 3; hex 686868; asc hhh;;1: len 6; hex 00000003a350; asc P;;2: len 7; hex d2000001ff0110; asc ;;3: len 8; hex 8000000000000008; asc ;;

事務(wù)238434拿到了hhh前的gap鎖,也就是('bbb', 'hhh')的gap鎖。

2.2.2 session2做了select for update

------------TRANSACTIONS------------Trx id counter 238436Purge done for trx's n:o < 238430 undo n:o < 0 state: running but idleHistory list length 13LIST OF TRANSACTIONS FOR EACH SESSION:---TRANSACTION 281479459589696, not started0 lock struct(s), heap size 1136, 0 row lock(s)---TRANSACTION 238435, ACTIVE 3 sec2 lock struct(s), heap size 1136, 1 row lock(s)MySQL thread id 161, OS thread handle 123145573408768, query id 69155 localhost rootTABLE LOCK table?test.number?trx id 238435 lock mode IXRECORD LOCKS space id 1506 page no 3 n bits 80 index uk_prefix of table?test.number?trx id 238435 lock_mode X locks gap before recRecord lock, heap no 3 PHYSICAL RECORD: n_fields 4; compact format; info bits 00: len 3; hex 686868; asc hhh;;1: len 6; hex 00000003a350; asc P;;2: len 7; hex d2000001ff0110; asc ;;3: len 8; hex 8000000000000008; asc ;;---TRANSACTION 238434, ACTIVE 30 sec2 lock struct(s), heap size 1136, 1 row lock(s)MySQL thread id 160, OS thread handle 123145573965824, query id 69153 localhost rootTABLE LOCK table?test.number?trx id 238434 lock mode IXRECORD LOCKS space id 1506 page no 3 n bits 80 index uk_prefix of table?test.number?trx id 238434 lock_mode X locks gap before recRecord lock, heap no 3 PHYSICAL RECORD: n_fields 4; compact format; info bits 00: len 3; hex 686868; asc hhh;;1: len 6; hex 00000003a350; asc P;;2: len 7; hex d2000001ff0110; asc ;;3: len 8; hex 8000000000000008; asc ;;

事務(wù)238435也拿到了hhh前的gap鎖。

截自InnoDB的lock_rec_has_to_wait方法實(shí)現(xiàn),可以看到的LOCK_GAP類型的鎖只要不帶有插入意向標(biāo)識(shí),不必等待其它鎖(表鎖除外)

2.2.3 session1嘗試insert

------------TRANSACTIONS------------Trx id counter 238436Purge done for trx's n:o < 238430 undo n:o < 0 state: running but idleHistory list length 13LIST OF TRANSACTIONS FOR EACH SESSION:---TRANSACTION 281479459589696, not started0 lock struct(s), heap size 1136, 0 row lock(s)---TRANSACTION 238435, ACTIVE 28 sec2 lock struct(s), heap size 1136, 1 row lock(s)MySQL thread id 161, OS thread handle 123145573408768, query id 69155 localhost rootTABLE LOCK table?test.number?trx id 238435 lock mode IXRECORD LOCKS space id 1506 page no 3 n bits 80 index uk_prefix of table?test.number?trx id 238435 lock_mode X locks gap before recRecord lock, heap no 3 PHYSICAL RECORD: n_fields 4; compact format; info bits 00: len 3; hex 686868; asc hhh;;1: len 6; hex 00000003a350; asc P;;2: len 7; hex d2000001ff0110; asc ;;3: len 8; hex 8000000000000008; asc ;;---TRANSACTION 238434, ACTIVE 55 sec insertingmysql tables in use 1, locked 1LOCK WAIT 3 lock struct(s), heap size 1136, 2 row lock(s)MySQL thread id 160, OS thread handle 123145573965824, query id 69157 localhost root executinginsert into number select 'ddd',1------- TRX HAS BEEN WAITING 2 SEC FOR THIS LOCK TO BE GRANTED:RECORD LOCKS space id 1506 page no 3 n bits 80 index uk_prefix of table?test.number?trx id 238434 lock_mode X locks gap before rec insert intention waitingRecord lock, heap no 3 PHYSICAL RECORD: n_fields 4; compact format; info bits 00: len 3; hex 686868; asc hhh;;1: len 6; hex 00000003a350; asc P;;2: len 7; hex d2000001ff0110; asc ;;3: len 8; hex 8000000000000008; asc ;;

TABLE LOCK tabletest.numbertrx id 238434 lock mode IXRECORD LOCKS space id 1506 page no 3 n bits 80 index uk_prefix of tabletest.numbertrx id 238434 lock_mode X locks gap before recRecord lock, heap no 3 PHYSICAL RECORD: n_fields 4; compact format; info bits 00: len 3; hex 686868; asc hhh;;1: len 6; hex 00000003a350; asc P;;2: len 7; hex d2000001ff0110; asc ;;3: len 8; hex 8000000000000008; asc ;;RECORD LOCKS space id 1506 page no 3 n bits 80 index uk_prefix of tabletest.numbertrx id 238434 lock_mode X locks gap before rec insert intention waitingRecord lock, heap no 3 PHYSICAL RECORD: n_fields 4; compact format; info bits 00: len 3; hex 686868; asc hhh;;1: len 6; hex 00000003a350; asc P;;2: len 7; hex d2000001ff0110; asc ;;3: len 8; hex 8000000000000008; asc ;;

可以看到,這時(shí)候事務(wù)238434在嘗試插入'ddd',1時(shí),由于發(fā)現(xiàn)其他事務(wù)(238435)已經(jīng)有這個(gè)區(qū)間的gap鎖,因此innodb給事務(wù)238434上了插入意向鎖,鎖的模式為L(zhǎng)OCK_X | LOCK_GAP | LOCK_INSERT_INTENTION,等待事務(wù)238435釋放掉gap鎖。

截取自InnoDB的lock_rec_insert_check_and_lock方法實(shí)現(xiàn)

2.2.4 session2嘗試insert

------------------------LATEST DETECTED DEADLOCK------------------------2017-12-21 2240 0x70001028a000*** (1) TRANSACTION:TRANSACTION 238434, ACTIVE 81 sec insertingmysql tables in use 1, locked 1LOCK WAIT 3 lock struct(s), heap size 1136, 2 row lock(s)MySQL thread id 160, OS thread handle 123145573965824, query id 69157 localhost root executinginsert into number select 'ddd',1*** (1) WAITING FOR THIS LOCK TO BE GRANTED:RECORD LOCKS space id 1506 page no 3 n bits 80 index uk_prefix of tabletest.numbertrx id 238434 lock_mode X locks gap before rec insert intention waitingRecord lock, heap no 3 PHYSICAL RECORD: n_fields 4; compact format; info bits 00: len 3; hex 686868; asc hhh;;1: len 6; hex 00000003a350; asc P;;2: len 7; hex d2000001ff0110; asc ;;3: len 8; hex 8000000000000008; asc ;;*** (2) TRANSACTION:TRANSACTION 238435, ACTIVE 54 sec insertingmysql tables in use 1, locked 13 lock struct(s), heap size 1136, 2 row lock(s)MySQL thread id 161, OS thread handle 123145573408768, query id 69159 localhost root executinginsert into number select 'fff',1*** (2) HOLDS THE LOCK(S):RECORD LOCKS space id 1506 page no 3 n bits 80 index uk_prefix of tabletest.numbertrx id 238435 lock_mode X locks gap before recRecord lock, heap no 3 PHYSICAL RECORD: n_fields 4; compact format; info bits 00: len 3; hex 686868; asc hhh;;1: len 6; hex 00000003a350; asc P;;2: len 7; hex d2000001ff0110; asc ;;3: len 8; hex 8000000000000008; asc ;;*** (2) WAITING FOR THIS LOCK TO BE GRANTED:RECORD LOCKS space id 1506 page no 3 n bits 80 index uk_prefix of tabletest.numbertrx id 238435 lock_mode X locks gap before rec insert intention waitingRecord lock, heap no 3 PHYSICAL RECORD: n_fields 4; compact format; info bits 00: len 3; hex 686868; asc hhh;;1: len 6; hex 00000003a350; asc P;;2: len 7; hex d2000001ff0110; asc ;;3: len 8; hex 8000000000000008; asc ;;*** WE ROLL BACK TRANSACTION (2)

TRANSACTIONS

Trx id counter 238436Purge done for trx's n:o < 238430 undo n:o < 0 state: running but idleHistory list length 13LIST OF TRANSACTIONS FOR EACH SESSION:---TRANSACTION 281479459589696, not started0 lock struct(s), heap size 1136, 0 row lock(s)---TRANSACTION 281479459588792, not started0 lock struct(s), heap size 1136, 0 row lock(s)---TRANSACTION 238434, ACTIVE 84 sec3 lock struct(s), heap size 1136, 3 row lock(s), undo log entries 1MySQL thread id 160, OS thread handle 123145573965824, query id 69157 localhost rootTABLE LOCK table?test.number?trx id 238434 lock mode IXRECORD LOCKS space id 1506 page no 3 n bits 80 index uk_prefix of table?test.number?trx id 238434 lock_mode X locks gap before recRecord lock, heap no 3 PHYSICAL RECORD: n_fields 4; compact format; info bits 00: len 3; hex 686868; asc hhh;;1: len 6; hex 00000003a350; asc P;;2: len 7; hex d2000001ff0110; asc ;;3: len 8; hex 8000000000000008; asc ;;Record lock, heap no 7 PHYSICAL RECORD: n_fields 4; compact format; info bits 00: len 3; hex 646464; asc ddd;;1: len 6; hex 00000003a362; asc b;;2: len 7; hex de000001e60110; asc ;;3: len 8; hex 8000000000000001; asc ;;RECORD LOCKS space id 1506 page no 3 n bits 80 index uk_prefix of table?test.number?trx id 238434 lock_mode X locks gap before rec insert intentionRecord lock, heap no 3 PHYSICAL RECORD: n_fields 4; compact format; info bits 00: len 3; hex 686868; asc hhh;;1: len 6; hex 00000003a350; asc P;;2: len 7; hex d2000001ff0110; asc ;;3: len 8; hex 8000000000000008; asc ;;

到了這里,我們可以從死鎖信息中看出,由于事務(wù)238435在插入時(shí)也發(fā)現(xiàn)了事務(wù)238434的gap鎖,同樣加上了插入意向鎖,等待事務(wù)238434釋放掉gap鎖。因此出現(xiàn)死鎖的情況。

2.3 debug it!

接下來通過debug MySQL的源碼來重新復(fù)現(xiàn)上面的場(chǎng)景。

這里session2的事務(wù)4445加鎖的type_mode為515,也即(LOCK_X | LOCK_GAP),與session1事務(wù)的鎖4444的gap鎖lock2->type_mode=547(LOCK_X | LOCK_REC | LOCK_GAP)的lock_mode是不兼容的(兩者皆為L(zhǎng)OCK_X)。然而由于type_mode滿足LOCK_GAP且不帶有LCK_INSERT_INTENTION的標(biāo)識(shí)位,這里會(huì)判定為不需要等待。因此,第二個(gè)session執(zhí)行select for update也同樣成功加上gap鎖了。

這里sesion1事務(wù)4444執(zhí)行insert時(shí)type_mode為2563(LOCK_X | LOCK_GAP | LOCK_INSERT_INTENTION),由于帶有LOCK_INSERT_INTENTION標(biāo)識(shí)位,因此需要等待session2事務(wù)釋放4445的gap鎖。后續(xù)session1事務(wù)4444獲得了一個(gè)插入意向鎖,并且在等待session2事務(wù)4445釋放gap鎖。

這里session2事務(wù)4445同樣執(zhí)行了insert操作,插入意向鎖需要等待session1的事務(wù)4444的gap鎖釋放。在死鎖檢測(cè)時(shí),被探測(cè)到形成等待環(huán)。因此InnoDB會(huì)選擇一個(gè)事務(wù)作為victim進(jìn)行回滾。其過程大致如下:

session2嘗試獲取插入意向鎖,需要等待session1的gap鎖

session1事務(wù)的插入意向鎖處于等待中

session1事務(wù)插入意向鎖在等待session2的gap鎖

形成環(huán)路,檢測(cè)到死鎖

2.4 如何避免這個(gè)死鎖

我們已經(jīng)知道,這種情況出現(xiàn)的原因是:兩個(gè)session同時(shí)通過select for update,并且未命中任何記錄的情況下,是有可能得到相同gap的鎖的(要看where篩選條件是否落在同一個(gè)區(qū)間。如果上面的案例如果一個(gè)session準(zhǔn)備插入'ddd'另一個(gè)準(zhǔn)備插入'kkk'則不會(huì)出現(xiàn)沖突,因?yàn)椴皇峭粋€(gè)gap)。此時(shí)再進(jìn)行并發(fā)插入,其中一個(gè)會(huì)進(jìn)入鎖等待,待第二個(gè)session進(jìn)行插入時(shí),會(huì)出現(xiàn)死鎖。MySQL會(huì)根據(jù)事務(wù)權(quán)重選擇一個(gè)事務(wù)進(jìn)行回滾。

那么如何避免這個(gè)情況呢?一種解決辦法是將事務(wù)隔離級(jí)別降低到Read Committed,這時(shí)不會(huì)有g(shù)ap鎖,對(duì)于上述場(chǎng)景,如果where中條件不同即最終要插入的鍵不同,則不會(huì)有問題。如果業(yè)務(wù)代碼中可能不同線程會(huì)嘗試對(duì)相同鍵進(jìn)行select for update,則可在業(yè)務(wù)代碼中捕獲索引沖突異常進(jìn)行重試。此外,上面代碼示例中的代碼還有一處值得注意的地方是事務(wù)注解@Transactional的傳播機(jī)制,對(duì)于這類與主流程事務(wù)關(guān)系不大的方法,應(yīng)當(dāng)將事務(wù)傳播行為改為REQUIRES_NEW。原因有兩點(diǎn):

因?yàn)檫@里的解決方案是對(duì)隔離級(jí)別降級(jí),如果傳播行為仍然是默認(rèn)的話,在外層事務(wù)隔離級(jí)別不是RC的情況下,會(huì)拋出IllegalTransactionStateException異常(在你的TransactionManager開啟了validateExistingTransaction校驗(yàn)的情況下)。

如果加入外層事務(wù)的話,某個(gè)線程在執(zhí)行獲取流水號(hào)的時(shí)候可能會(huì)因?yàn)榱硪粋€(gè)線程的與流水號(hào)不相關(guān)的事務(wù)代碼還沒執(zhí)行完畢而阻塞。

責(zé)任編輯:xj

原文標(biāo)題:select for update 引發(fā)的死鎖分析,太驚險(xiǎn)了

文章出處:【微信公眾號(hào):數(shù)據(jù)分析與開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

    關(guān)注

    0

    文章

    25

    瀏覽量

    8082
  • MySQL
    +關(guān)注

    關(guān)注

    1

    文章

    829

    瀏覽量

    26692

原文標(biāo)題:select for update 引發(fā)的死鎖分析,太驚險(xiǎn)了

文章出處:【微信號(hào):DBDevs,微信公眾號(hào):數(shù)據(jù)分析與開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    案例分享 | 光隔離探頭新能源汽車電機(jī)控制器的雙脈沖測(cè)試應(yīng)用實(shí)例

    測(cè)試中,光隔離探頭測(cè)量的是上管Vgs。這個(gè)模塊是電機(jī)控制器的核心部分,其開關(guān)速度非???,通常在納秒級(jí)別測(cè)試過程中,由于高速開關(guān)產(chǎn)生的電磁干擾(EMI)會(huì)對(duì)測(cè)量結(jié)果造成影響。光隔離
    發(fā)表于 01-09 16:58

    ADS8365是否存在類似死鎖的保護(hù)使得數(shù)據(jù)顯示為0或者65535,而且只有重新上電才能恢復(fù)正常?

    用ADS8365這款芯片有8年多了,用在多款電力控制的產(chǎn)品中。09年曾經(jīng)出現(xiàn)過異常,表現(xiàn)為當(dāng)外部發(fā)生斷路器操作時(shí)(一次斷路器操作可能會(huì)對(duì)控制形成電磁干擾,但具體耦合渠道不明),控制器會(huì)顯示所有
    發(fā)表于 01-07 07:41

    Linux--IO多路復(fù)用(select,poll,epoll)

    顯式調(diào)用讀寫操作。這意味著異步IO模型中,讀寫操作由操作系統(tǒng)在后臺(tái)完成,從而進(jìn)一步提高了應(yīng)用程序的效率和響應(yīng)性。select概述系統(tǒng)提供了select函數(shù)來實(shí)現(xiàn)多路復(fù)用輸入/輸出模型sele
    的頭像 發(fā)表于 11-06 16:13 ?422次閱讀

    電廠衛(wèi)星時(shí)鐘加裝授時(shí)安全隔離防護(hù)的解決方案

    電廠從發(fā)電、輸電到配電的每一個(gè)環(huán)節(jié),任何一個(gè)細(xì)微的時(shí)間誤差都可能引發(fā)調(diào)度失誤,甚至導(dǎo)致安全事故。因此,選擇適合的電廠衛(wèi)星授時(shí)安全隔離防護(hù)裝置,是確保電力系統(tǒng)高效、安全運(yùn)行的關(guān)鍵步驟。
    的頭像 發(fā)表于 10-18 14:50 ?485次閱讀
    電廠衛(wèi)星時(shí)鐘加裝授時(shí)安全<b class='flag-5'>隔離</b>防護(hù)的解決方案

    使用TAS3251EVM進(jìn)行PBTL的調(diào)試,為什么選擇Select Audio Mode后會(huì)報(bào)錯(cuò)?

    請(qǐng)教一下,我使用TAS3251EVM進(jìn)行PBTL的調(diào)試,連接好PPC3和硬件,為什么選擇 Select Audio Mode后會(huì)報(bào)錯(cuò)。已經(jīng)將J31&amp;J32短接,J14開路
    發(fā)表于 10-15 07:30

    MOS管溫度過高會(huì)引發(fā)什么故障

    MOS管(金屬氧化物半導(dǎo)體場(chǎng)效應(yīng)晶體管)溫度過高會(huì)引發(fā)一系列故障,這些故障不僅影響MOS管本身的性能,還可能對(duì)整個(gè)電路系統(tǒng)造成損害。以下是對(duì)MOS管溫度過高可能引發(fā)的故障及其原因的詳細(xì)
    的頭像 發(fā)表于 10-09 14:27 ?1397次閱讀

    隔離電源的地波動(dòng)大,隔離電源的地怎么處理

     隔離電源電氣系統(tǒng)中起到重要作用,它通過將電氣系統(tǒng)的某部分與電源的地線或其他部分進(jìn)行電氣隔離,以減少干擾和確保安全。然而,如果你發(fā)現(xiàn)隔離電源的地波動(dòng)大,這
    的頭像 發(fā)表于 10-01 16:15 ?610次閱讀

    光耦合器信號(hào)傳輸和隔離中的作用

    光耦合器,也稱為光隔離器,是電子電路中的關(guān)鍵元件,它結(jié)合了兩個(gè)基本功能:信號(hào)傳輸和電氣隔離。它們?cè)试S信號(hào)電路的不同部分之間傳遞,同時(shí)保持它們彼此電氣隔離。此功能對(duì)于保護(hù)敏感的低壓控制
    的頭像 發(fā)表于 09-27 16:06 ?369次閱讀

    高壓隔離開關(guān)的常見缺陷

    缺陷的詳細(xì)描述。 一、接觸部分過熱 高壓隔離開關(guān)的運(yùn)行過程中,接觸部分過熱是一個(gè)常見的問題。這通常是由于擰緊部件松動(dòng)或刀口合得不嚴(yán)所導(dǎo)致的。當(dāng)接觸部分過熱時(shí),可能會(huì)引發(fā)一系列問題,如
    的頭像 發(fā)表于 09-19 16:32 ?511次閱讀

    隔離變壓器輸入輸出可以隨便接嗎

    的額定電壓一致。如果電壓不匹配,可能會(huì)造成變壓器損壞或電器無法正常工作,甚至引發(fā)安全事故。 相位正確 :對(duì)于三相隔離變壓器,輸入和輸出的相位必須正確對(duì)應(yīng),以確保電流的正常流通和設(shè)備的正常工作。 電氣
    的頭像 發(fā)表于 09-06 11:07 ?1048次閱讀

    控制回路斷線可能原因及如何處理

    回路斷線的常見原因之一。電氣系統(tǒng)中,接線錯(cuò)誤可能導(dǎo)致電路短路、斷路或接觸不良,從而引發(fā)控制回路斷線。 接觸不良 接觸不良是控制回路斷線的另一個(gè)常見原因。電氣系統(tǒng)中,接觸不良
    的頭像 發(fā)表于 08-23 16:36 ?2555次閱讀

    ROOT NODE用了mlink_httpd_read之后可以使用mwifi_root_read嗎?

    我想問一下,如果我ROOT NODE用了mlink_httpd_read 之后可以使用mwifi_root_read 嗎? 我root node create 了這兩個(gè)task
    發(fā)表于 06-28 09:35

    愛旗V200系列模組連接AEP平臺(tái)update的工作機(jī)制

    。   自動(dòng)update模式下,模組連接AEP平臺(tái)后,會(huì)在設(shè)置的lifetime的0.9倍時(shí)間時(shí)自動(dòng)進(jìn)行update,例如默認(rèn)設(shè)置lifetime為86400,則模組會(huì)在連接上平臺(tái)86400*0.9
    發(fā)表于 06-04 06:46

    淺談MySQL常見死鎖場(chǎng)景

    這里問題的原因是這個(gè) table 里面只有record 2, 所以這里認(rèn)真看, 死鎖的時(shí)候是等待在 supremum 上的, 因?yàn)閟upremum 的特殊性, supremum 沒有g(shù)ap lock, 只有 next-key lock
    的頭像 發(fā)表于 03-21 14:10 ?817次閱讀
    淺談MySQL常見<b class='flag-5'>死鎖</b>場(chǎng)景

    STM32L5 boot_lock與rdp level配置導(dǎo)致死鎖如何解決?

    STM32L5 boot_lock 與 rdp level配置導(dǎo)致死鎖,應(yīng)該如何解決
    發(fā)表于 03-20 06:22
    主站蜘蛛池模板: 午夜理伦大片一级 | 玄幻全黄h全肉后宫 | 99国产精品久久人妻 | 海角国精产品一区一区三区糖心 | 翁公与小莹在客厅激情 | qovd电影| 男人的天堂色偷偷 | 亚洲人美女肛交真人全程 | 老司机无码精品A | 日韩人妻无码专区一本二本 | 久久99热狠狠色一区二区 | 久久精品视频在线看99 | 国产最新精品亚洲2021不卡 | 午夜不卡久久精品无码免费 | 美女扒开尿口让男生添动态图 | 日日夜夜影院在线播放 | 亚洲国产在线视频精品 | 狠狠色狠狠色综合日日2019 | 国产三级级在线电影 | 天天看高清影视在线18 | 在线视频免费国产成人 | 亚洲无吗视频 | 91系列在线观看免费 | 亚欧日韩毛片在线看免费网站 | 挺进老师的紧窄小肉六电影完整版 | 亚洲精品久久久992KVTV | 一个人免费观看HD完整版 | 肉肉描写很细致的黄文 | 入禽太深免费高清在线观看5 | 小草观看免费高清视频 | 亚洲精品综合在线影院 | 国产在线观看香蕉视频 | 甜性涩爱bt下载 | 欧美黄色精品 | 99久久无码一区人妻A片蜜 | 揉抓捏打抽插射免费视频 | 国产精品一区第二页 | 99久久久久精品国产免费麻豆 | 91夫妻交友论坛 | 国产精品亚洲精品久久国语 | 挺进老师的紧窄小肉六电影完整版 |