校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > .Net Core導入千萬級數據至Mysql的步驟

.Net Core導入千萬級數據至Mysql的步驟

熱門標簽:北京金倫外呼系統 400電話變更申請 html地圖標注并導航 南太平洋地圖標注 催天下外呼系統 400電話辦理服務價格最實惠 武漢電銷機器人電話 呂梁外呼系統 大豐地圖標注app

前期準備

訂單測試表

CREATE TABLE `trade` (
  `id` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
  `trade_no` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
  UNIQUE INDEX `id` (`id`),
  INDEX `trade_no` (`trade_no`)
)
COMMENT='訂單'
COLLATE='utf8_unicode_ci'
ENGINE=InnoDB;

測試環境

操作系統:Window 10 專業版

CPU:Inter(R) Core(TM) i7-8650U CPU @1.90GHZ 2.11 GHZ

內存:16G

MySQL版本:5.7.26

實現方法:

1、單條數據插入

這是最普通的方式,通過循環一條一條的導入數據,這個方式的缺點很明顯就是每一次都需要連接一次數據庫。

 實現代碼:

//開始時間
var startTime = DateTime.Now;
using (var conn = new MySqlConnection(connsql))
{
    conn.Open();
​
    //插入10萬數據
    for (var i = 0; i  100000; i++)
    {
        //插入
        var sql = string.Format("insert into trade(id,trade_no) values('{0}','{1}');",
            Guid.NewGuid().ToString(), "trade_" + (i + 1)
            );
        var sqlComm = new MySqlCommand();
        sqlComm.Connection = conn;
        sqlComm.CommandText = sql;
        sqlComm.ExecuteNonQuery();
        sqlComm.Dispose();
    }
​
    conn.Close();
}
​
//完成時間
var endTime = DateTime.Now;
​
//耗時
var spanTime = endTime - startTime;
Console.WriteLine("循環插入方式耗時:" + spanTime.Minutes + "分" + spanTime.Seconds + "秒" + spanTime.Milliseconds + "毫秒");

10萬條測試耗時:

上面的例子,我們是批量導入10萬條數據,需要連接10萬次數據庫。我們把SQL語句改為1000條拼接為1條,這樣就能減少數據庫連接,實現代碼修改如下:

//開始時間
var startTime = DateTime.Now;
using (var conn = new MySqlConnection(connsql))
{
    conn.Open();
​
    //插入10萬數據
    var sql = new StringBuilder();
    for (var i = 0; i  100000; i++)
    {
        //插入
        sql.AppendFormat("insert into trade(id,trade_no) values('{0}','{1}');",
            Guid.NewGuid().ToString(), "trade_" + (i + 1)
            );
​
        //合并插入
        if (i % 1000 == 999)
        {
            var sqlComm = new MySqlCommand();
            sqlComm.Connection = conn;
            sqlComm.CommandText = sql.ToString();
            sqlComm.ExecuteNonQuery();
            sqlComm.Dispose();
            sql.Clear();
        }
    }
​
    conn.Close();
}
​
//完成時間
var endTime = DateTime.Now;
​
//耗時
var spanTime = endTime - startTime;
Console.WriteLine("循環插入方式耗時:" + spanTime.Minutes + "分" + spanTime.Seconds + "秒" + spanTime.Milliseconds + "毫秒");

10萬條測試耗時:

通過優化后,原本需要10萬次連接數據庫,只需連接100次。從最終運行效果看,由于數據庫是在同一臺服務器,不涉及網絡傳輸,性能提升不明顯。

2、合并數據插入

在MySQL同樣也支持,通過合并數據來實現批量數據導入。實現代碼:

