亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > MySQL > 正文

mysql數據插入效率比較

2024-07-25 19:09:31
字體:
來源:轉載
供稿:網友

做數據插入時,發現之前上班做哪些辦公系統壓根就沒考慮過數據庫性能這些,因為涉及的數據量小,時間和效率看不出來,可當數據量很大了,大到了每秒需要10000次插入時,這時就不得不考慮你的sql 語句了。當插入100條數據,能想到的數據插入方式:

1:for循環100次,一次次插入數據。連接一次插入100次,這樣是最費時間的也是最費IO和連接的;

2:將100數據插入語句組成一個sql語句,然后連接一次,插入數據。這種費時比第一種要好。

3:使用事物,100次插入,最后一次事物commit; 這種比第二種更快;

4:使用insert語句本身的多數據插入;

當以上方法在少量的數據面前,幾乎沒什么差別,我們壓根感覺不出來。可是,當數據量稍微提大點,比如一次10000條數據。插入的速度效率就出來;

這是mysql實例類;此實例提供mysql的連接,和數據庫相關操作

public class MySqlInstance  {    //連接字符串    private static string mySqlConnectionStr = "Server =localhost;Database=test;Uid=root;Pwd=password.1;";    private static MySqlConnection _mysqlConnect;    private static MySqlConnection mysqlConnect    {      get      {        if (null == _mysqlConnect)        {          _mysqlConnect = new MySqlConnection(mySqlConnectionStr);        }        return _mysqlConnect;      }    }    private static MySqlCommand _mysqlCommand;    private static MySqlCommand mysqlCommand    {      get      {        if (null == _mysqlCommand)        {          _mysqlCommand = mysqlConnect.CreateCommand();        }        return _mysqlCommand;      }    }    //打開連接    public static void OpenConnect()    {      mysqlConnect.Open();    }    //關閉連接    public static void CloseConnect()    {      mysqlConnect.Close();    }    public static MySqlConnection Connection    {      get      {        return mysqlConnect;      }    }    //防注入方式的插入數據    //使用事務 10000插入,最后才一次事務提交    public static int InsertData(string Command, List<MySqlParameter> Params)    {      //程序時間監控      Stopwatch sw = new Stopwatch();      //程序計時開始      sw.Start();      OpenConnect();      //事務開始      MySqlTransaction trans = mysqlConnect.BeginTransaction();      mysqlCommand.CommandText = Command;      mysqlCommand.Parameters.AddRange(Params.ToArray());      int count = 0;      for (int i = 0; i < 10000; i++)      {        if (mysqlCommand.ExecuteNonQuery() > 0)          count++;      }      //事務提交      trans.Commit();      CloseConnect();      mysqlCommand.Parameters.Clear();      //計時停止      sw.Stop();      TimeSpan ts2 = sw.Elapsed;      Console.WriteLine(ts2.TotalMilliseconds);      return count;    }    //查詢出來的是MySqlDataReader 要使用就不能關閉連接    public static MySqlDataReader SelectData(string sql)    {      Stopwatch sw = new Stopwatch();      sw.Start();      // OpenConnect();      MySqlCommand newcommond = new MySqlCommand(sql, mysqlConnect);      MySqlDataReader data = newcommond.ExecuteReader();      // CloseConnect();      sw.Stop();      TimeSpan ts2 = sw.Elapsed;      Console.WriteLine(ts2.TotalMilliseconds);      return data;    }    /// <summary>    /// 查詢出來的是數據集合    /// </summary>    /// <param name="sql"></param>    /// <returns></returns>    public static DataSet SelectDataSet(string sql)    {      MySqlCommand newcommond = new MySqlCommand(sql, mysqlConnect);      MySqlDataAdapter adapter = new MySqlDataAdapter();      adapter.SelectCommand = newcommond;      DataSet ds = new DataSet();      adapter.Fill(ds);      return ds;    }    //不安全插入 有注入    public static int InsertDataSql(string sql)    {      // OpenConnect();      mysqlCommand.CommandText = sql;      int count = mysqlCommand.ExecuteNonQuery();      // CloseConnect();      return count;    }    //安全插入 參數使用@    //不使用事務 10000次插入    public static int InsertDataNoTran(string Command, List<MySqlParameter> Params)    {      Stopwatch sw = new Stopwatch();      sw.Start();      OpenConnect();      mysqlCommand.CommandText = Command;      mysqlCommand.Parameters.AddRange(Params.ToArray());      int count = 0;      for (int i = 0; i < 10000; i++)      {        if (mysqlCommand.ExecuteNonQuery() > 0)          count++;      }      CloseConnect();      mysqlCommand.Parameters.Clear();      sw.Stop();      TimeSpan ts2 = sw.Elapsed;      Console.WriteLine(ts2.TotalMilliseconds);      return count;    }    //一次性拼10000個插入語句一次性提交    public static void test4()    {      Stopwatch sw = new Stopwatch();      sw.Start();      MySqlInstance.OpenConnect();      MySqlTransaction tran = MySqlInstance.Connection.BeginTransaction();      string command = string.Empty;      for (int i = 0; i < 10000; i++)      {        string temp = string.Format("insert into test.testtable(pname,pwd) value ('{0}','{1}'); /r/n", "name" + i, "password." + i);        command += temp;      }      MySqlInstance.InsertDataSql(command);      tran.Commit();      MySqlInstance.CloseConnect();      sw.Stop();      TimeSpan ts2 = sw.Elapsed;      Console.WriteLine(ts2.TotalMilliseconds);    } }

最后建立控制臺程序,分別使用事務提交,不使用事務,和拼接10000條插入在組成事務,這三種方式做一個測試,打印出耗時。結果如圖:

mysql,數據插入

可以看到:10000次插入使用事務提交只用時4.7秒,而不使用事務用時311秒,拼裝成10000次insert語句的耗時7.3秒。這里面耗時7.3秒的,理論上,在數據庫sql執行上也應該和使用事務差不多,這里的耗時主要是用作字符串的拼接上,客戶端耗時比較多;

貼上測試程序代碼:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using MySql.Data;using MySql.Web;using MySql.Data.MySqlClient;using System.Diagnostics;using System.Data;namespace mysqlDEMO01{  class Program  {    static void Main(string[] args)    {            testInsert();      Console.ReadLine();    }    //使用安全防注入 參數使用@ ,安全插入。    public static void testInsert()    {      List<MySqlParameter> lmp = new List<MySqlParameter>();      lmp.Add(new MySqlParameter("@pname", "hello2"));      lmp.Add(new MySqlParameter("@pwd", "1232"));      string command = " insert into test.testtable(pname,pwd) value(@pname,@pwd); ";      MySqlInstance.InsertData(command, lmp);      List<MySqlParameter> lmp2 = new List<MySqlParameter>();      lmp2.Add(new MySqlParameter("@pname", "hello2"));      lmp2.Add(new MySqlParameter("@pwd", "1232"));      MySqlInstance.InsertDataNoTran(command, lmp2);      test4();    }   }}

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美另类老肥妇| 国产精品高潮粉嫩av| 日韩精品丝袜在线| 在线不卡国产精品| 91久久久久久久久久久| 国产一区二区三区免费视频| 欧美做受高潮1| 精品久久久久久久大神国产| 欧美一区二区大胆人体摄影专业网站| 亚洲第一在线视频| 欧美麻豆久久久久久中文| 91chinesevideo永久地址| 91久久精品美女| 91免费视频国产| 成人黄色片网站| 亚洲色图在线观看| 久久99国产精品自在自在app| 欧美激情精品久久久久久大尺度| 亚洲综合在线播放| 久久久免费观看| 国产日韩欧美在线视频观看| 久久久久久成人精品| 欧美性猛交xxxx黑人猛交| 日韩国产在线播放| 亚洲影院色无极综合| 精品一区精品二区| 国产网站欧美日韩免费精品在线观看| 国产欧美精品va在线观看| 高潮白浆女日韩av免费看| 亚洲黄在线观看| 欧美肥老太性生活视频| 久热国产精品视频| 成人www视频在线观看| 欧美午夜精品在线| 欧美性生交xxxxxdddd| 日韩av电影院| 亚洲欧美另类在线观看| 中文字幕亚洲欧美日韩2019| 国产一区二区三区久久精品| 亚洲精品美女视频| 午夜免费在线观看精品视频| 中文字幕日韩精品在线观看| 国产精欧美一区二区三区| 欧美视频裸体精品| 91精品视频观看| 国产一区私人高清影院| 成人黄色片在线| 91在线高清免费观看| 热久久这里只有精品| 日韩高清电影免费观看完整版| 国产成人激情小视频| 黄色一区二区三区| 国产亚洲欧洲在线| 91在线观看免费| 91免费精品视频| 亚洲欧美日韩一区二区三区在线| 亚洲精品久久久久久久久久久久| 欧美亚洲一区在线| 国产精品爱久久久久久久| 日韩美女免费线视频| 国产精品久久久久久网站| 日韩精品中文字幕在线| 精品女厕一区二区三区| 午夜伦理精品一区| 亚洲国产精品视频在线观看| 欧美最猛性xxxxx(亚洲精品)| 亚洲精品99久久久久| 国产精品电影久久久久电影网| 中文字幕国产精品| 欧美一乱一性一交一视频| 亚洲老板91色精品久久| 精品久久久久久| 欧美超级免费视 在线| 另类美女黄大片| 精品人伦一区二区三区蜜桃免费| 97**国产露脸精品国产| 久久久久久网址| 国模精品视频一区二区三区| 91精品国产高清久久久久久久久| 色樱桃影院亚洲精品影院| 国产精品九九久久久久久久| 美日韩精品视频免费看| 不卡av在线网站| 亚洲视频777| 色av中文字幕一区| 91视频九色网站| 欧美激情久久久久| 91久久精品国产91久久| 国产精自产拍久久久久久蜜| 国产亚洲一区二区在线| 欧美黑人狂野猛交老妇| 中文字幕亚洲第一| 日韩免费在线视频| 国产欧美婷婷中文| 国产在线观看精品一区二区三区| 91久久久久久久一区二区| 欧美激情久久久久| 岛国av一区二区在线在线观看| 国产精品av在线播放| 在线亚洲午夜片av大片| 亚洲美女自拍视频| 日韩在线欧美在线| 成人中文字幕+乱码+中文字幕| 精品中文字幕久久久久久| 亚洲一级黄色片| 91久久精品日日躁夜夜躁国产| 亚洲国语精品自产拍在线观看| 欧美性xxxxxxxxx| 狠狠躁天天躁日日躁欧美| 欧美在线视频导航| 久久久久久欧美| 久久久精品国产网站| 欧美日韩中文字幕在线视频| 欧美激情影音先锋| 91免费观看网站| 51精品国产黑色丝袜高跟鞋| 国产成人精品综合久久久| 国产精品日韩久久久久| 国产91精品最新在线播放| 午夜精品久久久久久久99黑人| 国产在线日韩在线| 亚洲欧美精品一区二区| 2018中文字幕一区二区三区| 91在线高清免费观看| 欧美日韩国产在线| 日韩精品在线免费观看| 国产日本欧美视频| 亚洲男人天堂2019| 国产成人免费91av在线| 日韩中文字幕视频在线| 51久久精品夜色国产麻豆| 狠狠色狠狠色综合日日五| 国模精品一区二区三区色天香| 亚洲精品动漫100p| 亚洲四色影视在线观看| 亚洲色图五月天| 久久久免费精品| 精品香蕉在线观看视频一| 欧美激情国产高清| 久久影视免费观看| 日韩欧美在线字幕| 欧美性极品少妇精品网站| 亚洲欧洲一区二区三区在线观看| 欧美日韩成人在线播放| 国产精品久久97| 久久久av亚洲男天堂| 日韩电影免费观看在线| 亚洲国产又黄又爽女人高潮的| 久久精品一区中文字幕| 色悠悠久久久久| 中文字幕日韩精品在线观看| 91香蕉嫩草神马影院在线观看| 亚洲精品视频播放| 国内精品400部情侣激情| 日韩中文有码在线视频| 国产精品高潮呻吟久久av黑人| 久久精品国产免费观看| 久久久久久成人精品| 国产精品视频精品| 国产欧美精品久久久| 中文字幕日韩有码| 国产日韩欧美电影在线观看| 欧美日韩国产中文精品字幕自在自线| 日韩av综合网|