当前位置: 首页 > news >正文

Linux操作文档——MySQL优化(5.7.26)

文章目录

    • 一、内存优化
    • 二、参数优化
    • 三、锁等待
    • 四、死锁监控
    • 五、主从优化


一、内存优化

[root@mysql-1 ~]# echo 0 >/proc/sys/vm/swappiness     //临时
[root@mysql-1 ~]# vim /etc/sysctl.conf     //永久
vm.swappiness=0
[root@mysql-1 ~]# sysctl -p

二、参数优化

参数解释用法
Max_connectionsMysql的最大连接数,如果服务器的并发请求量比较大,可以调高这个值Max_connections=1024
back_logmysql能暂存的连接数量,只有如果期望在一个短时间内有很多连接的时候需要增加它back_log=1024
wait_timeout指的是mysql在关闭一个非交互的连接之前所要等待的秒数wait_timeout=60
interactive_timeout指的是mysql在关闭一个交互的连接之前所需要等待的秒数interactive_timeout=1200
key_buffer_size指定索引缓冲区的大小,它决定索引处理的速度,尤其是索引读的速度key_buffer_size=64M
query_cache_size查询缓存简称QC,使用查询缓冲,mysql将查询结果存放在缓冲区中,今后对于同样的select语句(区分大小写),将直接从缓冲区中读取结果。query_cache_size=128M
query_cache_type缓存类型,决定缓存什么样的查询,设置为0,相当于禁用,设置为1,将会缓存所有的结果,设置为2,则只缓存在select语句中通过SQL_CACHE指定需要缓存的查询query_cache_type=1
max_connect_errors负责阻止过多尝试失败的客户端以防止暴力破解密码等情况,当超过指定次数,mysql服务器将禁止host的连接请求,直到mysql服务器重启或通过flush hosts命令清空此host的相关信息max_connect_errors=2000
sort_buffer_size每个需要进行排序的线程分配该大小的一个缓冲区sort_buffer_size=1M
max_allowed_packetmysql根据配置文件会限制,server接受的数据包大小max_allowed_packet=32M
join_buffer_size用于表间关联缓存的大小,和sort_buffer_size一样,该参数对应的分配内存也是每个连接独享join_buffer_size=2M
thread_cache_size服务器线程缓存,这个值表示可以重新利用保存在缓存中线程的数量,当断开连接时,那么客户端的线程将被放到缓存中以响应下一个客户而不是销毁(前提是缓存数未达上限),如果线程重新被请求,那么请求将从缓存中读取,如果缓存中是空的或者是新的请求,那么这个线程将被重新创建,如果有很多新的线程,增加这个值可以改善系统性能thread_cache_size=32
innodb_buffer_pool_sizeInnoDB使用该参数指定大小的内存来缓冲数据和索引。对于单独的MySQL数据库服务器,最大可以把该值设置成物理内存的80%,一般我们建议不要超过物理内存的70%innodb_buffer_pool_size=2048M
innodb_flush_log_at_trx_commit控制了innodb将log buffer中的数据写入日志文件并flush磁盘的时间点,取值分别为0、1、2。0,表示当事务提交时,不做日志写入操作,而是每秒钟将log buffer中的数据写入日志文件并flush磁盘一次;1,每次事务的提交都会引起redo日志文件写入、flush磁盘的操作,确保了事务的ACID;2,每次事务提交引起写入日志文件的动作,但每秒钟完成一次flush磁盘操作。innodb_flush_log_at_trx_commit=1
innodb_thread_concurrency设置innodb线程的并发数量,默认值为0表示不限制innodb_thread_concurrency=8
innodb_log_buffer_size确定日志文件所用的内存大小,以M为单位。缓冲区更大能提高性能,对于较大的事务,可以增大缓存大小。innodb_log_buffer_size=128M
innodb_log_file_size确定数据日志文件的大小,以M为单位,更大的设置可以提高性能innodb_log_file_size = 100M
innodb_log_files_in_group以循环方式将日志文件写到多个文件nnodb_log_files_in_group = 3
read_buffer_sizeMySql读入缓冲区大小read_buffer_size = 1M
read_rnd_buffer_sizeMySql的随机读(查询操作)缓冲区大小。当按任意顺序读取行时将分配一个随机读缓存区read_rnd_buffer_size = 1M
bulk_insert_buffer_size批量插入数据缓存大小,可以有效提高插入效率,默认为8Mbulk_insert_buffer_size = 8M
binary log什么时候刷新binlog到磁盘,每次事务commitsync_binlog=1
max_connections=1024
back_log=128
wait_timeout=60
interactive_timeout=7200
key_buffer_size=16M
query_cache_size=64M
query_cache_type=1
query_cache_limit=50M
max_connect_errors=20
sort_buffer_size=2M
max_allowed_packet=32M
join_buffer_size=2M
thread_cache_size=200
innodb_buffer_pool_size=1024M
innodb_flush_log_at_trx_commit=1
innodb_log_buffer_size=32M
innodb_log_file_size=128M
innodb_log_files_in_group=3
binlog_cache_size=2M
max_binlog_cache_size=8M
max_binlog_size=512M
expire_logs_days=7
read_buffer_size=2M
read_rnd_buffer_size=2M
bulk_insert_buffer_size=8M