//開始時間
var startTime = DateTime.Now;
using (var conn = new MySqlConnection(connsql))
{
    conn.Open();
​
    //插入10萬數據
    var sql = new StringBuilder();
    for (var i = 0; i  100000; i++)
    {
        if (i % 1000 == 0)
        {
            sql.Append("insert into trade(id,trade_no) values");
        }
​
        //拼接
        sql.AppendFormat("('{0}','{1}'),", Guid.NewGuid().ToString(), "trade_" + (i + 1));
​
        //一次性插入1000條
        if (i % 1000 == 999)
        {
            var sqlComm = new MySqlCommand();
            sqlComm.Connection = conn;
            sqlComm.CommandText = sql.ToString().TrimEnd(',');
            sqlComm.ExecuteNonQuery();
            sqlComm.Dispose();
            sql.Clear();
        }
    }
        
​
    conn.Close();
}
​
//完成時間
var endTime = DateTime.Now;
​
//耗時
var spanTime = endTime - startTime;
Console.WriteLine("合并數據插入方式耗時:" + spanTime.Minutes + "分" + spanTime.Seconds + "秒" + spanTime.Milliseconds + "毫秒");

10萬條測試耗時:

通過這種方式插入操作明顯能夠提高程序的插入效率。雖然第一種方法通過優化后,同樣的可以減少數據庫連接次數,但第二種方法:合并后日志量(MySQL的binlog和innodb的事務讓日志)減少了,降低日志刷盤的數據量和頻率,從而提高效率。同時也能減少SQL語句解析的次數,減少網絡傳輸的IO。

3、MySqlBulkLoader插入

MySQLBulkLoader也稱為LOAD DATA INFILE,它的原理是從文件讀取數據。所以我們需要將我們的數據集保存到文件,然后再從文件里面讀取。

實現代碼:

//開始時間
var startTime = DateTime.Now;
using (var conn = new MySqlConnection(connsql))
{
    conn.Open();
    var table = new DataTable();
    table.Columns.Add("id", typeof(string));
    table.Columns.Add("trade_no", typeof(string));
​
    //生成10萬數據
    for (var i = 0; i  100000; i++)
    {
        if (i % 500000 == 0)
        {
            table.Rows.Clear();
        }
​
        //記錄
        var row = table.NewRow();
        row[0] = Guid.NewGuid().ToString();
        row[1] = "trade_" + (i + 1);
        table.Rows.Add(row);
​
        //50萬條一批次插入
        if (i % 500000 != 499999  i  (100000 - 1))
        {
            continue;
        }
        Console.WriteLine("開始插入:" + i);
​
        //數據轉換為csv格式
        var tradeCsv = DataTableToCsv(table);
        var tradeFilePath = System.AppDomain.CurrentDomain.BaseDirectory + "trade.csv";
        File.WriteAllText(tradeFilePath, tradeCsv);
​
        #region 保存至數據庫
        var bulkCopy = new MySqlBulkLoader(conn)
        {
            FieldTerminator = ",",
            FieldQuotationCharacter = '"',
            EscapeCharacter = '"',
            LineTerminator = "\r\n",
            FileName = tradeFilePath,
            NumberOfLinesToSkip = 0,
            TableName = "trade"
        };
​
        bulkCopy.Columns.AddRange(table.Columns.CastDataColumn>().Select(colum => colum.ColumnName).ToList());
        bulkCopy.Load();
        #endregion
    }
​
    conn.Close();
}
​
//完成時間
var endTime = DateTime.Now;
​
//耗時
var spanTime = endTime - startTime;
Console.WriteLine("MySqlBulk方式耗時:" + spanTime.Minutes + "分" + spanTime.Seconds + "秒" + spanTime.Milliseconds + "毫秒");

10萬條測試耗時:

注意:MySQL數據庫配置需開啟:允許文件導入。配置如下:

secure_file_priv= 

性能測試對比

針對上面三種方法,分別測試10萬、20萬、100萬、1000萬條數據記錄,最終性能入如下:

最后

通過測試數據看,隨著數據量的增大,MySqlBulkLoader的方式表現依舊良好,其他方式性能下降比較明顯。MySqlBulkLoader的方式完全可以滿足我們的需求。

