erlang mysql 测试

使用 mysql 库 20个连接池 插入 10K 条 字段为30的记录,花时间约 30 秒

环境: windows   cpu:i5   erlang启动项设置 -smp disable

test_mysql()->
    [Host, Port, User, Password, DB, Encode] = config:get_mysql_config(server),


    Fun = fun(Item) ->
            mysql:start_link(Item, Host, Port, User, Password, DB, fun(_, _, _, _) -> ok end, Encode),
            mysql:connect(Item, Host, Port, User, Password, DB , Encode, true)
    end,
    List = [db1,db2,db3,db4,db5,db6,db7,db8,db9,db10,db11,db12,db13,db14,db15,db16,db17,db18,db19,db20],
    lists:foreach(Fun, List),
    timer:sleep(3000),
    ?PRINT("---db begin~n",[]),
    test_inset(10000).

test_inset(Times) ->
    case Times > 0 of
        true ->
            ID = gen_server:call(mod_uuid, 'get_player_id'),
            F = fun()-> % 单连接注释
              Accid = lists:concat(["0_c", ID]),
              NickName = Accid,
              Money = ID - 10000000000,
              TmpSql = "INSERT INTO `player` VALUES ",
              Sql = lists:concat([TmpSql, " (",  ID, ",'", Accid,"','",NickName, "',0,1418365622,1418382607,'0',1,110300,1,0,250,0,", Money,",",Money,",",Money,",",Money,",0,1,1920001,148,294,2,20,0,'0',0,0,0,0,'[]','[]')"]),
              Index = Times rem 20 + 1,
              Name = list_to_atom(lists:concat(["db",integer_to_list(Index)])),%单线程注释
              %io:format("----name:~p ~n", [Name]),
              db_sql:execute_test(Sql, Name) %单连接改为 db_sql:excute_test(Sql, db1)
            end,%<span style="font-family: Arial, Helvetica, sans-serif;">单连接注释</span>
            spawn(F),%<span style="font-family: Arial, Helvetica, sans-serif;">单连接注释</span>
            test_inset(Times-1);
        false ->
            ?PRINT("---db end~n",[]),
            finish
    end.

单线程,基于上面代码作简单修改

插入10K条 花时间约 380秒 ,

插入5K条  花时间约 69秒,

插入1K 条  花时间约 14秒,

每插入1K 条 休眠 10 秒  (共 335 秒但减去 11次*10的休眠,实使用了 225 秒)


二了,数据库连接池其实可以这样使用

mysql:start_link(db1, Host, Port, User, Password, DB,  fun(_, _, _, _) -> ok end, Encode),

    Count = 20,
    Temp = lists:duplicate(Count, dummy),
    % 启动conn pool
  [begin
         mysql:connect( db1, Host, Port, User, Password, DB, Encode, true)
  end || _ <- Temp],



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值