mysql服务器多线程参数_MySQL服务器的线程数查看方法

2023-10-26

MySQL的variables和status是管理维护的利器,就类似Oracle的spfile和v$表。

MySQL通过系统变量记录很多配置信息,比如最大连接数max_connections:

mysql> show variables like '%connect%';

+--------------------------+-----------------+

| Variable_name | Value |

+--------------------------+-----------------+

| character_set_connection | utf8 |

| collation_connection | utf8_general_ci |

| connect_timeout | 10 |

| init_connect | SET NAMES utf8 |

| max_connect_errors | 10 |

| max_connections | 200 |

| max_user_connections | 0 |

+--------------------------+-----------------+

7 rows in set (0.00 sec)

个参数是指同时连接上来的客户端数量,在5.1版本里默认的值是151,那么实际支持的连接数是这个值加一,也就是152,因为要为系统管理员登录上来查

看信息保留一个连接。这个参数的大小要综合很多因素来考虑,比如使用的平台所支持的线程库数量(windows只能支持到2048)、服务器的配置(特别

是内存大小)、每个连接占用资源(内存和负载)的多少、系统需要的响应时间等。一般Linux系统支持到几百并发是没有任何问题的。可以在global或

session范围内修改这个参数:

mysql> set global max_connections=151;

Query OK, 0 rows affected (0.00 sec)

mysql> show variables like '%connect%';

+--------------------------+-----------------+

| Variable_name | Value |

+--------------------------+-----------------+

| character_set_connection | utf8 |

| collation_connection | utf8_general_ci |

| connect_timeout | 10 |

| init_connect | SET NAMES utf8 |

| max_connect_errors | 10 |

| max_connections | 151 |

| max_user_connections | 0 |

+--------------------------+-----------------+

7 rows in set (0.00 sec)

但是要注意的是,连接数的增加会带来很多连锁反应,需要在实际中避免由此产生的负面影响。

首先我们看一下status的输出:

mysql> status

--------------

mysql Ver 14.14 Distrib 5.1.49, for pc-linux-gnu (i686) using readline 5.1

Connection id: 255260

Current database: mysql

Current user: root@localhost

SSL: Not in use

Current pager: stdout

Using outfile: ''

Using delimiter: ;

Server version: 5.1.49-log MySQL Community Server (GPL)

Protocol version: 10

Connection: Localhost via UNIX socket

Server characterset: utf8

Db characterset: utf8

Client characterset: utf8

Conn. characterset: utf8

UNIX socket: /var/lib/mysql/mysql.sock

Uptime: 161 days 3 hours 42 min 38 sec

Threads: 14 Questions: 160655492 Slow queries: 71 Opens: 8124 Flush tables: 3 Open tables: 64 Queries per second avg: 11.538

--------------

里有个Open

tables输出时64,这就是说当前数据库打开的表的数量是64个,要注意的是这个64并不是实际的64个表,因为MySQL是多线程的系统,几个不同

的并发连接可能打开同一个表,这就需要为不同的连接session分配独立的内存空间来存储这些信息以避免冲突。因此连接数的增加会导致MySQL需要的

文件描述符数目的增加。另外对于MyISAM表,还会建立一个共享的索引文件描述符。

那么在MySQL数据库层面,有几个系统参数决定了可同时打开的表的数量和要使用的文件描述符,那就是table_open_cache、max_tmp_tables和open_files_limit.

mysql> show variables like 'table_open%';

+------------------+-------+

| Variable_name    | Value |

+------------------+-------+

| table_open_cache | 64    |

+------------------+-------+

1 row in set (0.00 sec)

里的table_open_cache

参数是64,这就是说所有的MySQL线程一共能同时打开64个表,我们可以搜集系统的打开表的数量的历史记录和这个参数来对比,决定是否要增加这个参数

的大小。查看当前的打开表的数目的办法一个是用上边提到过的status命令,另外可以直接查询这个系统变量的值:

mysql> show status like 'open%';

+--------------------------+-------+

| Variable_name            | Value |

+--------------------------+-------+

| Open_files               | 3     |

| Open_streams             | 0     |

| Open_table_definitions   | 8     |

| Open_tables              | 8     |

| Opened_files             | 91768 |

| Opened_table_definitions | 0     |

| Opened_tables            | 0     |

+--------------------------+-------+

7 rows in set (0.00 sec)

mysql> show global status like 'open%';

+--------------------------+-------+

| Variable_name            | Value |

+--------------------------+-------+

| Open_files               | 3     |

| Open_streams             | 0     |

