亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > C#如何在海量數據下的高效讀取寫入MySQL

C#如何在海量數據下的高效讀取寫入MySQL

熱門標簽:如何選擇優質的外呼系統 清遠申請400電話 沈陽智能外呼系統供應商 谷歌地圖標注位置圖解 東莞外呼企業管理系統 手機外呼系統違法嗎 桂林云電銷機器人收費 地圖簡圖標注 南通電銷外呼系統哪家強

前提

由于工作的原因,經常需要對海量數據進行處理,做的數據爬蟲相關,動輒千萬級別的數據,單表幾十個G都是都是家常便飯。  主要開發語言是C#,數據庫使用的是MySQL。

最常見的操作便是 select 讀取數據,然后在C#中對數據進行處理, 完畢后再插入數據庫中。  簡而言之就 select -> process -> insert三個步驟。 對于數據量小的情況下(百萬級別 or 幾百兆)可能最多1個小時就處理完了。但是對于千萬級數據可能幾天,甚至更多。 那么問題來了,如何優化??

 (數據庫的一覽,有圖有真相)

第一步 解決讀取的問題

跟數據庫打交道的方式有很多,我來列舉下吧:

1. 【重武器-坦克大炮】使用重型ORM框架,比如EF,NHibernat 這樣的框架。
2. 【輕武器-AK47】 使用Dapper,PetaPoco之類,單cs文件。靈活高效,使用簡單。居家越貨必備(我更喜歡PetaPoco :))
3. 【冷兵器?匕首?】使用原生的Connection、Command。 然后寫原生的SQL語句。。

分析:

【重武器】在我們這里肯定直接被PASS, 他們應該被用在大型項目中。 

【輕武器】Dapper,PetaPoco 看過源碼你會發現用到了反射,雖然使用IL和緩存技術,但是還是會影響讀取效率,PASS
好吧那就只有使用匕首,原生SQL走起, 利用DataReader 進行高效讀取,并且使用索引取數據(更快),而不是列名。
大概的代碼如下:

using (var conn = new MySqlConnection('Connection String...'))
{
  conn.Open();
  //此處設置讀取的超時,不然在海量數據時很容易超時
  var c = new MySqlCommand('set net_write_timeout=9999999; set net_read_timeout=9999999', conn);
  c.ExecuteNonQuery();

  MySqlCommand rcmd = new MySqlCommand();
  rcmd.Connection = conn;
  rcmd.CommandText = @'SELECT `f1`,`f2` FROM `table1`';
  //設置命令的執行超時
  rcmd.CommandTimeout = 99999999;
  var myData = rcmd.ExecuteReader();

  while (myData.Read())
  {
    var f1= myData.GetInt32(0);
    var f2= myData.GetString(1);
    //這里做數據處理....
  }
}

哈哈,怎么樣,代碼非常原始,還是使用索引來取數據,很容易出錯。  當然一切為了性能咱都忍了

第二步 數據處理

其實這一步,根據你的業務需要,代碼肯定不一, 不過無非是一些字符串處理,類型轉換的操作,這時候就是考驗你的C#基礎功底的時候了。 以及如何高效編寫正則表達式。。。

具體代碼也沒法寫啊 ,先看完CLR via C# 在來跟我討論吧 ,O(∩_∩)O哈哈哈~ 跳過。。。。

第三部 數據插入

如何批量插入才最高效呢?  有同學會說, 使用事務啊,BeginTransaction, 然后EndTransaction。 恩,這個的確可以提高插入效率。 但是還有更加高效的方法,那就是合并insert語句。

那么怎么合并呢?

insert into table (f1,f2) values(1,'sss'),values(2,'bbbb'),values(3,'cccc');


就是把values后面的全部用逗號,鏈接起來,然后一次性執行 。

當然不能一次性提交個100MB的SQL執行,MySQL服務器對每次執行命令的長度是有限制的。 通過 MySQL服務器端的max_allowed_packet  屬性可以查看, 默認是1MB

