mysql性能问题 03

一、centos安装

win下安装linux

二、性能问题因素与mysql性能因素

什么是性能问题?

对于用户来说:“又卡了”,“怎么死机了”,“反应太慢了”。
对于程序员来说:“程序执行的时长”,“每秒查询的次数”,“内存,CPU的利用率”。

性能优化的目的:(合理利用可利用的资源)俗称:抠门。

吞吐量,越大越好
延迟,越低越好 同样的资源下(前提),吞吐量越高越好,响应时间越低越好。通俗的来说就是:多快好省。
在这里插入图片描述
性能指标参考:
执行时间:一段代码从开始运行到运行结束所使用的时间。
CPU时间:(算法)函数或者线程占用CPU的时间。
内存分配:程序在运行时占用的内存空间。
磁盘吞吐量:描述I/O的使用情况。
网络吞吐量:描述网络的使用情况。
响应时间:系统对某用户行为或者动作做出响应的时间。响应时间越短,性能好。

三、配置虚拟机网络

win下安装linux

四、centos配置jdk

  1. 去Oracle官网下载需要安装的jdk版本,我这里用的是jdk-8u181-linux-x64.tar.gz
  2. 将该压缩包放到/usr/local/jdk目录下,jdk目录需要自己手动创建,也可以叫java,名字自己随意取(见名知意),然后解压该压缩包,输入如下指令:
[root@localhost home]# tar -zxvf jdk-8u20-linux-x64.tar.gz
  1. 接下来就该配置环境变量了,输入以下指令进行配置:
[root@localhost home]# 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

注意:第一行的JAVA_HOME=/usr/local/java此处等号右边的是自己的jdk实际解压目录。如果不是该目录则需要改成自己的实际目录,其他不变

  1. 编辑完之后,保存并退出,然后输入以下指令,刷新环境配置使其生效:
    [root@localhost home]# source /etc/profile
    测试:
[root@localhost home]# javac
用法: javac <options> <source files>
其中, 可能的选项包括:
  -g                         生成所有调试信息
  -g:none                    不生成任何调试信息
  -g:{lines,vars,source}     只生成某些调试信息
  -nowarn                    不生成任何警告
  -verbose                   输出有关编译器正在执行的操作的消息
  -deprecation               输出使用已过时的 API 的源位置
  -classpath <路径>            指定查找用户类文件和注释处理程序的位置
  -cp <路径>                   指定查找用户类文件和注释处理程序的位置
  -sourcepath <路径>           指定查找输入源文件的位置
  -bootclasspath <路径>        覆盖引导类文件的位置
  -extdirs <目录>              覆盖所安装扩展的位置
  -endorseddirs <目录>         覆盖签名的标准路径的位置
  -proc:{none,only}          控制是否执行注释处理和/或编译。
  -processor <class1>[,<class2>,<class3>...] 要运行的注释处理程序的名称; 绕过默认的搜索进程
  -processorpath <路径>        指定查找注释处理程序的位置
  -parameters                生成元数据以用于方法参数的反射
  -d <目录>                    指定放置生成的类文件的位置
  -s <目录>                    指定放置生成的源文件的位置
  -h <目录>                    指定放置生成的本机标头文件的位置
  -implicit:{none,class}     指定是否为隐式引用文件生成类文件
  -encoding <编码>             指定源文件使用的字符编码
  -source <发行版>              提供与指定发行版的源兼容性
  -target <发行版>              生成特定 VM 版本的类文件
  -profile <配置文件>            请确保使用的 API 在指定的配置文件中可用
  -version                   版本信息
  -help                      输出标准选项的提要
  -A关键字[=值]                  传递给注释处理程序的选项
  -X                         输出非标准选项的提要
  -J<标记>                     直接将 <标记> 传递给运行时系统
  -Werror                    出现警告时终止编译
  @<文件名>                     从文件读取选项和文件名

五、Linux性能查询的常用命令

1. ps命令

要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而ps命令就是最基本同时也是非常 强大的进程查看命令.使用该命令可以确定 有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵尸、哪些进 程占用了过多的资源等等.总之大部分信息都是可以通过执行该命令得到的. ps命令 最常 用的还是用于监控后台进程的 工作情况,因为后台进程是不和屏幕键盘这些标准输入/输出设备进行通信的,所以如果需要检测其情况,便可以使用ps命令了.

[root@localhost ~]# ps --help

Usage:
 ps [options]

 Try 'ps --help <simple|list|output|threads|misc|all>'
  or 'ps --help <s|l|o|t|m|a>'
 for additional help text.

For more details see ps(1).

命令参数:

