emysql默认每次执行sql前,会ping一次数据库, 很奇怪! 不知道为什么。

下面是粗略做了一下效率测试:

表如下:

mysql> show create table just_test\G;
*************************** 1. row ***************************
Table: just_test
Create Table: CREATE TABLE `just_test` (
`id` bigint(20) unsigned NOT NULL,
`data` int(11) NOT NULL,
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_T
IMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
1 row in set (0.02 sec)

在64位win7系统下(CPU: Intel(R) Core(TM) i3 cpu   530@2.93GHz  2.93GHz,     内存:8G),

创建该表,然后插入一条记录, 然后重复执行update该表的data字段为某个值(sql如: update just_test set data = 456),

结果:

========with ping(每次update前都ping一次)的测试结果:========

fg_sql_inf:prof(100).
100 loops, using time: 63ms
ok
2> fg_sql_inf:prof(100).
100 loops, using time: 94ms
ok
3> fg_sql_inf:prof(100).
100 loops, using time: 125ms
ok
4> fg_sql_inf:prof(100).
100 loops, using time: 78ms
ok
5> fg_sql_inf:prof(10000).
10000 loops, using time: 4010ms
ok
6> fg_sql_inf:prof(10000).
10000 loops, using time: 3978ms
ok
7> fg_sql_inf:prof(10000).
10000 loops, using time: 3838ms
ok
8> fg_sql_inf:prof(10000).
10000 loops, using time: 3994ms
ok
9> fg_sql_inf:prof(10000).
10000 loops, using time: 4009ms
ok
10> fg_sql_inf:prof(10000).
10000 loops, using time: 3853ms
ok
11> fg_sql_inf:prof(10000).
10000 loops, using time: 3838ms
ok
12> fg_sql_inf:prof(10000).
10000 loops, using time: 3947ms
ok
13> fg_sql_inf:prof(10000).
10000 loops, using time: 4025ms
ok
14> fg_sql_inf:prof(10000).
10000 loops, using time: 4025ms
ok
15> fg_sql_inf:prof(10000).
10000 loops, using time: 3869ms
ok
16> fg_sql_inf:prof(10000).
10000 loops, using time: 3993ms
ok
17> fg_sql_inf:prof(10000).
10000 loops, using time: 3853ms
ok
18> fg_sql_inf:prof(10000).
10000 loops, using time: 3947ms
ok
19> fg_sql_inf:prof(100000).
100000 loops, using time: 39359ms
ok
20> fg_sql_inf:prof(100000).
100000 loops, using time: 39328ms
ok
21> fg_sql_inf:prof(100000).
100000 loops, using time: 39187ms
ok
22> fg_sql_inf:prof(100000).
100000 loops, using time: 39406ms
ok
23> fg_sql_inf:prof(100000).
100000 loops, using time: 39265ms
ok
24> fg_sql_inf:prof(100000).
100000 loops, using time: 39515ms
ok

======== without ping(不包含ping操作)的测试结果========

2> fg_sql_inf:prof(100).
100 loops, using time: 46ms
ok
3> fg_sql_inf:prof(10000).
10000 loops, using time: 2308ms
ok
4> fg_sql_inf:prof(10000).
10000 loops, using time: 2402ms
ok
5> fg_sql_inf:prof(10000).
10000 loops, using time: 2418ms
ok
6> fg_sql_inf:prof(10000).
10000 loops, using time: 2419ms
ok
7> fg_sql_inf:prof(10000).
10000 loops, using time: 2417ms
ok
8> fg_sql_inf:prof(10000).
10000 loops, using time: 2419ms
ok
9> fg_sql_inf:prof(10000).
10000 loops, using time: 2294ms
ok
10> fg_sql_inf:prof(10000).
10000 loops, using time: 2417ms
ok
11> fg_sql_inf:prof(10000).
10000 loops, using time: 2479ms
ok
12> fg_sql_inf:prof(10000).
10000 loops, using time: 2433ms
ok
13> fg_sql_inf:prof(10000).
10000 loops, using time: 2403ms
ok
14> fg_sql_inf:prof(100000).
100000 loops, using time: 23540ms
ok
15> fg_sql_inf:prof(100000).
100000 loops, using time: 23556ms
ok
16> fg_sql_inf:prof(100000).
100000 loops, using time: 23759ms
ok
17> fg_sql_inf:prof(100000).
100000 loops, using time: 23510ms
ok
18> fg_sql_inf:prof(100000).
100000 loops, using time: 23667ms
ok
19> fg_sql_inf:prof(100000).
100000 loops, using time: 26786ms
ok
20> fg_sql_inf:prof(100000).
100000 loops, using time: 23618ms
ok
21> fg_sql_inf:prof(100000).
100000 loops, using time: 23525ms
ok

可见,ping的操作还是有一定影响, 去掉ping之后, 大概会加快80%

附:

update_test_tbl(_NewVal) ->
        Table = just_test,
        TableBin = atom_to_binary(Table, latin1),

Cmd = <<"update ", TableBin/binary, " set data = 456">>,

execute(Cmd).     % 会调用emysql:execute(?POOL, Cmd)

prof(Times) ->
        F = fun() ->
                      update_test_tbl(1)
              end,
        run(F, Times).

run(Fun, Loop) ->
        statistics(wall_clock),
        for(1, Loop, Fun),
        {_, T1} = statistics(wall_clock),
        io:format("~p loops, using time: ~pms~n", [Loop, T1]),
        ok.

for(Max, Max , Fun) ->
        Fun();
for(I, Max, Fun) ->
        Fun(),

for(I + 1, Max, Fun).

转载于:https://www.cnblogs.com/kamfon/p/4301581.html

emysql: ping VS without ping相关推荐

  1. linux ping策略打开_Linux禁止ping以及开启ping的方法

    Linux默认是允许Ping响应的,系统是否允许Ping由2个因素决定的:A.内核参数,B.防火墙,需要2个因素同时允许才能允许Ping,2个因素有任意一个禁Ping就无法Ping. 具体的配置方法如 ...

  2. Linux 禁ping和开启ping操作

    Linux 禁ping和开启ping操作 # echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all 如果要恢复,只要: # echo 0 > / ...

  3. centos ping不通百度 ping不通外网

    ping不通百度 ping不通外网  这个问题会导致yum源安装软件失败 原因是 /etc/sysconfig/network-scripts/ifcfg-ens33 文件没有配置好 注意检查配置项 ...

  4. 服务禁止方法_Linux禁止ping以及开启ping的方法

    今天浏览一个网站,本着好奇的心态ping一下,发现不管是ping域名和IP都是不通的.这就比较郁闷了,后来百度后知道原来服务器是可以设置禁止ping的,看来是我孤陋寡闻了,接下来给大家分享一下服务器如 ...

  5. 禁ping也能ping的工具: tcping

    网络管理员常用的查看网络延迟标配工具:ping.但是机房服务器禁止ping的情况也很常见.这时候就用到tcping了. tcping 是类似ping的工具,通过TCP协议工作(ping是通过icmp协 ...

  6. Linux禁止ping以及开启ping的方法

    环境 : Ubuntu 和centos Linux默认是允许Ping响应的,系统是否允许Ping由2个因素决定的 : A.内核参数,B.防火墙,需要2个因素同时允许才能允许Ping,2个因素有任意一个 ...

  7. linux ping 命令_Linux ping命令示例

    linux ping 命令 The ping (Packet INternet Groper) command is one of the most widely used utility acros ...

  8. 什么是PING值,PING值的计算方法

    什么是PING值,PING值的计算方法 PING (Packet Internet Grope),因特网包探索器,用于测试网络连接量的程序.Ping发送一个ICMP 回声请求消息给目的地并报告是否收到 ...

  9. linux ping等待时间,linux ping命令详解

    一.ping命令的原理和工作机制 ping命令一般用于检测网络通与不通,也叫时延,其值越大,速度越慢PING(PacketInternet  Grope),因特网包探索器,用于测试网络连接量的程序. ...

  10. 计算机ping 的快捷键,Ping命令使用小技巧

    win7系统中,ping命令的使用可以说是网络故障的宿敌,在ping命令的操作下,各种网络故障都能够被轻松排查,一键重装系统 小编来讲解一下Ping命令使用小技巧吧. Ping命令使用时需要注意:成功 ...

最新文章

  1. 笨办法学C 练习22:栈、作用域和全局
  2. [命令技巧]chmod Set-User-ID Set-Group-ID
  3. 撤消尚未推送的Git合并
  4. React兄弟组件之间通信
  5. 排序学习(LTR)经典算法:RankNet、LambdaRank和LambdaMart
  6. JSP——EL语法总结
  7. android 变量Map集合
  8. find linux 目录深度_浪里淘沙,详解Linux系统中Find命令的实用技巧
  9. 干货|Spring Cloud Stream 体系及原理介绍
  10. php mssql扩展SQL查询中文字段名解决方法
  11. mycat分表之ER表分片、范围分片、取模分片、日期分片、全局表等
  12. datetimepicker中文不生效_搜索引擎技术(二十)- elasticsearch - 中文分词器
  13. python模块-re模块
  14. java 常见关键字的使用
  15. C语言中判断素数的几种方法
  16. 通过.pk8及.pem文件生成Android studio使用的keystore文件。
  17. 可达性分析之三色标记算法详解
  18. 微信群成员活跃度测试软件,微信群活跃度最佳人数是多少?
  19. 《正确写作美国大学生数学竞赛论文》摘录笔记
  20. cocoscreator 使用内置自带的资源和生成单色图片

热门文章

  1. 密码需要带特殊字符(二)
  2. double类型的数值转为小数点2位
  3. 把数组变换成字符串(8)
  4. Mac端SVN工具CornerStone详解
  5. Unity for Windows: III–Publishing your unity game to Windows Phone Store
  6. python检测文件的MD5值
  7. 服务器上装的hadoop系统,在Ubuntu Server 18.04.1中安装Hadoop系统环境
  8. MySQL错误ERROR 1786 (HY000)解决
  9. CenturyLink设定NG-PON2部署阶段 业务、无线回程为初始服务目标
  10. OkHttp3用法全解析