共計 1004 個字符,預計需要花費 3 分鐘才能閱讀完成。
本篇內容主要講解“向 MySQL 中插入 100 萬條數據需要多長時間”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓丸趣 TV 小編來帶大家學習“向 MySQL 中插入 100 萬條數據需要多長時間”吧!
目錄
1、多線程插入 (單表)
2、多線程插入 (多表)
3、預處理 SQL
4、多值插入 SQL
5、事務 (N 條提交一次)
多線程插入 (單表)
問: 為何對同一個表的插入多線程會比單線程快? 同一時間對一個表的寫操作不應該是獨占的嗎?
答:在數據里做插入操作的時候,整體時間的分配是這樣的:
1、多鏈接耗時(30%)
2、多發送 query 到服務器(20%)
3、多解析 query(20%)
4、多插入操作(10% * 詞條數目)
5、多插入 index(10% * Index 的數目)
6、多關閉鏈接(10%)
從這里可以看出來,真正耗時的不是操作,而是鏈接,解析的過程。
MySQL 插入數據在寫階段是獨占的,但是插入一條數據仍然需要解析、計算、最后才進行寫處理,比如要給每一條記錄分配自增 id,校驗主鍵唯一鍵屬性,或者其他一些邏輯處理,都是需要計算的,所以說多線程能夠提高效率。
多線程插入 (多表)
分區分表后使用多線程插入。
預處理 SQL
普通 SQL: 即使用 Statement 接口執行 SQL
預處理 SQL: 即使用 PreparedStatement 接口執行 SQL
使用 PreparedStatement 接口允許數據庫預編譯 SQL 語句,以后只需傳入參數,避免了數據庫每次都編譯 SQL 語句,因此性能更好。
多值插入 SQL
普通插入 SQL: INSERT INTO TBL_TEST (id) VALUES(1)
多值插入 SQL: INSERT INTO TBL_TEST (id) VALUES (1), (2), (3)
使用多值插入 SQL,SQL 語句的總長度減少,即減少了網絡 IO,同時也降低了連接次數,數據庫一次 SQL 解析,能夠插入多條數據。
事務 (N 條提交一次)
在一個事務中提交大量 INSERT 語句可以提高性能。
1、將表的存儲引擎修改為 myisam 2、將 sql 拼接成字符串,每 1000 條左右提交事務。
執行多條 SQL 語句,實現數據庫事務。
mysql 數據庫
多條 SQL 語句
10w 條數據大概用時 10s!
到此,相信大家對“向 MySQL 中插入 100 萬條數據需要多長時間”有了更深的了解,不妨來實際操作一番吧!這里是丸趣 TV 網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!