咱們來看看偽代碼吧

 //使用StringBuilder高效拼接字符串
 var sqlBuilder = new StringBuilder();
 //添加insert 語句的頭
 string sqlHeader = 'insert into table1 (`f1`,`f2`) values';
 sqlBuilder.Append(sqlHeader);
 using (var conn = new MySqlConnection('Connection String...'))
 {
   conn.Open();
   //此處設置讀取的超時,不然在海量數據時很容易超時
   var c = new MySqlCommand('set net_write_timeout=9999999; set net_read_timeout=9999999', conn);
   c.ExecuteNonQuery();

   MySqlCommand rcmd = new MySqlCommand();
   rcmd.Connection = conn;
   rcmd.CommandText = @'SELECT `f1`,`f2` FROM `table1`';
   //設置命令的執行超時
   rcmd.CommandTimeout = 99999999;
   var myData = rcmd.ExecuteReader();
   while (myData.Read())
   {
     var f1 = myData.GetInt32(0);
     var f2 = myData.GetString(1);
     //這里做數據處理....
     sqlBuilder.AppendFormat('({0},'{1}'),', f1,AddSlash(f2));
     if (sqlBuilder.Length >= 1024 * 1024)//當然這里的1MB length的字符串并不等于 1MB的Packet。。。我知道:)
     {
       insertCmd.Execute(sqlBuilder.Remove(sqlBuilder.Length-1,1).ToString())//移除逗號,然后執行
       sqlBuilder.Clear();//清空
       sqlBuilder.Append(sqlHeader);//在加上insert 頭
     }
   }
}

好了,到這里 大概的優化后的高效查詢、插入就完成了。 

結語

總結下來,無非2個關鍵技術點,DataReader、SQL合并,都是一些老的技術啦。

其實,上面的代碼只能稱得上 高效 , 但是, 卻非常的不優雅。。。甚至難看。。。

那那么問題來了?  如何進行重構呢? 通過重構抽象出一個可用的類,而不必關心字符串拼接這些亂七八糟的東西,支持多線程合并寫入,最大限度提高寫入IO,  我們在下一篇文章中再來談談。

您可能感興趣的文章:
  • C#如何連接MySQL數據庫
  • C#連接MySQL操作詳細教程
  • C#實現MySQL命令行備份和恢復
  • C#連接MySQL的兩個簡單代碼示例
  • C#連接mysql的方法【基于vs2010】
  • C#在MySQL大量數據下的高效讀取、寫入詳解
  • c#幾種數據庫的大數據批量插入(SqlServer、Oracle、SQLite和MySql)
  • C#中調用MySQL存儲過程的方法
  • C#連接mysql數據庫完整實例
  • C#實現操作MySql數據層類MysqlHelper實例
  • c# 向MySQL添加數據的兩種方法

標簽:湖州 重慶 常德 內蒙古 天津 臨沂 成都 貴州

