精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

因用了Insert into select語(yǔ)句,同事被開(kāi)除了!

開(kāi)發(fā) 開(kāi)發(fā)工具 Oracle
Insert into select 請(qǐng)慎用,同事因?yàn)槭褂昧?Insert into select 語(yǔ)句引發(fā)了重大生產(chǎn)事故,最后被開(kāi)除。

某天 xxx 接到一個(gè)需求,需要將表 A 的數(shù)據(jù)遷移到表 B 中去做一個(gè)備份。他本想通過(guò)程序先查詢(xún)查出來(lái)然后批量插入,但 xxx 覺(jué)得這樣有點(diǎn)慢,需要耗費(fèi)大量的網(wǎng)絡(luò) I/O,決定采取別的方法進(jìn)行實(shí)現(xiàn)。

通過(guò)在某度的海洋里遨游,他發(fā)現(xiàn)了可以使用 insert into select 實(shí)現(xiàn),這樣就可以避免使用網(wǎng)絡(luò) I/O,直接使用 SQL 依靠數(shù)據(jù)庫(kù) I/O 完成,這樣簡(jiǎn)直不要太棒,然后他就被開(kāi)除了。

[[324491]]

事故發(fā)生的經(jīng)過(guò)

由于數(shù)據(jù)數(shù)據(jù)庫(kù)中 order_today 數(shù)據(jù)量過(guò)大,當(dāng)時(shí)好像有 700W 了,并且每天在以 30W 的速度增加。

所以上司命令 xxx 將 order_today 內(nèi)的部分?jǐn)?shù)據(jù)遷移到 order_record 中,并將 order_today 中的數(shù)據(jù)刪除,這樣來(lái)降低 order_today 表中的數(shù)據(jù)量。

由于考慮到會(huì)占用數(shù)據(jù)庫(kù) I/O,為了不影響業(yè)務(wù),計(jì)劃是 9:00 以后開(kāi)始遷移,但是 xxx 在 8:00 的時(shí)候,嘗試遷移了少部分?jǐn)?shù)據(jù)(1000 條),覺(jué)得沒(méi)啥問(wèn)題,就開(kāi)始考慮大批量遷移。

[[324492]]

在遷移的過(guò)程中,應(yīng)急群是先反應(yīng)有小部分用戶(hù)出現(xiàn)支付失敗,隨后反應(yīng)大批用戶(hù)出現(xiàn)支付失敗的情況,以及初始化訂單失敗的情況,同時(shí)騰訊也開(kāi)始報(bào)警。

[[324493]]

然后 xxx 就慌了,立即停止了遷移。本以為停止遷移就就可以恢復(fù)了,但是并沒(méi)有。

后面發(fā)生的你們可以腦補(bǔ)一下,當(dāng)時(shí)整個(gè)支付系統(tǒng)癱瘓了快一個(gè)小時(shí),客服電話(huà)都被打爆。

事故還原

在本地建立一個(gè)精簡(jiǎn)版的數(shù)據(jù)庫(kù),并生成了 100w 的數(shù)據(jù)。模擬線(xiàn)上發(fā)生的情況。

1. 建立表結(jié)構(gòu)