以上就是.Net Core導入千萬級數據至Mysql的步驟的詳細內容,更多關于導入千萬級數據至Mysql的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • .Net Core導入千萬級數據至Mysql數據庫的實現方法
  • 詳解MySQL數據庫千萬級數據查詢和存儲
  • mysql千萬級數據量根據索引優化查詢速度的實現
  • MySQL循環插入千萬級數據
  • MySQL 千萬級數據量如何快速分頁
  • mysql千萬級數據分頁查詢性能優化
  • mysql千萬級數據大表該如何優化?
  • MySQL單表千萬級數據處理的思路分享

標簽:徐州 麗水 龍巖 南充 自貢 無錫 迪慶 西寧

巨人網絡通訊聲明:本文標題《.Net Core導入千萬級數據至Mysql的步驟》,本文關鍵詞  .Net,Core,導入,千萬,級,數據,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《.Net Core導入千萬級數據至Mysql的步驟》相關的同類信息!
  • 本頁收集關于.Net Core導入千萬級數據至Mysql的步驟的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    亚洲黄色片在线观看| 美腿丝袜亚洲一区| 国产精品区一区二区三区| 日本一区二区三区久久久久久久久不 | 国产亚洲精品aa| 久久美女高清视频| 国产精品午夜春色av| 久久精品视频网| 亚洲视频一区二区免费在线观看| 亚洲免费在线视频| 天天色图综合网| 久99久精品视频免费观看| 成人丝袜18视频在线观看| 国产在线乱码一区二区三区| 成人av网站在线| 97精品久久久午夜一区二区三区| 成人黄色a**站在线观看| 欧美亚洲图片小说| 精品久久久久久久久久久久久久久 | 99视频精品全部免费在线| 91国产福利在线| 日本一区二区三区久久久久久久久不 | 欧美网站一区二区| 久久精品一区八戒影视| 天堂va蜜桃一区二区三区漫画版| 色婷婷亚洲精品| 亚洲尤物视频在线| 国产精品中文字幕一区二区三区| 色婷婷综合中文久久一本| 日韩精品资源二区在线| 中文字幕综合网| 国产成人啪免费观看软件| 欧美一区二区三区在线观看视频| 亚洲视频免费在线观看| 成人手机电影网| 国产精品免费免费| 成av人片一区二区| 久久久午夜精品| 国产乱子轮精品视频| 日韩午夜中文字幕| 久久精品国内一区二区三区| 日韩欧美国产一二三区| 亚洲aⅴ怡春院| 欧美国产精品一区二区三区| 国产精品一色哟哟哟| 中文字幕一区二区视频| 韩国精品在线观看| 中文av一区二区| 色综合av在线| 亚洲高清免费在线| 久久亚洲精华国产精华液| 欧美肥胖老妇做爰| 亚洲一区二区在线播放相泽| 日本国产一区二区| 国产酒店精品激情| 亚洲国产视频网站| 欧美精品一区二区三区蜜桃视频| 精品午夜久久福利影院| 亚洲精品乱码久久久久久日本蜜臀| 欧美日韩在线播放三区四区| 婷婷激情综合网| 亚洲一区中文在线| 亚洲国产精品av| 日韩欧美一区二区在线视频| 成人激情电影免费在线观看| 婷婷综合五月天| 亚洲永久免费av| 中文字幕在线一区免费| 精品免费国产一区二区三区四区| caoporn国产精品| 不卡的电影网站| 国产不卡视频在线播放| 乱一区二区av| 韩国在线一区二区| 日韩av一区二区三区| 日韩电影在线一区二区三区| 一区二区三区免费网站| 伊人色综合久久天天人手人婷| 精品福利一区二区三区| 日韩久久精品一区| 日韩欧美中文字幕制服| 精品国产凹凸成av人网站| 久久精品人人爽人人爽| 久久奇米777| 一区二区三区蜜桃| 亚洲福中文字幕伊人影院| 亚洲图片欧美色图| 日韩二区在线观看| 国产精品亚洲人在线观看| 99精品国产一区二区三区不卡| 成人国产电影网| 在线亚洲精品福利网址导航| 国产精品性做久久久久久| 国产精品一区二区久久不卡| 国产精品538一区二区在线| 成人app软件下载大全免费| 欧美午夜电影网| 国产精品久久久久一区| 激情综合网激情| 91国产成人在线| 国产精品国产三级国产a| 天天射综合影视| 91国偷自产一区二区三区成为亚洲经典 | 欧美日韩一级大片网址| 久久综合成人精品亚洲另类欧美 | 精品国内片67194| 亚洲精品一区在线观看| 中文字幕乱码亚洲精品一区| 亚洲成人激情自拍| 一本一道波多野结衣一区二区| 91精品国产麻豆| 一级精品视频在线观看宜春院| 懂色av一区二区三区免费观看| 欧美老女人第四色| 一区二区在线观看免费视频播放| 日本欧美大码aⅴ在线播放| 国产99精品在线观看| 26uuu色噜噜精品一区二区| 亚洲黄色尤物视频| 欧美四级电影在线观看| 一区二区三区四区不卡在线| 99久久免费视频.com| 亚洲男同性恋视频| 国产欧美日韩激情| 91免费视频观看| 日韩国产高清在线| 久久综合色一综合色88| 一本色道综合亚洲| 精品一区二区三区免费| 国产日韩三级在线| 色噜噜偷拍精品综合在线| 日本伊人午夜精品| 国产精品传媒视频| 欧美一区二区三区视频免费| 狠狠狠色丁香婷婷综合激情| 国产精品进线69影院| 日韩一级免费一区| 欧美三级视频在线播放| 岛国精品在线观看| 日韩电影一区二区三区| 亚洲色图第一区| 国产欧美日韩三区| 久久在线观看免费| 欧美艳星brazzers| 91在线观看一区二区| 丁香网亚洲国际| 99久久精品免费| av在线一区二区三区| 国产成人免费在线| 狠狠v欧美v日韩v亚洲ⅴ| 国产成人免费视| 9色porny自拍视频一区二区| 成人精品高清在线| av激情亚洲男人天堂| 欧美在线观看一区| 欧美一级夜夜爽| 日韩一级二级三级| 99国产精品久久久久| 国产一区二区三区四区五区入口| 成人国产精品免费网站| 日本韩国欧美一区| 91精品国产色综合久久ai换脸| 欧美老肥妇做.爰bbww视频| 久久久久久久免费视频了| 国产精品美女一区二区三区| 中文字幕一区二区三区不卡| 伊人婷婷欧美激情| 国产aⅴ综合色| 7777精品伊人久久久大香线蕉超级流畅 | 亚洲r级在线视频| av不卡免费电影| 亚洲精品一区二区精华| 一区二区三区四区乱视频| 国内精品久久久久影院薰衣草| 色哟哟在线观看一区二区三区| 欧美高清视频在线高清观看mv色露露十八| 欧美日本韩国一区二区三区视频| 国产日韩影视精品| 精品一区二区三区不卡 | 日韩国产精品91| 欧美绝品在线观看成人午夜影视| 国产欧美一区二区精品仙草咪| 一区二区三区日韩欧美| 国产成人8x视频一区二区| 6080日韩午夜伦伦午夜伦| 亚洲欧美另类综合偷拍| 国产精品538一区二区在线| 精品国产网站在线观看| 国产综合色在线视频区| 欧美va天堂va视频va在线| 一区二区不卡在线视频 午夜欧美不卡在 | 欧美午夜在线一二页| 亚洲一二三区视频在线观看| 欧洲国内综合视频| 国内成人免费视频| 自拍偷拍国产亚洲| 欧美色倩网站大全免费| 日韩av一级电影| 亚洲国产精品av| 色综合一个色综合|