qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          Mysql 批量insert 性能測試

          批量執行insert時,有多種執行方式:
            1、循環單條執行,類似:
          for(){
          insert(sql);
          }
            2、合并為一個事務執行(注:Mysql默認事務是自動提交的,需關閉事務自動提交),類似:
            事務begin
          for()
          {
          insert(sql);
          }
            事務commit
            3、采用insert...values value1,value2批量執行,類似:
            insert into table_name values (value1),(value2)...(valueN);
            下表是在單機情況下,通過java api調用mysql接口方式執行10,100,500,1000條記錄insert時的性能表格
            備注:
            1 數據表大小未超過innodb_buffer_pool_size。
            2 單條記錄為308個字節,max_allow_packet設置為16M。
            3 innodb_flush_log_at_trx_commit=1,單機無binlog。
            4 測試中的執行時間只是一個相對值,不同機器表現肯定不一樣。
            結論:
            1、從實測情況可以知道,在3 的情況下,批量insert性能最高。
            2、java api里面的addBatch是1的情形。
            造成性能差距的可能原因:
            1和2,(1) 1在執行每一條insert時,mysql都會啟動一個事務來跟蹤;而2減少了mysql的事務數。
            (2) 減少了事務日志的同步次數。
            1和3,(1) 壓縮了網絡通信次數,(2) 減少了sql解析次數,(3) 減少了事務數和日志同步次數。
            2和3,減少了sql解析次數。

          posted on 2014-02-26 11:03 順其自然EVO 閱讀(520) 評論(0)  編輯  收藏 所屬分類: 數據庫

          <2014年2月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          2324252627281
          2345678

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 伊吾县| 东至县| 聊城市| 监利县| 神木县| 赤峰市| 芜湖市| 和林格尔县| 科尔| 金堂县| 东乡| 庄浪县| 临武县| 甘南县| 乌什县| 蓬安县| 云和县| 新源县| 正阳县| 开原市| 钟山县| 隆德县| 宝应县| 米易县| 五寨县| 新沂市| 琼海市| 留坝县| 丹东市| 逊克县| 嘉善县| 高要市| 洛浦县| 连南| 垣曲县| 汾西县| 多伦县| 股票| 钟山县| 武平县| 顺义区|