巨人網絡通訊聲明:本文標題《C#如何在海量數據下的高效讀取寫入MySQL》,本文關鍵詞  如,何在,海量,數據,下,的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《C#如何在海量數據下的高效讀取寫入MySQL》相關的同類信息!
  • 本頁收集關于C#如何在海量數據下的高效讀取寫入MySQL的相關信息資訊供網民參考!
  • 推薦文章
    国产a网| 久久精品店| 久久精品店| 四虎影视久久| 日本特黄特黄aaaaa大片| 日韩在线观看免费完整版视频| 久久国产精品永久免费网站| 国产麻豆精品视频| 亚州视频一区二区| 精品国产一区二区三区精东影业| 精品久久久久久中文| 久久久久久久网| 一级片片| 国产91丝袜在线播放0| 亚洲www美色| 精品久久久久久中文| 99热精品在线| 成人影院一区二区三区| 亚洲 国产精品 日韩| 日本伦理黄色大片在线观看网站| 成人影视在线播放| 黄视频网站免费| 青青青草影院 | 色综合久久天天综合| 九九九在线视频| 亚洲 国产精品 日韩| 深夜做爰性大片中文| 日韩免费片| 亚洲不卡一区二区三区在线| 国产a免费观看| 国产精品自拍亚洲| 久久精品欧美一区二区| 精品国产一区二区三区久久久蜜臀| 国产成人精品综合| 国产不卡在线观看| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 精品国产一区二区三区久久久蜜臀| 九九热精品免费观看| 国产一区二区高清视频| 欧美一区二区三区性| 成人免费一级纶理片| 日韩在线观看视频免费| 天天色色网| 九九干| 成人影院一区二区三区| 国产一区免费在线观看| 九九九在线视频| 国产a免费观看| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 欧美a级大片| 天天做人人爱夜夜爽2020毛片| 国产伦久视频免费观看视频| 欧美一级视| 成人免费福利片在线观看| 香蕉视频三级| 青青久久精品国产免费看| 国产成人啪精品视频免费软件| 美女被草网站| 日韩免费片| 久久精品店| 在线观看成人网 | 精品国产一区二区三区精东影业| 成人av在线播放| 精品久久久久久中文| 久久国产影视免费精品| 天天做日日爱夜夜爽| 欧美一级视| 午夜激情视频在线观看| 欧美激情中文字幕一区二区| 四虎影视库| 天天色成人| 日韩av成人| 国产视频久久久久| 天天做人人爱夜夜爽2020毛片| 欧美另类videosbestsex久久| 99久久精品费精品国产一区二区| 日本在线不卡视频| 黄色免费三级| 黄色福利片| 你懂的在线观看视频| 国产国产人免费视频成69堂| 国产伦精品一区二区三区在线观看| 91麻豆精品国产自产在线观看一区| 国产91精品系列在线观看| 久久99中文字幕| 美女被草网站| 91麻豆精品国产自产在线观看一区| 国产福利免费视频| 亚洲天堂一区二区三区四区| 天天色色网| 二级片在线观看| 成人高清视频在线观看| 91麻豆精品国产综合久久久| 国产成人欧美一区二区三区的| 美女免费毛片| 美女免费精品高清毛片在线视| 亚洲精品影院| 成人av在线播放| 香蕉视频三级| 91麻豆精品国产综合久久久| 欧美1区| 国产91精品一区二区| 亚洲不卡一区二区三区在线| 国产麻豆精品hdvideoss| 一级女性全黄久久生活片| 成人免费网站久久久| 日本在线www| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 午夜家庭影院| 可以免费在线看黄的网站| 久久久久久久免费视频| 日韩女人做爰大片| 国产伦久视频免费观看视频| 日韩一级黄色片| 天天色成人| 日韩女人做爰大片| 黄色免费三级| 国产综合91天堂亚洲国产| 亚洲精品影院一区二区| 欧美另类videosbestsex| 青草国产在线| 国产一区二区精品在线观看| 国产极品精频在线观看| 亚洲精品中文字幕久久久久久| 99久久精品国产高清一区二区| 精品在线观看一区| 韩国三级香港三级日本三级| 亚州视频一区二区| 国产激情视频在线观看| 欧美激情一区二区三区在线播放| 中文字幕Aⅴ资源网| 美女被草网站| 99久久精品费精品国产一区二区| 久久国产精品自线拍免费| 台湾毛片| 国产原创中文字幕| 国产美女在线观看| 欧美激情伊人| 精品国产香蕉在线播出 | 久久精品店| 999久久久免费精品国产牛牛| 久久99爰这里有精品国产| 在线观看成人网 | 精品国产三级a| 精品视频在线观看一区二区三区| 国产麻豆精品免费密入口| 精品在线视频播放| 亚洲女人国产香蕉久久精品| 欧美一级视频免费观看| 成人免费网站久久久| 日韩免费在线视频| 欧美一级视频免费观看| 精品国产一区二区三区久久久蜜臀| 精品视频一区二区三区免费| 精品视频一区二区三区免费| 91麻豆国产福利精品| 国产高清视频免费观看| 国产网站免费观看| 成人a大片在线观看| 精品国产亚洲一区二区三区| 97视频免费在线观看| 999精品影视在线观看| 国产精品1024永久免费视频 | 日本伦理网站| 成人高清视频在线观看| 午夜久久网| 国产网站免费观看| 成人免费一级纶理片| 成人在免费观看视频国产| 午夜在线亚洲男人午在线| 成人影视在线播放| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 国产91精品一区二区| 日韩在线观看免费完整版视频| 在线观看成人网 | 日韩专区亚洲综合久久| 欧美激情影院| 精品视频在线观看免费| 毛片的网站| 欧美另类videosbestsex| 999久久久免费精品国产牛牛| 日本在线www| 91麻豆爱豆果冻天美星空| 精品视频在线观看一区二区三区| 国产成人精品综合| 麻豆系列国产剧在线观看| 黄视频网站在线免费观看| 欧美一级视频免费观看| 日韩中文字幕一区二区不卡| 久久国产精品永久免费网站| 成人高清免费| 黄视频网站在线观看| 欧美一级视| 午夜欧美成人香蕉剧场| 精品国产香蕉在线播出 | 日韩专区亚洲综合久久| 国产美女在线一区二区三区| 久草免费在线视频| 精品国产一区二区三区久久久蜜臀| 亚洲女初尝黑人巨高清在线观看|