mysql 導出數據導致鎖表


 

故事原由:今天同事小星做系統優化時問我一個sql問題,為什么查詢慢,我看了一眼,發現用到了表A中的datetime類型列進行時間比較,建議他給datetime類型列加上索引。

 

可這是生產庫,表A里面有幾百萬數據,我說那就等到中午訪問量小點的時候導入測試庫先做個測試

 

中午的12:36 我用mysql workbanch ->Management->Data Export 准備把數據導出本地,然后在導入測試庫。

可是等了兩三分鍾,還沒倒完,突然發現大量報警郵件,內容:The operation has timed out

突然明白了什么,哎呦我去,趕緊停止了導出數據。

 

事由及原因:

The operation has timed out 報警信息是爬蟲拋出的異常,因為報表統計站點響應超時了,查看IIS日志和爬蟲日志,果真如此。

距上次 站點優化 之后再也沒有The operation has timed out ,為什么12:36 到12:30 這四分鍾出現了200多個請求異常,跟蹤日志:

異常信息:在提供程序連接上啟動事務時出錯。有關詳細信息,請參閱內部異常

又看了看同事寫的代碼

//添加流水
public int AddFlowMsg(flowmsg ifm, flowmsgcur fc)
{
db.flowmsg.Add(ifm);
db.flowmsgcur.Add(fc);

return db.SaveChanges();
}

 

 

根據爬蟲日志、IIS日志、本地導出的sql文件時間判斷。

12:26---12:30

mysql workbanck導出表數據(flowmsgcur)時導致flowmsgcur表被鎖,導致了:在提供程序連接上啟動事務時出錯。

可以看看:

Run MySQLDump without Locking Tables

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM