文章目录

  • 生猛干货
  • 官方文档
  • 服务器参数介绍
    • MySQL获取信息配置领
    • MySQL配置参数的作用域
  • 内存配置相关参数
  • I/O相关配置参数
    • Innodb I/O 相关的配置
    • MyISAM I/O 相关的配置
  • 安全相关配置参数
  • 其它常用配置参数
  • 小结
  • 搞定MySQL

生猛干货

带你搞定MySQL实战,轻松对应海量业务处理及高并发需求,从容应对大场面试


官方文档

https://dev.mysql.com/doc/

如果英文不好的话,可以参考 searchdoc 翻译的中文版本

http://www.searchdoc.cn/rdbms/mysql/dev.mysql.com/doc/refman/5.7/en/index.com.coder114.cn.html


服务器参数介绍

MySQL获取信息配置领

1) 命令行

mysqld_safe --datadir=/xxx/xxxx

2) 配置文件

持久化的配置都要写到配置文件中.

MySQL读取的配置文件可以通过如下命令来查看

[root@artisan mysql]# mysqld --help --verbose |grep -A  1 'Default options'
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf
[root@artisan mysql]# 

首先从/etc/my.cnf 读取,逐步往后找,后面的覆盖前面的。


MySQL配置参数的作用域

  • 全局参数

    set global 参数名=参数值;
    set @@global.参数名 := 参数值;  --- 两种方式都可以
    

    需要在MySQL客户端中执行

  • 会话参数

       set [session]  参数名=参数值;set @@session.参数名 := 参数值;  --- 两种方式都可以
    

    操作下看看

    [root@artisan ~]# mysql -u root -p
    Enter password:
    .....mysql> # 这两个参数要一起设置,否则会取大的那个为准。
    mysql> show variables where variable_name = 'wait_timeout' or variable_name = 'interactive_timeout';
    +---------------------+-------+
    | Variable_name       | Value |
    +---------------------+-------+
    | interactive_timeout | 28800 |
    | wait_timeout        | 28800 |
    +---------------------+-------+
    2 rows in set (0.00 sec)mysql> set global wait_timeout=3600; set interactive_timeout=3600;
    Query OK, 0 rows affected (0.00 sec)Query OK, 0 rows affected (0.00 sec)mysql> 

    设置了global 参数,有些已经登录的会话,要退出重新登录才生效。


内存配置相关参数

  • 确定可以使用的内存的上限 ,不要超过服务器的内存

  • 32位的操作系统,能使用的不足4G,这个也需要注意

  • 确定MySQL每个连接使用的内存
    sort_buffer_size: 举个例子,如果配置的过大,比如100M, 这个时候如果有10个连接过来,那就要分配1G的内存。。。
    join_buffer_size
    read_buffer_size
    read_rnd_buffer_size

    这4个参数都是给每个线程分配的

  • 如何为缓存池分配内存
    Innodb_buffer_pool_size : 确保分配足够多的内存
    key_buffer_size

需根据实际情况调整


I/O相关配置参数

这部分参数决定了MySQL如何同步缓冲池中的数据到缓存。

Innodb I/O 相关的配置

  • Innodb_log_file_size 单个事务文件的大

  • Innodb_log_files_in_group 事务日志文件的个数

  • Innodb_log_buffer_size 缓冲区的大小

    事务日志中大小 Innodb_log_file_size * Innodb_Log_files_in_group , 循环使用。 先写到缓冲区,Innodb_log_buffer_size 指定缓冲区的大小,不用设置太大(32M-128M就够了),默认1秒刷一次,然后再写到日志。

  • Innodb_flush_log_at_trx_commit : 刷日志的频率

    0: 每秒进行一次log写入cache,并flush log到磁盘
    1[默认]:在每次事务提交执行log写入cache,并flush log到磁盘
    2[建议]:在每次事务提交执行log写入cache,每秒执行一次flush log到磁盘

  • Innodb_flush_method = O_DIRECT (建议值)

  • Innodb_file_per_table = 1 (启用表空间)

  • Innodb_doublewrite = 1 (启用双写缓存)


MyISAM I/O 相关的配置

MySQL的系统表,使用了MyISAM存储引擎,所以也是需要了解的。

  • delay_key_write

    OFF: 每次写操作刷新键缓冲中的脏块到磁盘
    ON: 只对在键表时指定了delay_key_write选项的表时使用延迟刷新
    ALL:对所有MyISAM表都使用延迟键写入


安全相关配置参数

  • expire_logs_days : 指定自动清理binlog的天数,如果开启了binlog,最好配置这个参数,防止磁盘被占满

  • max_allowed_packet : 控制MySQL可以接手的包的大小 , 主从节点最好一致,否则容易同步失败

  • skip_name_resolve: 禁用DNS查找

  • sysdate_is_now :确保sysdate()返回确定性日志

  • read_only: 禁止非super权限的用户写权限, 从节点建议开启。

  • skip_slave_start : 禁用slave自动恢复。 从节点建议开启

  • sql_mode :设置MySQL所使用的SQL模式

    可选项: strict_trans_tables、 no_engine_subtitution、 no_zero_date 、no_zero_in_date、 only_full_group_by


