影响mysql性能问题的因素与Linux/mysql查询命令

本文探讨了影响MySQL性能的因素,包括虚拟机配置、Linux查询命令的使用,如ps、top和vmstat,以及MySQL性能查询命令,用于监控数据库运行状态。同时,文章提到了虚拟机网络配置和Xshell连接,以及Linux管道机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、性能因素影响

性能因素影响

性能问题

性能问题:
		硬件层面:
			CPU、内存、硬盘、网络、I/O、显卡
		软件层面:
			产品原因:
				代码、SQL、算法
			其他软件原因:
				    数据库、中间件、操作系统
		意识层面:
			测试人员、一线人员、代码实现、产品经理、需求设计
		业务层面:
			实施方案、业务流程重组、需求定位

	商业需求:
		案例:
	    	要求:论坛项目中去统计帖子数量 附加要求:实时更新
	          操作:在mysql中 -- select count(*) from '文章表';
	    	 分析:在论坛中,数据量大可能会达到千万级,innodb存储引擎顶不住
		       每次帖子/文章发布的时候,在统计表中结果+1,所以需要改变要求 
		       实时更新 =》延迟更新(一天)改为定时任务 给innodb加上where条件
	数据表设计:
		innodb存储引擎是全表扫描,myisam存储引擎有计数器所以查询快
		尽量不要有太大的字段,尽量要小

	系统架构:
		技术选型 -- 缓存
		数据的存储 -- 超文本数据、二进制多媒体文件(图片,视频,音频等)varchar字段来存储路径
	影响:
	    硬件 > 业务 > 数据库设计与sql(代码)	

    	问题:
    	    对于用户来说,响应时间10s,1分钟(时间过长,死机)
    	    对于程序员来说:一个程序执行时间太长
    	性能优化的目的:
		对于用户来说:体验好,响应速度快,处理快,结果正确
		对于程序员来说:程序执行顺畅
     	问题原因:
	    	 硬件:磁盘(I/O、寻址)、内存、cup等
		
	     	软件:mysql,算法,代码,程序
	     	业务:
	     	系统架构:事务里面,有很多的数据读写

二、虚拟机配置

2.1 虚拟机黑屏

 解决办法:
		2.1.1 以管理员身份启动CMD(命令行模式)
		2.1.2 重启虚拟机网络 -- netsh winsock reset 
		2.1.3 重启电脑(虚拟机不要关闭,直接重启)

链接地址

2.2 虚拟机网络连接不上

 原因:
 			虚拟网络的服务没有打开 		
 解决办法:
    		2.2.1 win+R 输入services.msc -- 打开服务管理 (5个)
    		2.2.2 把带有 VM 的改成自动 、启动、应用、确定

2.3 配置IP

在这里插入图片描述
在这里插入图片描述

vi /etc/sysconfig/network-scripts/ifcfg-ens33
ONBOOT=no 改成 ONBOOT=yes ,再回车 写上 ZONE=public
IPADDR = 获取IPADDR的值, centos的ip地址 处于起始和结束之间就可以 NETMASK=255.255.255.0 # 子网掩码
GATEWAY=192.168.182.2 网关ip
编辑完成后 按 esc 输入 :wq 保存并退出。
systemctl restart network – 重启
ip addr – 查看虚拟机IP地址

2.4 Xshell连接

在这里插入图片描述

点击新增
		名称:填写名称(自己随便写)
		主机:虚拟机IP地址
		点击用户身份验证 :
			用户名 虚拟机用户名
			密码 虚拟机密码
		点击确定
		点击接受并保存

2.5 虚拟机安装jdk

tar -zxvf jdk-8u20-linux-x64.tar.gz --解压jdk  
		tar -zxvf 用于解压.tar.gz 后缀结尾的
		tar -xvf 用于解压.tar后缀结尾的
mv jdk1.8.0_20 /usr/local/java -- 把解压后的文件移动到/usr/local/java里面去
		配置环境变量
vi /etc/profile -- 在文件末尾配置
export JAVA_HOME=/usr/local/java
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:${JAVA_HOME}/bin
			保存并退出
source  /etc/profile -- 开启环境变量
java -version -- 查看Java的版本

三、Linux查询命令

3.1 ps命令

在这里插入图片描述

