一个命名管道可以被多个客户端访问吗_一个配置让MySQL在Windows下连接性能提高至少30%...

我们知道,MySQL的登陆方式有两种,分别是TCP/IP 和UNIX域 套接字。

84322bad20f59cfa0dc5995c24507911.png

jdbc

1.TCP/IP 套接字方式

这种方式会在TCP/IP 连接上建立一个基于网络的连接请求,一般是client连接跑在Server上的MySQL实例,2台机器通过一个TCP/IP 网络连接。

比如:

C:甥敳獲zh>mysql -h 192.168.0.10 -uroot -pEnter password: *******Welcome to the MySQL monitor. Commands end with ; or g.Your MySQL connection id is 6Server version: 5.5.20-log MySQL Community Server (GPL)Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.mysql>

这里的客户端是Windows,向IP为192.168.0.10 的服务器上的MySQL实例发起了TCP/IP请求,连接成功后就可以使用MySQL了。

2.UNIX域套接字

UNIX域套接字并不是网络协议,所以只能在MySQL客户端和数据库实例在一台服务器上使用,用户可以在配置文件中指定套接字文件

--socket=/tmp/mysql.sock

上面两种方式是最常见的,下面我要说的是第三种,命名管道和共享内存的方式

在Windows 2000、Windows XP、Windows 2003和Windows Vista以及在此之后的Windows操作系统中,如果两个需要通信的进程在同一台服务器上,那么可以使用命名管道。在MySQL数据库中,需在配置文件中启用--enable-named-pipe选项,除此外,MySQL还提供了共享内存的连接方式,在配置文件中添加--shared-memory。如果想使用共享内存的方式,在连接时,Mysql客户端还必须使用-protocol=memory选项。

经过测试可以发现,命名管道的方式,可以让MySQL在Windows下连接性能提高至少20%-30%。

配置如下,修改my.ini文件,添加如下选项

[mysqld]enable-named-pipesocket=MySQL

然后如果你用的是JDBC客户端,只需修改URL如下:

mysql.jdbc.url=jdbc:mysql://localhost:3306/test?socketFactory=com.mysql.jdbc.NamedPipeSocketFactory&useUnicode=true&characterEncoding=UTF-8&autoReconnct=true&autoReconnectForPools=true

新增的配置就是 socketFactory=com.mysql.jdbc.NamedPipeSocketFactory 这一个。需要注意的是命名管道仅能当连接到位于相同Windows物理机器上的MySQL时才能正常工作,该机器上应使用了JDBC驱动程序。在简单的性能测试中,命名管道的访问速度比标准的TCP/IP访问块30~50%。生产环境中,不少小公司或外包公司都使用的Windows服务器,这么做,性能提升还是很明显的。

关于这个参数的官方文档看这里:https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-named-pipe.html。文档中提到,配置不同,速度不同,有可能pipe会比TCP/IP慢,建议测试后使用。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值