其它常用配置参数

  • sync_binlog :控制MySQL如何向磁盘刷新binlog , 默认为0 。 建议设置为1
  • tmp_table_size 和 max_heap_table_size 控制内存临时表的大小 ,建议这两个值设置一样大,超过最大内存后,将转化为磁盘存储
  • max_connections : 控制允许的最大连接数,默认100, 建议2000 ,根据应用调整。

小结

说了这么多参数配置, 可不要指望修改一两个参数,性能就能有质的提升。

首先应该聚焦于 数据结构 和 SQL的优化,实在没有优化的空间了,再考虑这些。

优化的顺序

  1. 数据库结构设计和SQL语句,最容易看到成果
  2. 数据库存储引擎的选择和参数配置
  3. 系统优化
  4. 硬件升级

由上到下优化


搞定MySQL

MySQL-DB参数、内存、I/O、安全等相关参数设置相关推荐

  1. Linux内核参数(如kernel.shmmax)及Oracle相关参数调整(如SGA_MAX_SIZE)

    Linux内核参数(如kernel.shmmax)及Oracle相关参数调整(如SGA_MAX_SIZE) 我们一般在Linux 上安装 设置Oracle 数据库 或者在更换或升级硬件的时候都需要配置 ...

  2. mysql 重启io线程_MySQL IO线程及相关参数调优

    一.关于一个SQL的简单的工作过程 1.工作前提描述 1.启动MySQL,在内存中分配一个大空间innodb_buffer_pool(还有log_buffer) 2.多用户线程连接MySQL,从内存分 ...

  3. Yarn 内存分配管理机制及相关参数配置

    理解Yarn的内存管理与分配机制,对于我们搭建.部署集群,开发维护应用都是尤为重要的,对于这方面我做了一些调研供大家参考. 一.相关配置情况 关于Yarn内存分配与管理,主要涉及到了ResourceM ...

  4. mysql慢查询日志轮转_MySQL slow log相关参数解释

    slow_query_log=1       #是否启用慢查询日志,1为启用,0为禁用 slow_query_log_file=slow.log       #指定慢查询日志文件的路径和名字,可使用绝 ...

  5. oracle表参数,Oracle 表的创建 及相关参数

    1.创建表完整语法 CREATE TABLE [schema.]table (column datatype [, column datatype] - ) [TABLESPACE tablespac ...

  6. mysql8.0最低需要多少内存_MySQL8.0内存相关参数介绍

    本文来自读者投稿 作者:姚远 首先我们给出MySQL内存使用的计算公式: MySQL理论上使用的内存 = 全局共享内存 + max_connections×线程独享内存. 也就是:innodb_buf ...

  7. MySQL8.0内存相关参数介绍

    MySQL8.0内存相关参数介绍 首先我们给出MySQL内存使用的计算公式: MySQL理论上使用的内存 = 全局共享内存 + max_connections×线程独享内存. 也就是:innodb_b ...

  8. mysql8.0最低需要多少内存_MySQL8.0内存相关参数总结

    MySQL理论上使用的内存 = 全局共享内存 + max_connections×线程独享内存. 也就是:innodb_buffer_pool_size + innodb_log_buffer_siz ...

  9. MySQL性能的五大配置参数(内存参数)

    内存参数: 存储引擎/共享 日志缓冲区,缓冲区池 innodb_buffer_pool_size innodb_additional_mem_pool_size innodb_log_buffer_s ...

  10. MySQL线程共享内存参数

    MySQL线程共享内存参数 全局共享内存主要是 MySQL Instance(mysqld进程)以及底层存储引擎用来暂存各种全局运算及可共享的暂存信息,如存储查询缓存的 Query Cache,缓存连 ...

最新文章

  1. 爱奇艺数据质量监控的探索和实践
  2. ISA Server 2006的CARP与NLB的构建
  3. 测试工程师良品 —— Fiddler 工具简介
  4. 基于灰度变换的图像增强
  5. 释放锁的逻辑-InterProcessMutex.release
  6. 高性能Mysql--Schema与数据类型优化
  7. 小孔成像实验探究的软件_【亲子实验】科学小制作:神秘小潜艇科学小论文作品在科学课(小学版)2004年第5期发表,科学小发明潜水艇与沉浮子...
  8. 打印Python当前版本详细信息
  9. linux内存迁移,性能优化:使用Ramlog将日志文件转移到内存中
  10. Flutter AppBar控件
  11. 第一次的数电作业-----数据选择,代码转换,译码
  12. 618网购盛宴即将开启,云联络中心+AI成为电商的“新基建”
  13. Java如何避免空指针异常?
  14. Word文件打开的时候需要输入密码?
  15. 最新的服务器cpu有国产的吗,浪潮发布国产飞腾CPU服务器 已达业界主流水平
  16. Svchost.exe 程序占用CPU高
  17. Zabbix基于Dell系统管理OMSA监控物理服务器硬件
  18. 6款换脸软件下载推荐!
  19. python的下载安装
  20. ibm cloud_IBM Cloud服务指南:正确的工作工具

热门文章

  1. ubuntu 安装 opengl
  2. Pytorch 笔记——tensor
  3. 强化学习(十)Double DQN (DDQN)
  4. shell编程 case语句
  5. 计算python执行时间
  6. python取三位小数_python保留小数位的三种实现方法
  7. Python--判断一个字符串是否包含某子串的几种方法
  8. LeetCode-数学-9. 回文数
  9. 实现单链表--Python
  10. CSV格式文件注意细节