关于MySQL的Admin Ping Command
前言:
最近在线上诊断QPS飙升的过程中深入进行了下Admin Ping Command的测试。此外,再一些国外文章中最近也读到了一些相关知识,所以写成一篇博文做一下总结。
1. 关于Admin Ping Command?
由于查阅官方文档中没有关于Admin Ping Command的描述和介绍。因此,Google了很多页面,把大家的阐述做一个个人理解总结如下:
什么是Admin Ping Command(后文简称ping命令)?
ping命令实际上是提供了一种轻度消耗命令接口,这种接口用于去判断一个持久连接是否存活,或者远端MySQL是否存活。
当远端MySQL Server接收到这种特殊形式的命令后,不做更多的语法解析和执行计划优化,直接返回结果。
Admin Ping Command有什么用?
在运用链接池方法连接MySQL的时候,这个命令就显得非常有用。因为链接池再把一个空闲链接句柄给到客户端的时候并不知道这个链接是否仍然存活(即没有超时或者被Server 主动kill)。链接池需要用一个命令去判断并触发重连。而这时Ping Command无疑是代价最小的。如果有同学自己用java代码去实现MySQL链接池的话,链接存活判断使用Admin Ping Command是最佳选择。
怎么调用Admin Ping Command?
每个MySQL client/connector 实现Ping Command的方式都不一样。Java的使用方法见:http://mysqlblog.fivefarmers.com/2010/08/25/connector-j-ping/
Perl的使用方法简单的说就是 $dbh->ping(); 详见:http://www.turbolift.com/mysql/DBD_3.21.X.php3#ping
2. Admin Ping Command的性能优势测试
看了上面的介绍,大家一定有很多疑问。例如,用ping比用select 1到底快多少?如何在Server端监控?下文将通过实际测试一一分析。
如何在MySQL Server端观察到Admin Ping Command?
实际上MySQL有一个专门的计数器来统计ping命令。通过show global status like 'Com_admin_commands' 即可看到从Server启动后累计接收到的ping命令次数
Admin Ping Command的性能优势有多大?
下面通过一个简单的perl测试脚本,来观察常用的 select 1 和 ping命令之间的性能差距。脚本分别重复执行十万次ping和select 1,通过time比较两者之间的总执行时间的差距。脚本如下:
use strict;
use warnings;
use utf8;
use DBI;
use IO::Socket;
use FileHandle; my $CONFIG_SERVER_IP ='192.168.26.167';
my $CONFIG_SERVER_DB='test';
my $CONFIG_SERVER_PORT='3310';
my $CONFIG_SERVER_USER='root';
my $CONFIG_SERVER_PASS='password';
my $dbh = DBI->connect("DBI:mysql:$CONFIG_SERVER_DB;host=$CONFIG_SERVER_IP;port=$CONFIG_SERVER_PORT", $CONFIG_SERVER_USER, $CONFIG_SERVER_PASS,{RaiseError => }) || die "Could not connect to database: $DBI::errstr"; for(my $i=;$i<;$i++){
#my $result=$dbh->do('/* ping */select 1');
my $result=$dbh->ping;
}
执行结果:
select : real 0m5.968s
user 0m1.235s
sys 0m1.175s real 0m6.003s
user 0m1.195s
sys 0m1.236s real 0m6.155s
user 0m1.225s
sys 0m1.237s
Admin Ping: real 0m3.426s
user 0m0.604s
sys 0m1.115s real 0m3.483s
user 0m0.681s
sys 0m1.081s real 0m3.467s
user 0m0.614s
sys 0m1.136s
取平均值后,
SELECT 1十万次执行时间: 6.03 秒
Admin PING十万次执行时间:3.45秒
可见后者性能整整高出 74% ,对于链接池这种对响应时间要求极高的实现来说,资源的节省相当可观。
参考资料:
http://mysqlblog.fivefarmers.com/2010/08/25/connector-j-ping/
关于MySQL的Admin Ping Command的更多相关文章
- oozie.log报提示:org.apache.oozie.service.ServiceException: E0104错误 An Admin needs to install the sharelib with oozie-setup.sh and issue the 'oozie admin' CLI command to update sharelib
不多说,直接上干货! 问题详情 关于怎么启动oozie,我这里不多赘述. Oozie的详细启动步骤(CDH版本的3节点集群) 然后,我在查看 [hadoop@bigdatamaster logs]$ ...
- grafana+mysql忘记admin密码解决方法
通过mysql修改admin的密码. 我之前注册了一个用户,所以我直接复制lvusyy这个用户的密码即可. update user inner join (select password,salt,r ...
- MySql 数据库导入"Unknown command '\n'."错误解决办法
原文地址:http://www.cnblogs.com/bingxueme/archive/2012/05/15/2501999.html 在CMD 下 输入: Mysql -u root -p -- ...
- mysql 无法启动 unkown command
1. https://serverfault.com/questions/490656/mysql-not-starting-error-usr-sbin-mysqld-unknown-option- ...
- MySQL:select command denied to user for table 'proc'案例
使用EMS MySQL Manager Pro(3.4.0.1)连接MySQL 5.6.20时,报错:"SELECT command denied to user xxx@xxx.xxx.x ...
- MYSQL使用PMM进行性能监控
简介Percona监视和管理(PMM)是一个用于管理和监视MySQL和MongoDB性能的开源平台.它是由Percona与托管数据库服务.支持和咨询领域的专家合作开发的. PMM是一个免费的开源解决方 ...
- MySQL中间件之ProxySQL(6):管理后端节点
返回ProxySQL系列文章:http://www.cnblogs.com/f-ck-need-u/p/7586194.html 1.配置后端节点前的说明 为了让ProxySQL能够找到后端的MySQ ...
- tunning-prime优化mysql建议
#!/bin/sh # set tabstop=8 ################################################################## ...
- 032:基于Consul和MGR的MySQL高可用架构
目录 一.Consul 1.Consul简介 2.准备环境 3.Consul 安装 4.Consul配置文件 5.Consul 服务检查脚本 6.Consul启动 二.MGR搭建 1.MGR配置 2. ...
随机推荐
- node.js在windows环境下的安装
node.js官网 https://nodejs.org/en/ Download
- Java 线程 — JMM Java内存模型
JMM Java Memory Model,Java内存模型,属于语言级的内存模型 并发编程中存在的问题: 如何通信:用于线程之间交换信息.两种方式:共享内存,消息传递 如何同步:用于控制不同线程间操 ...
- 还有人在用SQL Server 2000或2005吗? 2014来了!
你的项目,还在用SQL Server 2000或2005吗? 很多人甚至还没有来得及用过SQL Server 2008,SQL Server 2012,现在SQL Server 2014已经出来了! ...
- 重装windows7企业版时提示“安装程序无法创建新的系统分区,也无法定位现有系统
第一步:把win7镜像发在你电脑的非系统盘的其他硬盘上. 第二步:重启机器,通过U 盘启动.进入win pe系统,关于这点我说一下,有些朋友也许不知道什么叫win pe系统,这个win pe 究竟有什 ...
- iis 故障导致网站无法访问
服务器使用两三个月突然,昨天无法访问,重启后正常,第二次发生这样的事情了,打开 C:\WINDOWS\system32\LogFiles\HTTPERR 下的 httperr1.txt 201 ...
- angular学习资源
angular学习资源 angularjs库: https://developers.google.com/speed/libraries/devguide?hl=zh-CN#angularjs ...
- 如何制作CSR文件?
如何制作CSR文件? 在申请数字证书之前,您必须先生成证书私钥和证书请求文件(CSR,Cerificate Signing Request),CSR是您的公钥证书原始文件,包含了您的服务器信息和您的单 ...
- 仿iOS Segmented Control样式"
同步发表于http://avenwu.net/2015/02/05/styled_radiogroup_segmented_control Fork on github https://github. ...
- 博为iHospital-HIS医院信息系统产品系列
博为软件iHospital-HIS产品系列式面向大中型医院应用的完整医院流程信息化产品,覆盖了医院主要的业务流程,管理职能,和病人在医院诊疗的各个环节.将医院流程的优化与软件系统完美结合,为建立数字化 ...
- WebService SendTimeout 超时问题
System.TimeoutException: 请求通道在等待 00:01:00 以后答复时超时.增加传递给请求调用的超时值,或者增加绑定上的 SendTimeout 值.分配给此操作的时间可能是更 ...