修改numa和io调度优化mysql性能

一.NUMA设置
单机单实例,建议关闭NUMA,关闭的方法有三种:
1.硬件层,在BIOS中设置关闭;
2.OS内核,启动时设置numa=off;
3.可以用numactl命令将内存分配策略修改为interleave(交叉)
方法3
修改mySQL.server 330行加上numactl
vi /opt/mysql/bin/mysql.server

  • /usr/bin/numactl --interleave all $bindir/mysqld_safe --datadir=$datadir --pid-file=$server_pid_file $other_args >/dev/null 2>&1 &
  • wait_for_pid created $!; return_value=$?

numastat 查看内存分配

  • node0           node1
  • numa_hit             56506002860    201877592362
  • numa_miss             9099468163      1450668930
  • numa_foreign          1450668930      9099468163
  • interleave_hit           6205106         4793392
  • local_node           56485823400    201848609519
  • other_node            9119647623      1479651773

二.IO调度算法
Linux有四种IO调度算法:CFQ,Deadline,Anticipatory和NOOP,CFQ是默认的IO调度算法。完全随机的访问环境下,CFQ与Deadline,NOOP性能差异很小,但是一旦有大的连续IO,CFQ可能会造成小IO的响应延时增加,所以数据库环境建议修改为deadline算法,表现更稳定。
IO调度算法都是基于磁盘设计,所以减少磁头移动是最重要的考虑因素之一,但是使用Flash存储设备之后,不再需要考虑磁头移动的问题,可以使用NOOP算法。NOOP的含义就是NonOperation,意味着不会做任何的IO优化,完全按照请求来FIFO的方式来处理IO。
IO调度,默认cfq
echo ‘deadline’ > /sys/block/sdb/queue/scheduler
cat /sys/block/sdb/queue/scheduler

  • noop anticipatory [deadline] cfq

减少预读,默认128
echo ’16’ > /sys/block/sda/queue/read_ahead_kb
增大队列,默认128
echo ‘512’ > /sys/block/sda/queue/nr_requests
尽量不使用交换区,默认60
echo ‘0’ > /proc/sys/vm/swappiness
开机运行
vi /etc/rc.local

  • echo ‘deadline‘ > /sys/block/sdb/queue/scheduler
  • echo ‘16‘ > /sys/block/sda/queue/read_ahead_kb
  • echo ‘512‘ > /sys/block/sda/queue/nr_requests

vi /etc/sysctl.conf

    • vm.swappiness=0
时间: 2024-08-28 06:03:13

修改numa和io调度优化mysql性能的相关文章

MYSQL之性能优化 ----MySQL性能优化必备25条

今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我 们程序员需要去关注的事情.当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能.这里,我们不会讲过 多的SQL语句的优化,而只是针对MySQL这一Web应用最多的数据库.希望下面的这些优化技巧对你有用. 1. 为查询缓存优化你的查询 大多数的MySQL服务器都开启了查询缓存.这是提高性最有效的方法之一,而且这是被

19个MySQL性能优化要点解析

19个MySQL性能优化要点解析 以下就是跟大家分享的19个MySQL性能优化主要要点,一起学习学习. 1.为查询优化你的查询 大多数的MySQL服务器都开启了查询缓存.这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的.当有很多相同的查询被执行了多次的时候,这些查询结果会被放到一个缓存中,这样,后续的相同的查询就不用操作表而直接访问缓存结果了. 这里最主要的问题是,对于程序员来说,这个事情是很容易被忽略的.因为,我们某些查询语句会让MySQL不使用缓存.请看下面的示例: //

MySQL性能优化(二):优化数据库的设计

一:数据库的设计数据库命名:数据库名的命名一般和项目的名称保持一致,不要随意的起名字. 数据库编码: 采用utf8mb4而不使用utf8 MySQL 的“utf8”实际上不是真正的UTF-8,真正的UTF-8是每个字符最多四个字节,而MySQL的“utf8”只支持每个字符最多三个字节.MySQL一直没有修复这个 bug,他们在 2010 年发布了一个叫作“utf8mb4”的字符集,绕过了这个问题.MySQL的“utf8mb4”才是真正的“UTF-8”.所有在使用“utf8”的 MySQL和Mar

蚂蚁金服架构师带你深入性能优化一MySql性能优化实战

概要: Mysql的优化,大体可以分为三部分:索引的优化,sql语句的优化,表的优化.本文主要帮助自己整理思路,也可作为一个学习MySQL优化的提纲. 索引的优化 只要列中含有NULL值,就最好不要在此例设置索引,复合索引如果有NULL值,此列在使用时也不会使用索引 尽量使用短索引,如果可以,应该制定一个前缀长度 对于经常在where子句使用的列,最好设置索引,这样会加快查找速度 对于有多个列where或者order by子句的,应该建立复合索引 对于like语句,以%或者'-'开头的不会使用索

mysql小白系列_09 mysql性能优化关键点

一 服务器参数调优,有哪些关键点? 1. 应用访问优化 优化方法 性能提升效果 优化成本 说明 减少数据访问能不访问就不访问-减少磁盘IO 1~1000 低 缓存服务器缓存mysql数据,Redis.memorycache 返回更少的数据较少网络传输和磁盘IO 1~100 低 光折射损耗,请求距离/光速=响应时间 减少交互次数 较少网络传输 1~20 低 存储过程(缺乏扩展性),但很少使用,因此应用层实现 IOPS的一些数据 SAS的IOPS 100-200,顺序读写吞吐量大,通常放置顺序写的l

MySQL · 性能优化· InnoDB buffer pool flush策略漫谈

MySQL · 性能优化· InnoDB buffer pool flush策略漫谈 背景 我们知道InnoDB使用buffer pool来缓存从磁盘读取到内存的数据页.buffer pool通常由数个内存块加上一组控制结构体对象组成.内存块的个数取决于buffer pool instance的个数,不过在5.7版本中开始默认以128M(可配置)的chunk单位分配内存块,这样做的目的是为了支持buffer pool的在线动态调整大小. Buffer pool的每个内存块通过mmap的方式分配内

MySQL配置文件mysql.ini参数详解、MySQL性能优化

MySQL配置文件mysql.ini参数详解.MySQL性能优化 my.ini(Linux系统下是my.cnf),当mysql服务器启动时它会读取这个文件,设置相关的运行环境参数. my.ini分为两块:Client Section和Server Section.   Client Section用来配置MySQL客户端参数.   要查看配置参数可以用下面的命令: show variables like '%innodb%'; # 查看innodb相关配置参数 show status like

mysql性能优化-慢查询分析、优化索引和配置

一.优化概述 二.查询与索引优化分析 1性能瓶颈定位 Show命令 慢查询日志 explain分析查询 profiling分析查询 2索引及查询优化 三.配置优化 1)      max_connections 2)      back_log 3)      interactive_timeout 4)      key_buffer_size 5)      query_cache_size 6)      record_buffer_size 7)      read_rnd_buffer

MySQL 性能优化---索引及优化

博主QQ:819594300 博客地址:http://zpf666.blog.51cto.com/ 有什么疑问的朋友可以联系博主,博主会帮你们解答,谢谢支持! 一.MySQL性能优化之-影响性能的因素 1.商业需求的影响 Myisam存储引擎内置一个计数器,count(*)时直接从计数器读取:而通过innodb存储引擎查找某个数据时,是必须扫描全表的,所以当执行对表的统计(即使用count(*)函数)时,myisam要比innodb要快的很多.所以一般在innodb上执行count(*)时一般要