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 閱讀(522) 評論(0)  編輯  收藏 所屬分類: 數據庫

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

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 灵台县| 罗田县| 集安市| 夹江县| 高密市| 乐东| 凤城市| 许昌县| 丽江市| 瑞安市| 孟津县| 柏乡县| 武清区| 遂川县| 海门市| 龙游县| 崇文区| 前郭尔| 库车县| 普定县| 溧水县| 阳泉市| 文山县| 天台县| 昌平区| 阳西县| 乌海市| 永平县| 化德县| 宣汉县| 万安县| 汶川县| 安泽县| 贵溪市| 广东省| 乐昌市| 中方县| 崇州市| 波密县| 沐川县| 罗江县|