| Open_table_definitions   | 10    |

| Open_tables              | 11    |

| Opened_files             | 91791 |

| Opened_table_definitions | 1211  |

| Opened_tables            | 8158  |

+--------------------------+-------+

7 rows in set (0.00 sec)

里有Open_tables就是当前打开表的数目,通过flush

tables命令可以关闭当前打开的表。而全局范围内查看的Opened_tables是个历史累计值。

这个值如果过大,并且如果没有经常的执行flush tables命令,可以考虑增加table_open_cache参数的大小。

接下来看max_tmp_tables 参数:

mysql> show variables like 'max_tmp%';

+----------------+-------+

| Variable_name  | Value |

+----------------+-------+

| max_tmp_tables | 32    |

+----------------+-------+

1 row in set (0.00 sec)

这个参数指定的是单个客户端连接能打开的临时表数目。查看当前已经打开的临时表信息:

mysql> show global status like '%tmp%table%';

+-------------------------+-------+

| Variable_name           | Value |

+-------------------------+-------+

| Created_tmp_disk_tables | 10478 |

| Created_tmp_tables      | 25860 |

+-------------------------+-------+

2 rows in set (0.00 sec)

可以对比这两个值来判断临时表的创建位置,一般选取BLOB和TEXT列、Group by 和 Distinct语句的数据量超过512

bytes,或者union的时候select某列的数据超过512

bytes的时候,就直接在磁盘上创建临时表了,另外内存中的临时表变大的时候,也可能被MySQL自动转移到磁盘上(由tmp_table_size和

max_heap_table_size参数决定)。

继续原来的讨论,增加table_open_cache或

max_tmp_tables 参数的大小后,从操作系统的角度看,mysqld进程需要使用的文件描述符的个数就要相应的增加,这个是由

open_files_limit参数控制的。但是这个参数是OS限制的,所以我们设定的值并不一定总是生效。如果OS限制MySQL不能修改这个值,那

么置为0。如果是专用的MySQL服务器上,这个值一般要设置的尽量大,就是没有报Too many open

files错误的最大值,这样就能一劳永逸了。当操作系统无法分配足够的文件描述符的时候,mysqld进程会在错误日志里记录警告信息。

mysql> show variables like 'open_files%';

+------------------+-------+

| Variable_name    | Value |

+------------------+-------+

| open_files_limit | 1024  |

+------------------+-------+

1 row in set (0.00 sec)

mysql> show variables like 'open_files%';

+------------------+-------+

| Variable_name    | Value |

+------------------+-------+

| open_files_limit | 1024  |

+------------------+-------+

1 row in set (0.00 sec)

对应的,有两个状态变量记录了当前和历史的文件打开信息:

mysql> show global status like '%open%file%';

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| Open_files    | 3     |

| Opened_files  | 91799 |

+---------------+-------+

2 rows in set (0.01 sec)

MySQL为每个连接分配线程来处理,可以通过threads_connected参数查看当前分配的线程数量:

mysql> show status like '%thread%';

+------------------------+--------+

| Variable_name | Value |

+------------------------+--------+

| Delayed_insert_threads | 0 |

| Slow_launch_threads | 0 |

| Threads_cached | 0 |

| Threads_connected | 14 |

| Threads_created | 255570 |

| Threads_running | 2 |

+------------------------+--------+

6 rows in set (0.00 sec)

比较这个threads_connected参数和前面提到的max_connections参数,也可以作为目前的系统负载的参照,决定是否需要修改连接数。

如果查看每个thread的更详细的信息,可以使用processlist命令:

mysql> show processlist;

+--------+-----------+--------------------+----------+-------------+----------+----------------------------------------------------------------+------------------+

| Id | User | Host | db | Command | Time | State | Info |

+--------+-----------+--------------------+----------+-------------+----------+----------------------------------------------------------------+------------------+

|

8293 | repl | 192.168.0.33:47208 | NULL | Binlog Dump | 11574424 | Has

sent all binlog to slave; waiting for binlog to be updated | NULL |

| 140991 | mogile | 192.168.0.33:41714 | mogilefs | Sleep | 0 | | NULL |

| 140992 | mogile | 192.168.0.33:41715 | mogilefs | Sleep | 3 | | NULL |

| 140993 | mogile | 192.168.0.33:41722 | mogilefs | Sleep | 2 | | NULL |

| 140994 | mogile | 192.168.0.33:41723 | mogilefs | Sleep | 1 | | NULL |

| 140995 | mogile | 192.168.0.33:41724 | mogilefs | Sleep | 3 | | NULL |

