MySQL性能问题
一、性能因素影响
性能问题
性能问题:
硬件层面:
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地址
点击用户身份验证 &#