emysql: ping VS without ping
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相关推荐
- linux ping策略打开_Linux禁止ping以及开启ping的方法
Linux默认是允许Ping响应的,系统是否允许Ping由2个因素决定的:A.内核参数,B.防火墙,需要2个因素同时允许才能允许Ping,2个因素有任意一个禁Ping就无法Ping. 具体的配置方法如 ...
- Linux 禁ping和开启ping操作
Linux 禁ping和开启ping操作 # echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all 如果要恢复,只要: # echo 0 > / ...
- centos ping不通百度 ping不通外网
ping不通百度 ping不通外网 这个问题会导致yum源安装软件失败 原因是 /etc/sysconfig/network-scripts/ifcfg-ens33 文件没有配置好 注意检查配置项 ...
- 服务禁止方法_Linux禁止ping以及开启ping的方法
今天浏览一个网站,本着好奇的心态ping一下,发现不管是ping域名和IP都是不通的.这就比较郁闷了,后来百度后知道原来服务器是可以设置禁止ping的,看来是我孤陋寡闻了,接下来给大家分享一下服务器如 ...
- 禁ping也能ping的工具: tcping
网络管理员常用的查看网络延迟标配工具:ping.但是机房服务器禁止ping的情况也很常见.这时候就用到tcping了. tcping 是类似ping的工具,通过TCP协议工作(ping是通过icmp协 ...
- Linux禁止ping以及开启ping的方法
环境 : Ubuntu 和centos Linux默认是允许Ping响应的,系统是否允许Ping由2个因素决定的 : A.内核参数,B.防火墙,需要2个因素同时允许才能允许Ping,2个因素有任意一个 ...
- linux ping 命令_Linux ping命令示例
linux ping 命令 The ping (Packet INternet Groper) command is one of the most widely used utility acros ...
- 什么是PING值,PING值的计算方法
什么是PING值,PING值的计算方法 PING (Packet Internet Grope),因特网包探索器,用于测试网络连接量的程序.Ping发送一个ICMP 回声请求消息给目的地并报告是否收到 ...
- linux ping等待时间,linux ping命令详解
一.ping命令的原理和工作机制 ping命令一般用于检测网络通与不通,也叫时延,其值越大,速度越慢PING(PacketInternet Grope),因特网包探索器,用于测试网络连接量的程序. ...
- 计算机ping 的快捷键,Ping命令使用小技巧
win7系统中,ping命令的使用可以说是网络故障的宿敌,在ping命令的操作下,各种网络故障都能够被轻松排查,一键重装系统 小编来讲解一下Ping命令使用小技巧吧. Ping命令使用时需要注意:成功 ...
最新文章
- 笨办法学C 练习22:栈、作用域和全局
- [命令技巧]chmod Set-User-ID Set-Group-ID
- 撤消尚未推送的Git合并
- React兄弟组件之间通信
- 排序学习(LTR)经典算法:RankNet、LambdaRank和LambdaMart
- JSP——EL语法总结
- android 变量Map集合
- find linux 目录深度_浪里淘沙,详解Linux系统中Find命令的实用技巧
- 干货|Spring Cloud Stream 体系及原理介绍
- php mssql扩展SQL查询中文字段名解决方法
- mycat分表之ER表分片、范围分片、取模分片、日期分片、全局表等
- datetimepicker中文不生效_搜索引擎技术(二十)- elasticsearch - 中文分词器
- python模块-re模块
- java 常见关键字的使用
- C语言中判断素数的几种方法
- 通过.pk8及.pem文件生成Android studio使用的keystore文件。
- 可达性分析之三色标记算法详解
- 微信群成员活跃度测试软件,微信群活跃度最佳人数是多少?
- 《正确写作美国大学生数学竞赛论文》摘录笔记
- cocoscreator 使用内置自带的资源和生成单色图片
热门文章
- 密码需要带特殊字符(二)
- double类型的数值转为小数点2位
- 把数组变换成字符串(8)
- Mac端SVN工具CornerStone详解
- Unity for Windows: III–Publishing your unity game to Windows Phone Store
- python检测文件的MD5值
- 服务器上装的hadoop系统,在Ubuntu Server 18.04.1中安装Hadoop系统环境
- MySQL错误ERROR 1786 (HY000)解决
- CenturyLink设定NG-PON2部署阶段 业务、无线回程为初始服务目标
- OkHttp3用法全解析