| 254914 | mogile | 192.168.0.33:43028 | mogilefs | Sleep | 11074 | | NULL |

| 254915 | mogile | 192.168.0.33:43032 | mogilefs | Sleep | 11091 | | NULL |

| 255144 | mogile | 192.168.0.33:47514 | mogilefs | Sleep | 11090 | | NULL |

| 255157 | mogile | 192.168.0.33:47535 | mogilefs | Sleep | 11087 | | NULL |

| 255162 | mogile | 192.168.0.33:47549 | mogilefs | Sleep | 11074 | | NULL |

| 255260 | root | localhost | mysql | Query | 0 | NULL | show processlist |

| 255352 | maopaodev | 192.168.0.78:55399 | maopaodb | Sleep | 3172 | | NULL |

| 255353 | maopaodev | 192.168.0.78:55400 | NULL | Sleep | 8926 | | NULL |

+--------+-----------+--------------------+----------+-------------+----------+----------------------------------------------------------------+------------------+

14 rows in set (0.00 sec)

执行这个命令需要有Process_priv权限,具体的权限分配信息可以查看mysql.user表。

对于影响系统运行的thread,可以狠一点,用kill connection|query threadid的命令杀死它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mysql服务器多线程参数_MySQL服务器的线程数查看方法 的相关文章

  • 二维码 ThoughtWorks.QRCode 之 index was outside bounds of the array

    最近在使用ThoughtWorks QRCode过程中 单独生成一个二维码没有出现过问题 在重复利用QRCodeEncoder生成二维码的过程中 会出现index was outside bounds of the array错误 经过调试
  • JS 作用域

    var和let的比较 var是老版JavaScript中定义变量的标识符 let是新版JavaScript中定义变量的标识符 let的出现是为了解决var定义变量的一些遗留问题而推出的 在同一个作用域下 var允许重复声明 let不允许重复
  • SpringBoot整合Minio

    1 引入依赖 POM文件如下
  • 【Linux虚拟机】VirtualBox搭建linux虚拟机

    Linux从虚拟机创建到程序运行 ubuntu版 实际工作中 总是需要开发环境 测试环境和生产环境 但是很多小伙伴是没有这么多可供使用的服务器的 尤其是学习使用阶段 可能因为不熟悉服务器的配置 重复的重启 安装 卸载等 我们需要有自己可以随
  • 聊天相关表结构及业务逻辑

    表结构 CREATE TABLE t chat record id bigint 20 NOT NULL send user id bigint 20 DEFAULT NULL COMMENT 发送人 receive user id big
  • mysql视图的应用场景_MySQL视图适用于哪些场景?

    MySQL视图适用于哪些场景 答 1 视图能简化用户操作 视图机制使用户可以将注意力集中在所关心的数据上 如果这些数据不是直接来自基本表 则可以通过定义视图 使数据库看起来结构简单 清晰 并且可以简化用户的数据查询操作 例如 那些定义了若干
  • 服务器virsh不显示虚机,KVM之virsh常用命令

    沙发 1121644742 Post 2016 04 19 下午5 40 help 打印帮助 attach device 从一个XML文件附加装置 attach disk 附加磁盘设备 attach interface 获得网络界面 aut
  • Java创建student类

    目录 创建包 包名可以自拟 在包中创建student类 创建Penpal类继承student类 在HelloWorld中实现测试 创建一个叫做Student的类 对象属性 姓名 年龄 性别 身高 对象方法 说话 计算加法 年龄长一岁 类属性
  • 数据库应用:Mycat+HAProxy+Keepalived实现高可用

    目录 一 理论 1 高可用 2 部署高可用 二 实验 1 Mycat HAProxy Keepalived实现高可用 三 问题 1 开启HA Proxy失败 2 VMware 克隆linux 网卡UUID重复问题 3 keepalived状
  • 从零开始搭建Kafka集群遇到的问题

    文章目录 安装kafka 下载kafka 2 12 3 1 0 tgz 使用Xshell将文件传入虚拟机 解压 启动kafka 使用kakfa自带的zookeeper 修改kafka配置 启动kafka 使用kafka 创建主题 查看主题
  • 考试系统服务器考试机,网络考试系统——服务器考试管理系统

    内容介绍 原文档由会员 快乐浪子 发布 网络考试系统 服务器考试管理系统 内容丰富 建议下载阅览 页数 32 字数 12157 摘要 在网络技术逐渐渗入社会生活各个层面的今天 传统的考试方式也面临着变革 而网络考试则是一个很重要的方向 基于
  • 对称加密算法之RC4介绍及OpenSSL中RC4常用函数使用举例

    RC4是一种对称密码算法 它属于对称密码算法中的序列密码 streamcipher 也称为流密码 它是可变密钥长度 面向字节操作的流密码 RC4是流密码streamcipher中的一种 为序列密码 RC4加密算法是Ron Rivest在19
  • 开发要点-Vue3.0通用知识学习

    开发要点 Vue3 0通用知识学习 2020 09 18 发布的Vue3 0正式版 建议先学ts 因为Vue3 0框架多数都是用ts重写的 API文档仔细阅读 Vue3亮点 Performance 性能更快 Tree shaking sup
  • linux下查看磁盘分区,文件系统,磁盘文件系统的命令

    http www linuxsir org bbs thread214738 html 一 df 命令 df 是来自于coreutils 软件包 系统安装时 就自带的 我们通过这个命令可以查看磁盘的使用情况以及文件系统被挂载的位置 举例 S
  • 国内网络安全公司、社区简介

    国内网络安全公司简介 1 http www symantec com region cn 赛门铁克中国一家从事网络安全服务的公司 挺供网络安全产品下载 整体网络安全解决方案 2 http www nsfocus com 绿盟科技有限公司 一
  • 解决数据修改,但是视图未更新

    例一 在uniapp或者vue中 有时候会遇到数据修改 但实际上视图的数据未更新的情况 例如 直接赋值就不会改变视图 用this set 后 就可以更新视图 但是当this list time有设置默认值时 不管直接是直接赋值还是用set
  • (Z)复杂繁琐的芯片设计流程

    芯片制造的过程就如同用乐高盖房子一样 先有晶圆作为地基 再层层往上叠的芯片制造流程后 就可产出必要的 IC 芯片 这些会在后面介绍 然而 没有设计图 拥有再强制造能力都没有用 因此 建筑师的角色相当重要 但是IC 设计中的建筑师究竟是谁呢
  • uniapp连接蓝牙相关问题

    设备蓝牙连接成功 获取不到设备蓝牙服务列表 这种情况一般会接收到uniapp的错误码 10004 我们可以前往uniapp官网API模块查看错误码信息 查看后可以得知错误码10004是没有找到指定服务 我们可以详细看下获取所有服务的api
  • 单例模式实现

    单例模式 一个类在任何情况下都绝对只有一个实例 并提供一个全局访问点 单例模式是创建型模式 单例模式的应用场景 某类只要求生成一个对象的时候 如一个国家主席 班级班长等 单例模式的好处 由于单例模式只允许创建一个对象 共享该对象可以节省内存

