亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

mysql快速插入大量數(shù)據(jù)的正確方法

 更新時間:2024年01月15日 10:44:25   作者:菜鳥_cc  
在處理大量數(shù)據(jù)時如果一條一條地插入會極大地影響效率,因此批量插入是一個更好的選擇,下面這篇文章主要給大家介紹了關于mysql快速插入大量數(shù)據(jù)的正確方法,需要的朋友可以參考下

前言

最近做性能測試,需要模擬生產(chǎn)環(huán)境的數(shù)據(jù)量,在造百萬、千萬級數(shù)據(jù)的時候發(fā)現(xiàn)直接使用插入sql效率極低,百度了一翻,找到幾種方式,但用下來還是有很快速的方式,推薦第四種

插入mysql數(shù)據(jù)效率對比

1.單行插入

insert into tableName (colunm1,colunm2,...) value(value1,value2,...);

沒錯,很普通的一條sql,插入速度也很普通,不推薦

2.多行插入

insert into tableName(colunm1,colunm2,..) values(value1,value2...),(value1,value2...);

有點點進度,但是不多,多行插入可以減少插入數(shù)據(jù)時的IO和網(wǎng)絡開銷,從而加快插入數(shù)據(jù)的速度。此方法適用于插入少量數(shù)據(jù)的情況,當插入數(shù)據(jù)量變大時,數(shù)據(jù)庫連接可能會被打滿

3.批量插入

INSERT INTO table_name (column1, column2, column3)
VALUES
(value1, value2, value3),
(value4, value5, value6),
......
ON DUPLICATE KEY UPDATE column1=VALUES(column1), column2=VALUES(column2), column3=VALUES(column3);

這個操作將所有插入放在一個事務中,并將其視為一個操作。此方法使用一次SQL查詢來插入大量數(shù)據(jù),因此減少了IO和網(wǎng)絡開銷

4.使用LOAD DATA INFILE語句

LOAD DATA INFILE 'file_name'
INTO TABLE table_name
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';

使用LOAD DATA INFILE語句可以將大量的數(shù)據(jù)快速地導入MySQL中。此方法適用于數(shù)據(jù)已存儲在文件中的情況,您只需指定文件名和目標表即可導入數(shù)據(jù)。而且,此方法支持多線程操作,可在不阻塞數(shù)據(jù)庫的同時并行地導入數(shù)據(jù)

說實話,這種方式非常香,親測500W數(shù)據(jù)1分鐘插入完成,推薦file_name: 本地存儲數(shù)據(jù)的文件

這個文件的數(shù)據(jù)需要先準備好,你也可以選擇像我一樣代碼生成

  • 首先,從數(shù)據(jù)庫復制一條數(shù)據(jù)

  • 然后把復制出來的插入sql中value里的內(nèi)容摳出來
  • 摳出來的內(nèi)容注意下是否有外鍵、主鍵,如果有要處理一下扣出來的內(nèi)容,下面的例子是id是主鍵,我給去掉了,然后循環(huán)生成主鍵拼接上去,循環(huán)生成的值要符合數(shù)據(jù)庫的字段定義類型
data = ",860272,'2023-07-26 18:00:03','2023-07-26 18:00:03',1,未完成,時,1,1時,219,85,1,001-001,0,9784,'2023-07-26 18:00:03',9784,'2023-07-26 18:00:03'"
with open('demo.txt', 'w+', encoding='utf-8') as f:
    for i in range(0, 1000000):
        f.write(str(i + 1) + data + '\n')
  • 執(zhí)行后生成demo.txt文件,每一行不同的值逗號分隔

  • 最后,連接數(shù)據(jù)庫,可以使用命令連接,也可以借助工具連接,執(zhí)行命令
LOAD DATA LOCAL INFILE 'E:\\demo.txt' INTO TABLE 表名
FIELDS TERMINATED BY ',' ('列名1','列名2','列名3','列名4')

注意:你的txt的值要跟命令中的列名對應上,如果你是全字段的值插入,那么('列名1','列名2','列名3','列名4')可以省略不寫

好了,可以享受插入數(shù)據(jù)的快樂了…

總結

到此這篇關于mysql快速插入大量數(shù)據(jù)的正確方法的文章就介紹到這了,更多相關mysql快速插入大量數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • MySQL 4.1/5.0/5.1/5.5/5.6各版本的主要區(qū)別整理

    MySQL 4.1/5.0/5.1/5.5/5.6各版本的主要區(qū)別整理

    這篇文章主要介紹了MySQL 4.1/5.0/5.1/5.5/5.6各版本的主要區(qū)別整理,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-08-08
  • MySQL批量SQL插入性能優(yōu)化詳解

    MySQL批量SQL插入性能優(yōu)化詳解

    這篇文章主要為大家詳細介紹了MySQL批量SQL插入性能優(yōu)化,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • MySQL8中隱藏索引與降序索引的新特性

    MySQL8中隱藏索引與降序索引的新特性

    本文主要介紹了MySQL8中隱藏索引與降序索引的新特性,隱藏索引和降序索引為數(shù)據(jù)庫的性能優(yōu)化和靈活性提供了有力支持,感興趣的可以了解一下
    2024-08-08
  • MySQL redo死鎖問題排查及解決過程分析

    MySQL redo死鎖問題排查及解決過程分析

    被告知在多實例場景下 MySQL Server hang 住,無法測試下去,原生版本不存在這個問題,而新版本上出現(xiàn)了這個問題,不禁心頭一顫,心中不禁感到奇怪,還好現(xiàn)場環(huán)境還在,為排查問題提供了一個好的環(huán)境,隨即便投入到緊張的問題排查過程當中
    2016-10-10
  • 解決MySql不等于的條件過濾字段值為NULL問題

    解決MySql不等于的條件過濾字段值為NULL問題

    今天遇到一個查詢結果不對的問題,使用isNull能解決問題,但因查詢條件過濾null,還有不同的寫法,總結了兩種實現(xiàn)方式,希望能給大家一個參考
    2024-12-12
  • 解決MySQL無法遠程連接的方法

    解決MySQL無法遠程連接的方法

    這篇文章主要介紹了解決MySQL無法遠程連接的方法,文中給出的解決方案主要針對IP限制時出現(xiàn)的該種情況,需要的朋友可以參考下
    2015-04-04
  • Mysql常用運算符與函數(shù)匯總

    Mysql常用運算符與函數(shù)匯總

    本文給大家匯總介紹了mysql中的常用的運算符以及常用函數(shù)的用法及示例,非常的全面,有需要的小伙伴可以參考下
    2017-09-09
  • MySQL主從延遲問題解決

    MySQL主從延遲問題解決

    這篇文章主要介紹了MySQL主從延遲問題解決的方法,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2021-01-01
  • MySQL5.6.31 winx64.zip 安裝配置教程詳解

    MySQL5.6.31 winx64.zip 安裝配置教程詳解

    這篇文章主要介紹了MySQL5.6.31 winx64.zip 安裝配置教程詳解,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-02-02
  • 避免MySQL中的隱式轉換的方法小結

    避免MySQL中的隱式轉換的方法小結

    在 MySQL 中,隱式轉換可能導致索引失效、結果不符合預期或性能問題,以下是避免隱式轉換的具體方法,從表設計、查詢編寫到配置優(yōu)化,逐步減少隱式轉換的發(fā)生,具體操作過程跟隨小編一起看看吧
    2025-04-04

最新評論