預設 mysqldump 導出時會產生 LOCK TABLES ... WRITE 與 INSERT 語句,導入時會鎖表阻塞讀寫。若加入 --delayed-insert,生成的 SQL 會改為 INSERT DELAYED,不再加寫鎖,適合高併發環境導入歷史資料。
LOCK TABLES `student` WRITE;
/*!40000 ALTER TABLE `student` DISABLE KEYS */;
INSERT INTO `student` VALUES (16,'hhah',3),(17,'22',3),(18,'ss',18);
/*!40000 ALTER TABLE `student` ENABLE KEYS */;
UNLOCK TABLES;
/*!40000 ALTER TABLE `student` DISABLE KEYS */;
INSERT DELAYED INTO `student` VALUES (16,'hhah',3),(17,'22',3),(18,'ss',18);
/*!40000 ALTER TABLE `student` ENABLE KEYS */;
ALTER TABLE 或 FLUSH TABLES 鎖釋放,確保表結構最新。AUTO_INCREMENT 值、重複鍵錯誤數等資訊無法在客戶端獲取(mysql_info() 返回 NULL)。kill -9 或崩潰會導致未刷盤資料遺失。