訂單表如下:

  1. CREATE TABLE `order_today` ( 
  2. `id` varchar(32) NOT NULL COMMENT '主鍵', 
  3. `merchant_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '商戶(hù)編號(hào)', 
  4. `amount` decimal(15,2) NOT NULL COMMENT '訂單金額', 
  5. `pay_success_time` datetime NOT NULL COMMENT '支付成功時(shí)間', 
  6. `order_status` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '支付狀態(tài)  S:支付成功、F:訂單支付失敗', 
  7. `remark` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '備注', 
  8. `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時(shí)間', 
  9. `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改時(shí)間 -- 修改時(shí)自動(dòng)更新', 
  10.   PRIMARY KEY (`id`) USING BTREE, 
  11. KEY `idx_merchant_id` (`merchant_id`) USING BTREE COMMENT '商戶(hù)編號(hào)' 
  12. ENGINE=InnoDB DEFAULT CHARSET=utf8

訂單記錄表如下:

  1. CREATE TABLE order_record like order_today; 

今日訂單表數(shù)據(jù)如下:

2. 模擬遷移

把 8 號(hào)之前的數(shù)據(jù)都遷移到 order_record 表中去:

  1. INSERT INTO order_record SELECT 
  2.     *  
  3. FROM 
  4.     order_today  
  5. WHERE 
  6.     pay_success_time < '2020-03-08 00:00:00'; 

在 Navicat 中運(yùn)行遷移的 SQL,同時(shí)開(kāi)另個(gè)一個(gè)窗口插入數(shù)據(jù),模擬下單:

從上面可以發(fā)現(xiàn)一開(kāi)始能正常插入,但是后面突然就卡住了,并且耗費(fèi)了 23s 才成功,然后才能繼續(xù)插入。這個(gè)時(shí)候已經(jīng)遷移成功了,所以能正常插入了。

出現(xiàn)的原因

在默認(rèn)的事務(wù)隔離級(jí)別下:insert into order_record select * from order_today 加鎖規(guī)則是:order_record 表鎖,order_today 逐步鎖(掃描一個(gè)鎖一個(gè))。

分析執(zhí)行過(guò)程:

通過(guò)觀察遷移 SQL 的執(zhí)行情況你會(huì)發(fā)現(xiàn) order_today 是全表掃描,也就意味著在執(zhí)行 insert into select from 語(yǔ)句時(shí),MySQL 會(huì)從上到下掃描 order_today 內(nèi)的記錄并且加鎖,這樣一來(lái)不就和直接鎖表是一樣了。

這也就可以解釋?zhuān)瑸槭裁匆婚_(kāi)始只有少量用戶(hù)出現(xiàn)支付失敗,后續(xù)大量用戶(hù)出現(xiàn)支付失敗,初始化訂單失敗等情況,因?yàn)橐婚_(kāi)始只鎖定了少部分?jǐn)?shù)據(jù),沒(méi)有被鎖定的數(shù)據(jù)還是可以正常被修改為正常狀態(tài)。

由于鎖定的數(shù)據(jù)越來(lái)越多,就導(dǎo)致出現(xiàn)了大量支付失敗。最后全部鎖住,導(dǎo)致無(wú)法插入訂單,而出現(xiàn)初始化訂單失敗。

解決方案

由于查詢(xún)條件會(huì)導(dǎo)致 order_today 全表掃描,什么能避免全表掃描呢,很簡(jiǎn)單嘛,給 pay_success_time 字段添加一個(gè) idx_pay_suc_time 索引就可以了。

由于走索引查詢(xún),就不會(huì)出現(xiàn)掃描全表的情況而鎖表了,只會(huì)鎖定符合條件的記錄。

最終的 SQL:

  1. INSERT INTO order_record SELECT 
  2.     *  
  3. FROM 
  4.     order_today FORCE INDEX (idx_pay_suc_time) 
  5. WHERE 
  6.     pay_success_time <= '2020-03-08 00:00:00'; 

執(zhí)行過(guò)程如下:

總結(jié)

使用 insert into tablA select * from tableB 語(yǔ)句時(shí),一定要確保 tableB 后面的 where,order 或者其他條件,都需要有對(duì)應(yīng)的索引,來(lái)避免出現(xiàn) tableB 全部記錄被鎖定的情況。

作者:不一樣的科技宅

編輯:陶家龍

出處:https://juejin.im/post/5e670f0151882549274a65ef

 

責(zé)任編輯:趙寧寧 來(lái)源: 51CTO專(zhuān)欄
相關(guān)推薦

2025-07-22 09:47:26

2021-11-29 07:06:40

代碼公司 程序員

2010-09-03 15:27:02

SQLSELECT語(yǔ)句

2020-04-30 11:25:32

Insert into數(shù)據(jù)庫(kù)索引

2019-12-16 08:47:04

Redis設(shè)計(jì)算法

2020-08-27 08:54:02

腳本架構(gòu)師Linux

2019-10-10 08:50:26

Facebook 開(kāi)發(fā)開(kāi)源

2010-02-24 16:47:22

戴爾員工性騷擾

2024-03-06 08:18:22

語(yǔ)句GreatSQL

2019-10-08 15:48:57

程序員技能開(kāi)發(fā)者

2011-07-22 16:59:30

MySQL數(shù)據(jù)庫(kù)嵌套查詢(xún)

2022-05-07 07:33:55

TypeScript條件類(lèi)型

2022-04-29 06:54:48

TS 映射類(lèi)型User 類(lèi)型

2021-02-03 14:10:20

快訊電腦開(kāi)除

2021-08-26 05:52:44

AI算法人工智能

2019-08-21 14:35:27

語(yǔ)音識(shí)別人工智能技術(shù)

2021-02-04 07:55:28

代碼離職互聯(lián)網(wǎng)

2019-11-25 21:53:48

代碼算法BUG

2018-08-23 09:10:01

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

2018-08-27 07:29:34

InnoDBinsertselect
點(diǎn)贊
收藏

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

精品三级在线观看| 亚洲精品大片www| 国产精品99导航| 一起操在线播放| 黄色欧美网站| 欧美三级电影在线观看| a级片一区二区| 女人偷人在线视频| 国产精品99久久久久久有的能看 | 国产又色又爽又高潮免费| 精品一区二区三区中文字幕 | 欧美美女15p| 91网站免费视频| 亚洲一区 二区| 欧美日韩精品二区第二页| 中文字幕无码精品亚洲资源网久久| www.视频在线.com| av在线这里只有精品| 成人深夜直播免费观看| 手机看片久久久| 尤物网精品视频| 久久亚洲影音av资源网 | 亚洲免费在线电影| 日韩精品不卡| 日本人妖在线| 97久久超碰精品国产| 91色琪琪电影亚洲精品久久| 日韩人妻精品中文字幕| 亚洲大胆视频| 欧美激情第6页| 久草手机视频在线观看| 精品日本12videosex| 日韩国产欧美精品一区二区三区| 99热这里只有精品2| 欧美亚洲人成在线| 欧美色网站导航| 亚洲爆乳无码专区| 中文字幕21页在线看| 亚洲大片在线观看| 国产aaa免费视频| 欧美hdxxxxx| 亚洲男人的天堂网| 少妇高潮大叫好爽喷水| 日本天堂在线观看| 国产精品全国免费观看高清| 日本精品国语自产拍在线观看| 天堂网www中文在线| www.成人网.com| 国内精品久久国产| 四虎影视精品成人| 91麻豆精东视频| 麻豆传媒一区二区| 高清国产福利在线观看| 国产欧美一区二区精品婷婷| 日韩福利在线| 日本综合在线| 中文字幕一区二区三区视频| 中国一区二区三区| 亚洲丝袜一区| 亚洲第一久久影院| 人妻有码中文字幕| 日韩经典一区| 欧美精品黑人性xxxx| 91欧美一区二区三区| 亚洲电影一区| 日韩精品极品在线观看播放免费视频 | av成人在线看| 欧美精品丝袜久久久中文字幕| 日韩成人精品视频在线观看| 国产专区精品| 亚洲国产精品视频在线观看| 一本色道久久综合亚洲精品图片| 欧美精选一区二区三区| 久久精品视频导航| 亚洲一区 视频| 久久久成人网| 91久久精品视频| 天天操天天射天天| 国产亚洲精品免费| 欧美a级黄色大片| 校园春色亚洲| 欧美日本一道本在线视频| 日本中文字幕精品| 国产成人三级| 美女精品视频一区| 日韩中文字幕在线观看视频| 美女任你摸久久| 国产精品一区免费观看| 国产系列在线观看| 亚洲精品综合在线| 国模无码视频一区二区三区| 日韩制服一区| 亚洲成人久久一区| 69xxx免费| 亚洲国产高清一区| 国产日韩亚洲欧美| 亚洲av成人精品一区二区三区在线播放 | 欧美高清视频一区| 国产盗摄在线观看| 欧美性猛交xxxx乱大交蜜桃| 亚洲美女性囗交| 色天下一区二区三区| 日韩专区中文字幕| 91美女免费看| 国产99久久久国产精品潘金| 日韩高清dvd| av中文资源在线资源免费观看| 欧美精品久久99久久在免费线| 给我看免费高清在线观看| 91精品电影| 国产精品久久久久久久久久免费| 免费观看黄色av| 亚洲女同女同女同女同女同69| 日日摸天天爽天天爽视频| av不卡一区二区| 久久亚洲精品毛片| 最近中文字幕在线免费观看 | 精品久久久三级| 成人区精品一区二区不卡| 欧美天堂在线观看| 中国免费黄色片| 综合久久久久| 国产一区玩具在线观看| 第一页在线观看| 欧美性猛交视频| 久久精品女同亚洲女同13| 欧美暴力喷水在线| 成人深夜直播免费观看| 午夜在线观看视频| 欧美亚洲高清一区二区三区不卡| 玖玖爱在线精品视频| 好看的日韩av电影| av资源一区二区| 欧美性受ⅹ╳╳╳黑人a性爽| 在线电影国产精品| 大地资源高清在线视频观看| 日本91福利区| 亚洲不卡一卡2卡三卡4卡5卡精品| 女同视频在线观看| 日韩精品最新网址| 久久久久黄色片| 国产精品一区二区无线| 亚洲一区三区在线观看| 嫩草伊人久久精品少妇av杨幂| 亚洲男人第一网站| 欧美特级黄色片| 久久久久久久久久久久久女国产乱| 国产亚洲精品网站| 自拍偷拍欧美一区| 国产精品69精品一区二区三区| 蝌蚪视频在线播放| 欧美视频三区在线播放| 自拍偷拍第9页| 黄页视频在线91| 天天想你在线观看完整版电影免费 | 精品国产成人在线| 久久久久久久久免费看无码| 六月天综合网| 亚洲高清资源综合久久精品| 国产精品亚洲成在人线| 日韩一区二区福利| 超碰在线观看av| 午夜激情一区二区三区| 国产呦小j女精品视频| 日韩极品在线观看| 国产经典久久久| 国内精品国产成人国产三级粉色| 欧美性一区二区三区| 国产在线观看免费| 欧美久久高跟鞋激| 精品一级少妇久久久久久久| av一区二区三区在线| 欧在线一二三四区| 午夜影院欧美| 国产在线精品一区二区中文| 蜜桃精品在线| 久久五月天色综合| 四虎在线观看| 欧美精选午夜久久久乱码6080| 久久亚洲AV无码| 国产亚洲综合在线| 又黄又爽又色的视频| 亚洲免费影视| 中文字幕日韩一区二区三区 | 日韩成人久久久| 一本色道久久综合亚洲| 亚洲一区国产视频| 真实乱视频国产免费观看 | 女同毛片一区二区三区| 麻豆精品精品国产自在97香蕉| 999久久欧美人妻一区二区| 蜜桃精品wwwmitaows| 91免费在线视频网站| 麻豆成全视频免费观看在线看| 中文字幕亚洲欧美在线| 欧美一级特黄aaaaaa大片在线观看| 亚洲自拍电影| 亚洲欧美综合区自拍另类| 夜夜躁狠狠躁日日躁av| 亚洲线精品一区二区三区 | 91久久青草| 97在线观看免费| 欧美私人网站| 亚洲精品综合精品自拍| 国产深喉视频一区二区| 日本美女久久| 国产福利91精品| 欧美大片在线播放| 首页国产精品| 久久婷婷人人澡人人喊人人爽| 成人国产在线| 97精品国产97久久久久久春色| 一区二区高清不卡| 日韩精品在线免费| 性做久久久久久久久久| 精品视频999| 韩国av中文字幕| 一区二区不卡在线播放 | 无码人妻精品一区二区三区9厂| 亚洲色图制服诱惑| 18精品爽国产三级网站| 久久伊人蜜桃av一区二区| 高清中文字幕mv的电影| 国内精品免费在线观看| 亚洲成人av免费看| 美日韩精品视频| 日本福利视频在线| 在线观看亚洲| 天天做天天躁天天躁| 91精品一区二区三区综合| 亚洲国产欧美不卡在线观看 | 视频欧美精品| 国产精品美乳一区二区免费 | 狠狠色伊人亚洲综合网站色| 日韩精品三级| 91麻豆蜜桃| 亚洲精品国产九九九| 亚洲一区二区三区久久| 青青伊人久久| 成人写真福利网| 在线欧美激情| 成人做爽爽免费视频| 日韩电影精品| 成人免费网站在线| 国产亚洲高清在线观看| 成人免费视频网址| 日韩高清在线观看一区二区| 成人欧美一区二区| xxxx日韩| 久久久久久一区| 最新国产一区| 色999五月色| 久久蜜桃av| 午夜啪啪福利视频| 国产一区二区三区四区老人| 日本精品久久久久久久久久| 亚洲黄网站黄| 国产一区二区三区精彩视频| 国产精品久久久免费| 久草精品在线播放| 久久成人免费网| 日本中文字幕在线不卡| 国产麻豆视频一区| 欧美一级片黄色| 国产亚洲欧美激情| 国产免费美女视频| 一区二区三区加勒比av| 日韩欧美视频在线免费观看| 欧美午夜激情视频| 亚洲视频中文字幕在线观看| 337p亚洲精品色噜噜| 亚洲精品无遮挡| 亚洲片国产一区一级在线观看| 国产精品一二三区视频| www.欧美免费| 波多野结衣中文在线| 青青草一区二区| 国产精品毛片aⅴ一区二区三区| 国产成人精品自拍| 精品国产一区二区三区香蕉沈先生| 亚洲高清视频在线观看| 国产一区欧美| www.日日操| 国v精品久久久网| 精品人妻互换一区二区三区| 亚洲欧洲性图库| 中文字幕超碰在线| 欧美裸体一区二区三区| 天天操天天干天天爱| 这里只有精品视频| 98色花堂精品视频在线观看| 国产精品伦子伦免费视频| 亚洲国产高清在线观看| 蜜桃在线一区二区三区精品| 婷婷久久国产对白刺激五月99| 九一国产精品视频| 激情综合色播五月| 熟女少妇一区二区三区| 亚洲免费色视频| 中文字幕+乱码+中文乱码91| 亚洲精品一区二区三区蜜桃下载| 91在线播放网站| 91av在线影院| 1769国产精品视频| 一区二区免费在线观看| 亚洲欧美高清| 成人在线观看一区二区| 18欧美亚洲精品| www.久久网| 国产婷婷97碰碰久久人人蜜臀| 亚洲丝袜精品| 国产一区二区丝袜| 精品精品久久| 一本大道熟女人妻中文字幕在线| 国产美女精品一区二区三区| 欧美性猛交xxxx乱| 欧美日韩日本国产| 免费观看的毛片| 欧美国产日韩中文字幕在线| 香蕉久久久久久| 亚洲精品在线视频观看| 久久久久国产精品一区三寸| 国产高清成人久久| 亚洲一区二区精品视频| a毛片在线免费观看| www.亚洲一区| 国产麻豆一区| 亚洲国产欧美一区二区三区不卡| 久久精品123| 欧美图片第一页| 色拍拍在线精品视频8848| 午夜影院免费体验区| 亚州欧美日韩中文视频| 国产精品丝袜在线播放| 91黄色在线看| av不卡免费在线观看| 日韩毛片在线视频| 亚洲国产天堂久久国产91| 福利影院在线看| 黄色91av| 男人天堂欧美日韩| xxxx日本免费| 欧美亚洲高清一区| 永久免费av在线| 亚洲一区二区自拍| 激情综合电影网| 一区二区免费在线观看视频| 欧美日韩精品在线播放| 手机福利在线| 国产精品精品久久久久久| 不卡一区2区| 最新av免费在线观看| 亚洲欧美日韩国产一区二区三区 | 唐人社导航福利精品| 欧美午夜精品理论片a级大开眼界 欧美午夜精品久久久久免费视 | 91久久久久国产一区二区| 久久在线观看视频| 成人三级毛片| 久久久久人妻精品一区三寸| 久久久99精品免费观看不卡| 欧美成人一区二区视频| www.亚洲免费视频| 波多野结衣欧美| 欧美女人性生活视频| 国产精品人成在线观看免费| 国产露脸91国语对白| 久久久免费观看| 一区二区三区四区在线看| 最近中文字幕一区二区| 亚洲六月丁香色婷婷综合久久| 成人午夜福利视频| 日本精品中文字幕| 999成人网| 日本天堂在线播放| 色婷婷激情综合| 国产不卡在线| 精选一区二区三区四区五区| 日本一不卡视频| 欧美日韩在线观看免费| 日韩激情av在线播放| 怡红院av一区二区三区| 欧美一区二区三区四| 一区二区三区视频免费| 人人爱人人干婷婷丁香亚洲| 男人添女人下面高潮视频| 欧美高清一级片在线观看| 亚洲精品久久久久久久久久| 国产成人精品一区| 欧美人成在线| 韩国女同性做爰三级| 日韩午夜在线播放| av高清一区| 成人区一区二区| 欧美国产精品v| 欧美一级在线免费观看| 国产精品视频网站| 最新国产乱人伦偷精品免费网站| 日本黄色激情视频| 日韩av在线免费播放| 精品一级视频|