鍍金池/ 問(wèn)答/Linux  數(shù)據(jù)庫(kù)  網(wǎng)絡(luò)安全/ 如何防止網(wǎng)絡(luò)抖動(dòng)造成的mysql數(shù)據(jù)重復(fù)寫入情況

如何防止網(wǎng)絡(luò)抖動(dòng)造成的mysql數(shù)據(jù)重復(fù)寫入情況

從本地向阿里云數(shù)據(jù)庫(kù)寫數(shù)據(jù),總計(jì)100W條,用的外網(wǎng)

但是由于網(wǎng)絡(luò)抖動(dòng),最后寫進(jìn)去了100W+172條, 這172條出現(xiàn)在大于40W左右的位置,重復(fù)了位置38W處的172條數(shù)據(jù)
正好那段時(shí)間網(wǎng)絡(luò)抖動(dòng)了一段時(shí)間,應(yīng)該就是這個(gè)原因

發(fā)現(xiàn)數(shù)據(jù)不對(duì),找到數(shù)據(jù)位置以及刪掉數(shù)據(jù)用了不少時(shí)間
想問(wèn)一下,如果防止這種情況呢?


由于數(shù)據(jù)結(jié)構(gòu)的原因,unique key不方便使用

回答
編輯回答
不舍棄

并發(fā)寫入嘛?
插入數(shù)據(jù)前判斷數(shù)據(jù)存在,用悲觀鎖,語(yǔ)法:select * for update
字段要加上索引,因?yàn)镸ySQL的行鎖是基于索引的

2017年11月10日 23:55
編輯回答
忘了我

用事務(wù)。

事務(wù)是一種機(jī)制、是一種操作序列,它包含了一組數(shù)據(jù)庫(kù)操作命令,這組命令要么全部執(zhí)行,要么全部不執(zhí)行。因此事務(wù)是一個(gè)不可分割的工作邏輯單元。在數(shù)據(jù)庫(kù)系統(tǒng)上執(zhí)行并發(fā)操作時(shí)事務(wù)是作為最小的控制單元來(lái)使用的。這特別適用于多用戶同時(shí)操作的數(shù)據(jù)通信系統(tǒng)。例如:訂票、銀行、保險(xiǎn)公司以及證券交易系統(tǒng)等。

當(dāng)其中有某個(gè)命令出現(xiàn)問(wèn)題,可以回滾

2017年1月26日 09:24