[转帖]MySQL 线程池&连接池&长连接&短连接

mysql,线程,连接池,连接 · 浏览次数 : 0

小编点评

**连接池简介** **连接池**是一个用于缓存并提供对数据库连接的共享。它可以优化数据库连接,减少数据库服务器的负载,并提高应用程序的性能。 **主要类型:** * **连接池 1:**适用于所有连接的客户端。 * **连接池 2:**适用于多个分组的连接池。 **主要功能:** * 缓存数据库连接。 * 减少数据库连接的创建和销毁开销。 * 优化数据库连接的性能。 * 减少数据库服务器的负载。 **主要用途:** * 高性能应用程序,例如电商、社交媒体和金融。 * 遇到连接池空间限制的情况。 * 需要频繁连接到数据库的应用程序。 **创建连接池:** 创建连接池时,需要指定连接池的容量。容量取决于应用程序的连接需求。 **使用连接池:** * 创建连接池时,选择合适的连接池类型。 * 使用 `connect()`方法创建连接池。 * 使用 `close()`方法关闭连接池。 * 使用 `getConnection()`方法获取连接池中的连接。 **连接池的优缺点:** **优点:** * 减少数据库连接的创建和销毁开销。 * 优化数据库连接的性能。 * 减少数据库服务器的负载。 **缺点:** * 创建和销毁连接池的开销。 * 可能会阻塞应用程序,如果连接池中存在连接请求。

正文

https://cloud.tencent.com/developer/article/1954015?areaSource=104001.77&traceId=7WZNP412yK3vh7ebw4th0

 

线程池

简介

1、mysql每连接每线程,mysql都分配一个单独的线程,该线程处理客户端发来的所有命令 2、每个线程会占用一定的系统资源,线程数越多消耗的系统资源也越多 3、线程的创建和销毁有一定的开销 4、当线程数过多时,如果大部分线程都处于活跃状态,会导致频繁的上下文切换,从而造成系统巨大的开销 5、线程的本质就是线程共用,多个连接之间共享线程

何时使用

1、在有大量短查询的业务场景下 2、大量长查询的业务场景下不适合使用线程池,由于长查询占据了线程池的线程,导致线程池出现效率低下的情况

组成

1、线程池由多个分组组成 2、每个分组由一个任务队列、一个listener线程以及多个worker线程组成 3、还存在一个timer线程(用于检查线程池分组的状态以及定期清理掉过期的客户端连接)

连接池

简介

1、连接池是一些网络代理服务或应用服务器的特性(如J2EE服务器) 2、实现了一个持久连接的“池”,允许其它程序,客户端来连接 3、连接池将被所有连接的客户端共享使用 4、连接池可以加速连接,也可以减少数据库连接,降低数据库服务器的负载

短连接

简介

1、程序和数据库通信时建立连接,执行操作后,连接关闭 2、基本步骤:连接->数据传输->关闭连接 3、慢速网络下使用短连接,连接的开销会很大 4、在生产繁忙的系统中,连接也可能会收到系统端口数的限制 5、每秒建立上千个连接,连接断开后,端口不会被马上回收利用,必须经历一个“FIN”阶段的等待,直到可被回收利用为止,这样导致端口资源不够用

长连接

简介

1、长连接是指程序之间的连接在建立之后,就一直打开,被后续程序重用 2、当收到一个永久连接请求时,将检查是否已经存在一个(前面已经开启了的)相同的永久连接 3、如果存在,则直接使用这个连接,不存在,则建立一个新的连接(“相同”指用相同的用户名和密码到相同主机的连接) 4、客户端角度,不用每次创建新连接,若客户端对服务器的连接请求很频繁,永久连接将更高效 5、对于高并发业务,若果可能会碰到连接的冲击时,推荐使用长连接或连接池 6、服务器角度,可以节省创建连接的开销,但维持长连接需要内存 7、扩展性好的站点,大部分的访问不需要连接数据库,如果需要频繁访问数据库,可能会在流量增大时候产生性能问题,此时, 长短连接都无法解决问题,应该进行合理的设计和优化来避免性能问题

