我知道我可能不會這樣做最有效的方法。我有以XML格式存儲的數據,並且我將XML數據解析爲單獨的INSERT INTO .. VALUES(..)語句,然後執行這些語句。是否有一種以批處理方式執行數百萬條INSERT INTO語句的好方法?mysql有效地執行了數百萬條INSERT語句
我不能使用常規的SQL Server實用工具導入XML數據,因爲我在AWS上運行這個工具。
任何建議表示讚賞!
我知道我可能不會這樣做最有效的方法。我有以XML格式存儲的數據,並且我將XML數據解析爲單獨的INSERT INTO .. VALUES(..)語句,然後執行這些語句。是否有一種以批處理方式執行數百萬條INSERT INTO語句的好方法?mysql有效地執行了數百萬條INSERT語句
我不能使用常規的SQL Server實用工具導入XML數據,因爲我在AWS上運行這個工具。
任何建議表示讚賞!
使用多INSERT
方法,您提供多組VALUES
的方法總比單獨使用它們好。您應該創建與您的max_allowed_packet
設置一樣大的語句,並理想地將其調整爲儘可能高。 2GB的容量通常會盡可能高,並且爲了達到最高速度,您最好還是要至少懸掛10-50MB大小的塊。
LOAD DATA INFILE
也是一個選項,但這通常比多方法最多快10-15%,並且要求數據以特定格式開始。 CSV或製表符分隔是最容易處理的,XML不是一種選擇。
爲了獲得最佳性能,請在插入大量數據之前禁用任何索引。即使在空數據庫模式的mysqldump
快照中,也可以看到其中的一些技巧。
要禁用索引,您導入前執行該語句:
ALTER TABLE `table_name` DISABLE KEYS;
然後導入後,重建它們:
ALTER TABLE `table_name` ENABLE KEYS;
嘗試'在file'笨重的插入載荷數據(應該是可能爲aws)。這裏有一些參考:http://dev.mysql.com/doc/refman/5.6/en/insert-speed.html – ajreal