热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

mysql实例与连接

1.一个mysql实例(进程)可以创建多个连接(线程)吗?2.这里连接的概念有分物理上的连接和逻辑上的连接吗?它们和mysql实例是什么关系,是否一一对应关系?3.php里的mysql_connect()是指创建什么连接?是物理...
1.一个mysql实例(进程)可以创建多个连接(线程)吗?
2.这里连接的概念有分物理上的连接和逻辑上的连接吗?它们和mysql实例是什么关系,是否一一对应关系?
3.php里的mysql_connect()是指创建什么连接?是物理连接吗?

回复内容:

1.一个mysql实例(进程)可以创建多个连接(线程)吗?
2.这里连接的概念有分物理上的连接和逻辑上的连接吗?它们和mysql实例是什么关系,是否一一对应关系?
3.php里的mysql_connect()是指创建什么连接?是物理连接吗?

我思考过这个问题,如果你真正明白了什么是一个TCP连接,你的问题你就明白了。
第一点需要明确的是:mysql的Server实例与mysql的Client间通信是走TCP连接

好,明白了这点,现在尝试搞明白什么才是一个真正的TCP连接?

用一个四元组就可以表示一个真正的连接。
[sourceIP,sourcePort,desIP,descPort]该四元组唯一的表示一条TCP连接。

当明白这个你就知道其实一个mysql客户端进程与mysql Server直接是可以有多条TCP连接的。因为mysql客户端可以开启多个端口来连接Server端。

再会上题主的问题。当在mysql client端调用connect()方法的时候,是客户端启动一个端口与mysql Server进行TCP握手连接,三次握手完毕后TCP连接建立完毕。

MySQL的最大连接数max_connections默认151,PHP与其建立的数据库连接都是真正的TCP连接,在PHP使用持久连接下执行下列操作可见:

sudo netstat -antp|head -n2 && 
sudo netstat -antp|egrep "php-fpm|mysqld"|grep ESTABLISHED

比如下面就是就是PHP-FPM和MySQL建立持久连接的情况:

/* 简单的ab压测MySQL连接:Ubuntu14.04,i5-3230M */
// 持久化连接的RPS为5900
$mysqli = @new mysqli('p:127.0.0.1', 'username', 'password', 'database');
// 普通连接的RPS为4200
// $mysqli = new mysqli('127.0.0.1', 'username', 'password', 'database');


上面有5个PHP-FPM工作进程.注意,PHP-FPM的进程数pm.max_children不要多于MySQL的最大连接数max_connections(默认151).
PHP-FPM进程维护的持久连接空闲时间超过wait_timeout后,页面再次执行new mysqli()会返回"MySQL server has gone away"的Warning信息,并重新建立持久连接,可以用@抑制Warning信息的输出.

推荐阅读
  • MySQL语句大全:创建、授权、查询、修改等【MySQL】的使用方法详解
    本文详细介绍了MySQL语句的使用方法,包括创建用户、授权、查询、修改等操作。通过连接MySQL数据库,可以使用命令创建用户,并指定该用户在哪个主机上可以登录。同时,还可以设置用户的登录密码。通过本文,您可以全面了解MySQL语句的使用方法。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • MACElasticsearch安装步骤及验证方法
    本文介绍了MACElasticsearch的安装步骤,包括下载ZIP文件、解压到安装目录、启动服务,并提供了验证启动是否成功的方法。同时,还介绍了安装elasticsearch-head插件的方法,以便于进行查询操作。 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • 本文介绍了关于apache、phpmyadmin、mysql、php、emacs、path等知识点,以及如何搭建php环境。文章提供了详细的安装步骤和所需软件列表,希望能帮助读者解决与LAMP相关的技术问题。 ... [详细]
  • PHPMailer邮件类邮件发送功能的使用教学及注意事项
    本文介绍了使用国外开源码PHPMailer邮件类实现邮件发送功能的简单教学,同时提供了一些注意事项。文章涵盖了字符集设置、发送HTML格式邮件、群发邮件以及避免类的重定义等方面的内容。此外,还提供了一些与PHP相关的资源和服务,如传奇手游游戏源码下载、vscode字体调整、数据恢复、Ubuntu实验环境搭建、北京爬虫市场、进阶PHP和SEO人员需注意的内容。 ... [详细]
  • 众筹商城与传统商城的区别及php众筹网站的程序源码
    本文介绍了众筹商城与传统商城的区别,包括所售产品和玩法不同以及运营方式不同。同时还提到了php众筹网站的程序源码和方维众筹的安装和环境问题。 ... [详细]
  • ubuntu用sqoop将数据从hive导入mysql时,命令: ... [详细]
  • 如何在php中将mysql查询结果赋值给变量
    本文介绍了在php中将mysql查询结果赋值给变量的方法,包括从mysql表中查询count(学号)并赋值给一个变量,以及如何将sql中查询单条结果赋值给php页面的一个变量。同时还讨论了php调用mysql查询结果到变量的方法,并提供了示例代码。 ... [详细]
author-avatar
aixiangsui2011
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有