随机推荐

  • 关于高通AR摄像机聚焦和调用前后摄像头的研究

    我们在做高通AR的时候会有一些设置的图片无法识别的情况 怎么解决呢 Vuforia有个Target Manager 这里主要负责处理待识别的Target 在最新的4 0版本中 可识别的标志包括以下四种类型 一般使用较多的是Single Im
  • k8s 读书笔记 - 深入掌握 Pod 扩缩容

    Pod 扩缩容的应用场景 在实际生产环境中通常会遇到某个服务需要扩缩容的场景 某个 Service 服务资源紧张 需要对其进行扩容 比如服务请求的负载突然增加 原本一个 Pod 副本开始吃不消 此时需要多扩展几个 Pod 副本来分担突发的负
  • dnsmasq搭建dns

    dnsmasq服务端 安装 yum y install dnsmasq 改配置文件 root yum nfs egrep v etc dnsmasq conf resolv file etc resolv dnsmasq conf stri
  • 示例:统计IP地址对应的省份,并把结果存入到mysql

    ip txt access log import java io BufferedReader FileInputStream InputStreamReader import java sql Connection DriverManag
  • vscode利用ssh远程连接linux虚拟机

    1 vscode是利用ssh远程连接linux的 所以首先确保vscode已经安装了这两个插件 2 点击左下角的连接 3 选择Connect to Host 4 选择添加新的主机 5 按格式输入 ssh 主机名 ip 比如我的 ssh du
  • python list列表操作进阶

    1 list基础介绍 在Python中 list是一种非常重要并且使用也非常广泛的数据类型 可以存储任意数量的有序元素 list可以包含不同数据类型的元素 如整数 浮点数 字符串等 并且可以随时添加或删除其中的元素 使得它在处理动态变化数据
  • Windows小技巧12--永久关闭开机弹出的今日热点

    Windows小技巧12 永久关闭开机弹出的今日热点 1 异常概述 2 解决方法 3 说明 1 异常概述 笔者最近打开Windows 发现总会自动弹出一个未知的今日热点 如下图 即便设置了永久不再弹出 下次开机的时候也会弹出 并且会随机发各
  • windows 安装Python2.7

    Win7 Python2 7 安装教程 Win7 Python2 7 安装过程如下 1 到 官方网站 下载安装文件包Python 2 7 10 amd64 msi 根据自己的电脑配置选择相应的安装包 点击安装即可 默认安装在C Python
  • DOM——页面的渲染、style属性操作、预加载与懒加载、防抖与节流

    一 页面的渲染 一 浏览器加载一份HTML文档的加载过程 1 把标签 文本 注释 属性等html代码解析为节点树 DOM Tree 2 把所有样式 css代码和浏览器自带 解析为结构体 3 把css样式结构体和节点树结合变成呈现树 渲染树
  • 学生考试信息管理系统c语言程序,C语言版学生信息管理系统

    本文实例为大家分享了C语言版学生信息管理系统的具体代码 供大家参考 具体内容如下 一 题目分析 1 功能概述 1 查询学生信息 2 添加学生信息 3 修改学生信息 4 删除学生信息 5 刷新学生信息 6 保存学生信息 7 输出当前学生信息
  • 简单的Kali Linux学习教程

    第一步 安装Kali Linux 您可以从Kali Linux官方网站下载Kali Linux的安装镜像文件 安装程序提供了多种选项 包括在磁盘上安装 在虚拟机中运行等 第二步 更新系统 安装完成后 首先需要通过以下命令更新系统 sudo
  • 【思特沃克前端校招笔试、一面、二面】

    思特沃克 1 前端海外岗 四月中旬收到笔试 写完后几天约一面 一面后两周约二面 2 大概两周后收到邮件答复一面过了约二面 结果点约面链接进去没有显示 通过该邮件咨询了下只要等待下次邀约就行 3 结果几天后收到了感谢信 邮件咨询校招组也无回应
  • 基于bp神经网络的房价预测,房价预测 神经网络

    Python 与深度学习有哪些与建筑设计相接轨的可能性 关注这个问题快一周了 到目前来说还是没发现什么太大的惊喜 我感觉建筑设计界还是要学习一个 不要看到深度学习很火 就弄个大新闻 把这玩意往建筑设计上搬呀 其实深度学习这事儿到底怎么就能和
  • LightGBM 源码学习 (2022-5)

    之前在Linux系统上调试的博文 LightGBM源码学习 准备篇 系统 MacOS 软件 Clion 感觉最新的commit可能有坑 退回到2021年年初的commit code link git checkout 967b45c6866
  • 【爬虫自动生成代码】Playwright系列文章二

    Playwright系列文章 目录 Playwright系列文章 前言 一 Playwright录制功能 二 使用步骤 1 查看命令参数 help 2 命令启动浏览器 总结 前言 Playwright是类似于selenium Pyppete
  • android support design jar,错误:程序类型已存在:android.support.design...

    我在构建项目时遇到以下错误 在这个项目中没有使用CoordinatorLayout 刚刚在build gradle中添加为依赖项 我使用的是Android Studio 3 2 Canary 4 logcat的 AGPBI kind err
  • uv纹理坐标设定与贴图规则

    1 什么是UV 对于三维模型 有两个最重要的坐标系统 一是顶点的位置 X Y Z 坐标 另一个就是UV坐标 什么是UV 简单的说 就是贴图影射到模型表面的依据 完整的说 其实应该是UVW 因为XYZ已经用过了 所以另选三个字母表示 U和V分
  • VUE 时间转换的几种方式

    时间转换 做一个项目肯定会关系到很多的数据类型 数据类型之间都是可以转化的 前端有时候从后端拿到的时间不符合标准 此时就需要转换以后再去使用 转换有两种方式 看你个人比较喜欢哪一种 这里已时间转换为例子 过滤器filter 全局过滤器 在m
  • unity 发布webGl ISS发布

    推荐 https blog csdn net weixin 43926289 article details 122943814 其他的按照步骤配置就行了 主要是 一定要按图来 OVER 另外说一下本地浏览器直接打开index 有些项目要求
  • mysql服务器多线程参数_MySQL服务器的线程数查看方法

    MySQL的variables和status是管理维护的利器 就类似Oracle的spfile和v 表 MySQL通过系统变量记录很多配置信息 比如最大连接数max connections mysql gt show variables l