a  显示所有进程
			-a 显示同一终端下的所有程序
			-A 显示所有进程
			c  显示进程的真实名称
			-N 反向选择
			-e 等于“-A”
			e  显示环境变量
			f  显示程序间的关系
			-H 显示树状结构
			r  显示当前终端的进程
			T  显示当前终端的所有程序
			u  指定用户的所有进程
			-au 显示较详细的资讯
			-aux 显示所有包含其他使用者的行程
			-C<命令> 列出指定命令的状况
			--lines<行数> 每页显示的行数
			--width<字符数> 每页显示的字符数
			--help 显示帮助信息
			--version 显示版本显示

		状态 STAT:
			S:休眠状态
			s: 有子进程存在
			D:进程不可中断
			R:进程正在运行中
			T: 进程已经停止了
			Z:僵尸进程
			W: 内存交换(内核2.6以后就没有了)
			X: 死掉的进程
			<:优先级高
			N:优先级低
			+:后台运行
		在命令中:
			%CPU 表示cpu(代表每个处理器的整体使用率)的使用率,如果持续一段时间里CPU的使用率大于80%,这就可能表
			名CPU出现瓶颈。
			%mem 表示内存的占用率 stat中的参数意义: ` D 不可中断 Uninterruptible(usually IO) R 正在运行,或在队列中的进程
			 S 处于休眠状态T 停止或被追踪 Z 僵尸进程 W 进入内存交换(从内核2.6开始无效) X 死掉的进程
			高优先级 n 低优先级 s 包含子进程

		常用ps命令:
			ps -aux -- 主要是查看CPU以及内存使用率
			ps -ef |grep mysqld -- 和上一个差不多但没有他详细
			kill -9 进程id -- 杀死进程

3.2 top命令

在这里插入图片描述

top第一行信息:
top - 21:51:44 up 24 min, 2 user, load average: 0.00, 0.01, 0.04
21:51:44 表示系统运行的当前时间
up 24 min 表示系统运行时间
2 user 表示登录用户的数量。
load average: 0.00, 0.01, 0.04 表示系统负载,既任务队列的平均长度,三个数值分别1分钟,5分钟,15分钟 到现在的平均值。

		第2,3行两汉分别表示进程和CPU的性能的一些信息
		Task: 103 total, 1 running, 102 sleeping, 0 stopped, 0 zombie
		%Cpu(s): 0.3 us, 0.0 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
		
		统计信息的含义:
			Tasks: 101 total 表示进程总数
			1 running 正在运行的进程数量
			100 sleeping 睡眠的进程数量
			0 stopped 停止的进程数量
			0 zombie 表示僵尸进程数量
			0.0 us 表示用户空间占用CPU的百分比(如果用户时间值很高,表明系统正在执行实际的工作)
			0.0 sy(表示内核空间占用CPU的百分比,包括终端,(系统时间值持续很高表名网络或驱动器堆栈可能存在瓶颈。通 常 ,系统只会花费很少时间在内核时间 上)
			0.0 ni 表示用户进程空间改变过优先级的进程占用CPU的百分比
			100.0 id 表示空闲cpu(这个值越大表明系统CPU的负荷越小)
			0.0 wa I/O等待 表示等待输入输出的cpu(等待I/O操作所需要的CPU时间总合,系统不应该花费过多的时间等待I/O 操作,否则你应该检查一下I/O子系统各方面的性能)
		
		top 显示出现的每个列的含义分别为:
			PID: 进程描述符
			USER: 进程的拥有者
			PRI:进程的优先级
			NI: nice level
			SIZE: 进程拥有的内存(包括code segment + data segment + stack segment)
			RSS: 物理内存使用
			VIRT(virtul memory usage): 进程需要的虚拟内存大小
			RES(resident memory usage): 常驻内存
			SHARE: 和其他进程共享的物理内存空间
			STAT:进程的状态,有 S=sleeping,R=running,T=stopped or traced,D=interruptible sleep(不可中断的 睡眠状态),Z=zombie。
			%CPU: CPU使用率
			%MEM: 物理内存的使用
			TIME: 进程占用的总共cpu时间
			COMMAND:进程的命令

3.3 vmstat命令

在这里插入图片描述

vmstat
				r列表:是可运行进程的数量
				b列表:是阻塞进程的数量
			内存性能优4个报告虚拟内存如何使用的字段
		
			swpd已经使用的交换空间的数量
			free 自由RAM数量
			buff 缓存使用的RAM的数量
			cache 文件系统缓存使用的RAM数量
			swap交换字段进行详细说明
			si 表示从磁盘分页到内存的数量
			so 表示从内存分页到磁盘的数量。
			其余相关的系统命令:sar、iostat、netstat、free等

四、Linux管道机制

在这里插入图片描述

		命令1|命令2|命令3
				    注意:
					1.管道命令只处理前面一个命令的输出,不处理错误输出
				    2.管道命令右边命令,必须能够接受标椎输入命令才行
				命令1查询结果为 "3 2 1"
				命令2获取到命令1的查询结果 并根据自己的查询条件输出结果为 "2 1"
				命令3获取到命令2的查询结果 并根据自己的查询条件输出结果为 "1"

五、mysql性能查询命令

用来查看mysql在运行过程中的属性状态

show status:
show status like "%变量%";

查看会话状态

			-- 查看当前会话情况
show status like 'Com_%';
			-- 查看全局会话情况
show global status like 'Com_%';
			-- 查看针对innodb存储引擎状态的统计
show global status like 'Innodb_%';
			-- 查看视图连接MySQL服务器次数
show global status like 'connections';
			-- 查看服务器工作时间
show global status like 'uptime';
			-- 查看锁使用情况
show global status like 'innodb_row_lock%';
innodb_flush_log_at_trx_commit -- 事务提交
commit -- 每执行一次

0: 先把数据和重做日志放在内存中,在一定时间后刷新到磁盘中去(性能最好,安全性不高)
1: 直接把数据和重做日志刷新到磁盘中(相对最稳妥的)
2: 先刷新重做日志,再刷新磁盘(性能差,安全性高)

show processlist:

processlist 命令的输出结果显示了有哪些线程在运行,可以帮助识别出有问题的查询语句,两种方式使用这个命令。
show processlist;

> 查看mysql系统变量:

--查看当前session级别的隔离方式
show variables;
-- 查看isolation帮助 help isolation
show variables like '%isolation%';
			-- 局部修改
set session transaction isolation level READ COMMITTED;
show session variables like'%isolation%';
			-- 全局修改
show global variables like '%isolation%';
set global transaction isolation level READ COMMITTED;
show variables like "%isolation%"; -- 查询事务的隔离级别
show variables\G; -- 查询关于mysql系统变量
		对mysql的影响:
			    数据库设计 > 数据库表的设计 > sql语句的查询 > 程序 > 硬件		
  						六星教育--2008期mysql优化--李建宇
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值