当前位置: 首页 > Linux

mysql优化

时间:2023-04-06 23:00:49 Linux

数据库级问题解决思路一般应急调优思路:业务突然卡顿,无法进行正常的业务处理!需要立即解决的场景!1.showprocesslist2,解释selectid,namefromstuwherename='clsn';#ALLidnameagesexselectid,namefromstuwhereid=2-1functionresultset>30;showindexfromtable;3.通过执行计划判断,索引问题(是否合理)或语句本身问题4,showstatuslike'%lock%';#查询锁状态killSESSION_ID;#杀死有问题的session一般调优思路:针对业务周期性滞后,比如每天10-11点业务很慢,但是还能用,过了这段时间就好了。1、查看slowlog,分析slowlog,分析慢查询语句。2.按照一定的优先级逐一检查所有的慢语句。3、分析topsql,进行explain调试,查看语句执行时间。4.调整索引或语句本身。系统级cpu:vmstat、sartop、htop、nmon、mpstat内存:free、ps-aux、IO设备(磁盘、网络):iostat、ss、netstat、iptraf、iftop、lsof、vmstat命令描述:Procs:rShows有多少进程在等待CPU时间。b显示处于不可中断睡眠状态的进程数。WaitingforI/OMemory:swpd显示交换到磁盘的数据块数。Thenumberofunuseddatablocks,userbufferdatablocks,anddatablocksusedfortheoperatingsystemSwap:操作系统每秒从磁盘交换到内存,从内存交换到磁盘的数据块数。s1和s0最好是0Io:每秒从设备b1读取到设备b0的数据块数。反映磁盘I/OSystem:显示每秒中断(in)和上下文交换(cs)的数量Cpu:显示用于运行用户代码、系统代码、空闲和等待I/O的CPU时间iostat命令描述示例命令:iostat-dk15iostat-d-k-x5(查看设备使用率(%util)和响应时间(await))tps:设备每秒传输的次数。“传输”是指“I/O请求”。多个逻辑请求可以组合成“一个I/O请求”。iops:硬件出厂时,厂商定义了每秒最大IO数,“一次传输”请求的大小是未知的。kB_read/s:每秒从设备(驱动表示)读取的数据量;KB_wrtn/s:每秒写入设备(驱动表示)的数据量;kB_read:读取的数据总量;kB_wrtn:写入的数据总量;这些单位是千字节。系统级问题的解决方案你认为负载高好还是负载低好?在实际生产中,一般认为只要CPU不超过90%就没有问题。当然也不能排除以下特殊情况:问题一:cpu负载高,IO负载低,内存不足,磁盘性能差SQL问题------>进入数据库层,进一步排查sql问题IO问题(磁盘很关键,糟糕的raid设计,raid降级,锁,单位时间tps太高)tps太高:大量小数据IO,大量全表扫描问题2:高IO负载,低cpu负载alotofsmallIOwriteoperations:autocommit,一个固定值,会产生大量的smallIOIO/PSdisk,硬件出厂时,厂商定义了每秒最大IO数。大量的大IO写操作大概率出现SQL问题。问题3:IO和cpu??负载高。硬件不够或者SQL有问题。>数据库-->架构(高可用,读写分离,分库分表)处理方向:明确优化目标,性能与安全折衷,预防措施硬件优化主机:根据数据库类型,主机CPU选择,内存容量选择,磁盘选择平衡内存和磁盘资源随机I/O和顺序I/O主机RAID卡BBU(BatteryBackupUnit)offcpu选择:cpu的两个关键因素:核心数,主频根据不同业务类型选择:cpu密集型:计算量多,OLTPCPU主频高,核数多IO密集型:查询对比,OLAP核数多,内存选择频率不一定高:OLAP型数据库需要内存多,与数据采集量级有关。对于OLTP类型的数据,一般内存是CPU核数的2~4倍,没有最佳实践。存储:根据存储数据的不同类型,选择不同的存储设备,配置合理的RAID级别(raid5、raid10、热备盘)。对于操作系统,没有必要特别选择,最好做好冗余。剩余(raid1)(ssd、sas、sata)raid卡:主机raid卡选择:实现操作系统磁盘冗余(raid1)平衡内存和磁盘资源随机I/O和顺序I/O主机RAID卡BBU(BatteryBackupUnit))关闭网络设备:使用流量支持更高层的网络设备(交换机、路由器、网线、网卡、HBA卡)注:以上规划应在系统初始设计时考虑。服务器硬件优化1、物理状态灯:2、自带管理设备:远程控制卡(FENCE设备:ipmiiloidarc)、开关机、硬件监控。3、第三方监控软件和设备(snmp、agent)监控物理设施。4.存储设备:内置监控平台。EMC2(被hp收购),日立(hds),IBM的低端代工hds,高端存储是自己的技术,华为的存储系统优化了CPU:基本不用调整,在硬件选型上下功夫即可。内存:基本不用调整,在硬件选择上下功夫即可。SWAP:MySQL尽量避免使用交换。阿里云服务器默认的swap是0IO:raid,没有lvm,ext4或者xfs,ssd,IO调度策略Swap调整(不使用swap分区)这个参数决定了linux倾向于使用swap还是释放文件系统缓存。在内存紧张的情况下,该值越低,越有可能释放文件系统缓存。当然这个参数只能降低使用swap的概率,并不能阻止linux使用swap。修改MySQL配置参数innodb_flush_method,开启O_DIRECT模式。这种情况下,InnoDB的bufferpool会直接绕过文件系统缓存访问磁盘,但是重做日志还是会使用文件系统缓存。值得注意的是,重做日志是覆盖模式,即使使用了文件系统的缓存,也不会占用太多IO调度策略:系统参数调整Linux系统内核参数优化:用户限制参数(MySQL可以不设置以下配置):应用优化业务应用和数据库应用独立,防火墙:iptables、selinux等无用服务(关闭):安装图形界面的服务器上不要启动图形界面runlevel3,另外,想想关于我们的业务以后是不是真的需要MySQL,或者使用其他种类的数据库。使用数据库的最高境界就是不使用数据库。6、数据库优化SQL优化方向:执行计划、索引、SQL重写架构优化方向:高可用架构、高性能架构、分库分表数据库参数优化调整:整体实例(高级优化、扩展)连接层(基础优化)设置合理的连接客户端和连接方式