a 显示所有进程
-a 显示同一终端下的所有程序
-A 显示所有进程
c 显示进程的真实名称
-N 反向选择
-e 等于“-A”
e 显示环境变量
f 显示程序间的关系
-H 显示树状结构
r 显示当前终端的进程
T 显示当前终端的所有程序
u 指定用户的所有进程
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的行程
-C<命令> 列出指定命令的状况
–lines<行数> 每页显示的行数
–width<字符数> 每页显示的字符数
–help 显示帮助信息
–version 显示版本显示
在这里插入图片描述
在命令中:
%CPU 表示cpu(代表每个处理器的整体使用率)的使用率,如果持续一段时间里CPU的使用率大于80%,这就可能表名CPU出现瓶颈。
%mem 表示内存的占用率 stat中的参数意义: D 不可中断 Uninterruptible(usually IO) R 正在运行,或在队列中的进程 S 处于休眠状态 T 停止或被追踪 Z 僵尸进程 W 进入内存交换(从内核2.6开始无效) X 死掉的进程 < 高优先级 n 低优先级 s 包含子进程位于后台的进程组
最常用的方法是ps -aux,然后再利用一个管道符号导向到grep去查找特定的进程,然后再对特定的进程进行操作

2. top命令

top命令是linux操作系统下最常用的性能分析工具,能够实时地显示操作系统中各个进程消耗资源的情况。该命令可以 显示CPU是引用、内存使用和执行时间, 下面执行top命令看下执行情况:
在这里插入图片描述

下面分析一下top命令的统计信息的含义。

top - 13:57:00 up 47 min, 2 user, load average: 0.03, 0.04, 0.05

top命令第1行信息,
13:57:00 表示系统运行的当前时间
up 47 min 表示系统运行时间
2 user 表示登录用户的数量。
load average: 0.03, 0.04, 0.05 表示系统负载,既任务队列的平均长度,三个数值分别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: 171 total 表示进程总数
1 running 正在运行的进程数量
169 sleeping 睡眠的进程数量
0 stopped 停止的进程数量
1 zombie 表示僵尸进程数量
0.1 us 表示用户空间占用CPU的百分比(如果用户时间值很高,表明系统正在执行实际的工作)
0.2 sy(表示内核空间占用CPU的百分比,包括终端,(系统时间值持续很高表名网络或驱动器堆栈可能存在瓶颈。通 常 ,系统只会花费很少时间在内核时间 上)
0.0 ni 表示用户进程空间改变过优先级的进程占用CPU的百分比
99.7 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:进程的命令
备注:ctrl + z 结束运行

3. vmstat命令

在这里插入图片描述

首先,分析下进程(procs)的两列信息,如下所示。

  1. r 列表式可运行进程的数量
  2. b 列表式阻塞进程的数量

内存性能优4个报告虚拟内存如何使用的字段

  1. swpd已经使用的交换空间的数量
  2. free 自由RAM数量
  3. buff 缓存使用的RAM的数量
  4. cache 文件系统缓存使用的RAM数量
  5. swap 交换字段进行详细说明
  6. si 表示从磁盘分页到内存的数量
  7. so 表示从内存分页到磁盘的数量。

其余相关的系统命令:sariostatnetstatfree

六、linux管道

linux系统搭建省略:

管道是一种两个进程间进行单向通信的机制。因为管道传递数据的单向性,管道又称为半双工管道。管道的这一特点决定 了器使用的局限性。管道是Linux支持 的最初Unix IPC形式之一,具有以下特点: * 数据只能由一个进程流向另一个进程(其中一个读管道,一个写管道);如果要进行双工通信,需要建 立两个管 道 。 * 管道只能用于父子进程或者兄弟进程间通信。,也就是说管道只能用于具有亲缘关系的进程间通信。 注意:从管道读数 据是一次性操作,数据一旦被 读,它就从管道中被抛弃,释放空间以便写更多的数据。 格式

command1 | command2 | command3

操作符是:”|”,它只能处理经由前面一个指令传出的正确输出信息,对错误信息信息没有直接处理能力。然后,传递给下 一个命令,作为标准的输入
在这里插入图片描述
【指令1】正确输出,作为【指令2】的输入 然后【指令2】的输出作为【指令3】的输入 ,【指令3】输出就会直接显示 在屏幕上面了。 通过管道之后【指令1】和【指令2】的正确输出不显示在屏幕上面

【提醒注意】:

  1. 管道命令只处理前一个命令正确输出,不处理错误输出;
  2. 管道命令右边命令,必须能够接收标准输入流命令才行;

七、mysql性能查询命令

1. show status

– 用来查看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%';

2. show processlist

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

show processlist;

3. show variables

查看mysql系统变量

show variables;
--查看当前session级别的隔离方式
show variables like '%isolation%';
-- 查看isolation帮助 help 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;

下一篇:mysql性能压测 04
上一篇:mysql物理文件 02

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值