三、锁等待

1、查看锁等待

mysql01 [(none)]>SHOW  STATUS LIKE 'innodb_row_lock%';

2、查看事务阻塞情况

mysql01 [(none)]>USE information_schema;
mysql01 [(none)]>SELECT * FROM information_schema.INNODB_TRX WHERE trx_state='LOCK WAIT';
参数说明
trx_id事务ID号
trx_state当前事务的状态
trx_mysql_thread_id连接层的,连接线程ID(SHOW PROCESSLIST ===>Id或trx_id )
trx_query当前被阻塞的操作
3、查看锁源
mysql01 [(none)]>SELECT * FROM sys.innodb_lock_waits;
参数说明
locked_table哪张表出现的等待
waiting_trx_id等待的事务(与上个视图trx_id 对应)
waiting_pid等待的线程号(与上个视图trx_mysql_thread_id)
blocking_trx_id锁源的事务ID
blocking_pid锁源的线程号

查看锁源的thread_id

mysql01 [(none)]>SELECT * FROM performance_schema.threads WHERE processlist_id=15;

查看锁源的SQL语句

mysql01 [(none)]>SELECT * FROM performance_schema.`events_statements_current` WHERE thread_id=41;      //当前在执行的语句
mysql01 [(none)]>SELECT * FROM performance_schema.`events_statements_history` WHERE thread_id=41;      //执行语句的历史

四、死锁监控

死锁写入错误日志

[root@mysql-1 ~]# vim /etc/my.cnf
innodb_print_all_deadlocks = 1
mysql01 [(none)]>show engine innodb status\G
mysql01 [(none)]>show variables like '%deadlock%';

五、主从优化

gtid_mode=ON
enforce_gtid_consistency=ON
log_slave_updates=ON
slave-parallel-type=LOGICAL_CLOCK
slave-parallel-workers=16        //cpu核心数作为标准(50%)
master_info_repository=TABLE
relay_log_info_repository=TABLE
relay_log_recovery=ON

相关文章:

  • 从项目经理过渡到ScrumMaster的三个技巧
  • Elasticsearch之拼音搜索(十五)
  • JavaSrcip类型转换
  • 绿色世界,美丽中国
  • 计算机毕业设计ssm速到校园网上订餐网站5n2pv系统+程序+源码+lw+远程部署
  • Redis经典面试题
  • 【开发经验】通知气泡实现思路
  • 机器学习损失函数
  • Set接口学习(2)
  • Windows下更改并使用NTP
  • Framework面试之(Binder)(Handler)脚踏大厂面试大赏
  • Redis的不同系统安装教程
  • 几种Set的比较
  • 使用 ECK 在 Kubernetes 集群中管理 Elastic Stack
  • 在Qt中使用MySQL
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • css布局,左右固定中间自适应实现
  • ERLANG 网工修炼笔记 ---- UDP
  • golang中接口赋值与方法集
  • httpie使用详解
  • leetcode386. Lexicographical Numbers
  • PHP 7 修改了什么呢 -- 2
  • Phpstorm怎样批量删除空行?
  • React Native移动开发实战-3-实现页面间的数据传递
  • Sass 快速入门教程
  • SpiderData 2019年2月23日 DApp数据排行榜
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • VuePress 静态网站生成
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 聊聊hikari连接池的leakDetectionThreshold
  • 算法之不定期更新(一)(2018-04-12)
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 微信开放平台全网发布【失败】的几点排查方法
  • 2017年360最后一道编程题
  • #Z0458. 树的中心2
  • (1)(1.9) MSP (version 4.2)
  • (编译到47%失败)to be deleted
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (三)docker:Dockerfile构建容器运行jar包
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • (转)人的集合论——移山之道
  • .axf 转化 .bin文件 的方法
  • .net core IResultFilter 的 OnResultExecuted和OnResultExecuting的区别
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法
  • .net php 通信,flash与asp/php/asp.net通信的方法
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...
  • .NET是什么
  • @DependsOn:解析 Spring 中的依赖关系之艺术
  • @EnableWebMvc介绍和使用详细demo
  • [AIR] NativeExtension在IOS下的开发实例 --- IOS项目的创建 (一)
  • [CLickhouse] 学习小计