持久连接和连接池的区别

  • 长连接是一些驱动、驱动框架,ORM工具的特性,由驱动来保持连接句柄的打开,以便后续的数据库操作可以重用连接,从而减少数据库的连接开销
  • 连接池是应用服务的组件,可以通过参数来配置连接数、连接监测、连接的生命周期

参考:《MySQL DBA 修炼之道》

与[转帖]MySQL 线程池&连接池&长连接&短连接相似的内容:

[转帖]MySQL 线程池&连接池&长连接&短连接

https://cloud.tencent.com/developer/article/1954015?areaSource=104001.77&traceId=7WZNP412yK3vh7ebw4th0 线程池 简介 1、mysql每连接每线程,mysql都分配一个单独的线程,该线程处理客户端发来

[转帖]详解MySQL数据库原生的数据复制方式:异步复制、半同步复制与全同步复制

一、MYSQL复制架构衍生史 在2000年,MySQL 3.23.15版本引入了Replication。Replication作为一种准实时同步方式,得到广泛应用。这个时候的Replicaton的实现涉及到两个线程,一个在Master,一个在Slave。Slave的I/O和SQL功能是作为一个线程,

[转帖]jmeter之发送jdbc请求--06篇

1.setup线程组中新建一个JDBC Connection Configuration配置元件 2.设置配置信息 Database URL:jdbc:mysql://127.0.0.1:3306/vue_interface?useUnicode=true&characterEncoding=utf

[转帖]mysql 千万数据迁移的几种方式

最近因为业务需求,我们需要将我们的订单表(一千三百万数据,并且每天已五万条速度增加)已订单类型分组迁移到新的业务表中,以降低我们订单表的大小,同时暂时杜绝订单表所带来的数据瓶颈问题,需求下来了,基本思路也要确定下来,我打算先将三天前的历史数据先跑到表里,待整个业务线迁移过后,我再将剩下的数据跑进去,

[转帖]线上大量CLOSE_WAIT的原因深入分析

这一次重启真的无法解决问题了:一次 MySQL 主动关闭,导致服务出现大量 CLOSE_WAIT 的全流程排查过程。 近日遇到一个线上服务 socket 资源被不断打满的情况。通过各种工具分析线上问题,定位到问题代码。这里对该问题发现、修复过程进行一下复盘总结。 先看两张图。一张图是服务正常时监控到

[转帖]MySQL pid 和 socket 文件说明

2021-10-13 11:595110转载MySQL 1 pid-file文件 MySQL 中的 pid 文件记录的是当前 mysqld 进程的 pid ,pid 亦即 Process ID 。可以通过 pid-file 参数来配置 pid 文件路径及文件名,如果未指定此变量,则 pid 文件默认

[转帖]MySQL 慢查询日志深入理解

https://www.jb51.net/article/210312.htm + 目录 什么是慢查询日志 MySQL的慢查询日志是 MySQL提供的一种日志记录,它用来记录在 MySQL 中响应时间超过阀值的语句,具体指运行时间超过long_query_time 值的 SQL,则会被记录到慢查询日

[转帖]MySQL with Docker - Performance characteristics

https://dev.mysql.com/blog-archive/mysql-with-docker-performance-characteristics/ Docker presents new levels of portability and ease of use when it co

[转帖]MySQL Performance : Impact of InnoDB Transaction Isolation Modes in MySQL 5.7

http://dimitrik.free.fr/blog/archives/2015/02/mysql-performance-impact-of-innodb-transaction-isolation-modes-in-mysql-57.html There were so many valua

[转帖]MySQL Performance : IP port -vs- UNIX socket impact in 8.0 GA

http://dimitrik.free.fr/blog/posts/mysql-performance-80-ga-ip-port-vs-unix-socket-impact.html 2018-06-15 16:05 | MySQL, Performance, InnoDB, Benchmark