zoukankan      html  css  js  c++  java
  • mysql-8版本优化建议

    mysql-8版本优化

    参考官方文档:https://dev.mysql.com/doc/refman/8.0/en/

     

     

     

     

    数据库优化大方向:

    数据库性能:取决于数据库级别的几个因素,例如 表,查询 和 配置 设置。这些软件结构导致在硬件级别执行CPU和I / O操作,必须将这些操作最小化并使其尽可能高效。

    mysql数据库优化基本包含三个方面:

    • 数据库级别的优化

    • 硬件优化

    • 平衡便携性和性能

    这三种方式又有各自的优化方案:

    数据库级别:优化表格的结构 | 优化索引 | 使用适合的存储引擎 | 优化锁定策略 |对内存区域的优化

    硬件优化:磁盘的读写 | cpu周期

    平衡便携性和性能:注释方面的优化

    总体来说,mysql数据库的优化有以上三大块

    它们各自的优化也分很多种,参考官方文档:https://dev.mysql.com/doc/refman/8.0/en/optimization.html


    日常我们优化方案有哪些呢?

    一,首先我们先看实际环境下,硬件的优化我们能做多少?

    CPU :
    推荐使用4u服务器来专门做数据库服务器用

    内存 :
    内存基本实际中不担心,官方建议是不要小于2G。但是工作中mysql server服务器基本都是远超2G的内存,所以应该不用太担心内存问题

    磁盘 :
    磁盘是一大方面,磁盘的好坏直接影响着IO的读写速度,这是物理性的,无法改变。mysql通常作为数据库服务器,它每秒都会进行大量的,复杂的查询操作,对磁盘的读写量可想而知!我们能做的,在磁盘做阵列上,使用RAID10阵列方式最好,注意不要尝试使用RAID5。如果不考虑成本,使用固态SSD硬盘给mysql数据库使用。

    二,数据库级别的优化

    通常默认的 my.cnf 配置文件无法发挥出 MySQL 最高的性能,所以需要根据不同的硬件

    进行优化,配置文件的优化也是重点,下面是物理内存为 32G 的数据库优化参数,具体从全

    局、二进制日志、主从、innodb、myisam 几个方面优化,仅供参考

    1. default-time-zone=+8:00

    #默认 mysql 使用的是系统时区,修改为北京时间,也就是所说的东八区。

    1. interactive_timeout = 120

    #服务器关闭交互式连接前等待活动的秒数。

    1. wait_timeout = 120

    #服务器关闭非交互连接之前等待活动的秒数。

    1. open_files_limit = 10240

    #MySQL 服务器打开文件句柄数限制。

    1. group_concat_max_len = 102400

    #mysql 默认的拼接最大长度为 1024 个字节,由于 1024 个字节会出现不够用的情况, 根据实际情况进行修改。

    1. user=mysql

    #使用 mysql 用户运行。

                 character-set-server=utf8

                 init_connect='SET NAMES utf8'

    #设置字符集为 utf8

              7 back_log = 600

    #在 MySQL 暂时停止响应新请求之前,短时间内的多少个请求可以被存在堆栈中。如果系统在短时间内有很多连接,则需要增大该参数的值,该参数值指定到来的 TCP/IP 连接的

    监听队列的大小。默认值 50。

              8 max_connections = 5000

    #MySQL 允许最大的进程连接数,如果经常出现 Too Many Connections 的错误提示, 则需要增大此值。

              9 max_connect_errors = 6000

    #设置每个主机的连接请求异常中断的最大次数,当超过该次数,MySQL 服务器将禁止 host 的连接请求,直到 mysql 服务器重启或通过 flush hosts 命令清空此 host 的相关信息。

              10 table_open_cache = 2048

    #指定表高转缓存的大小,每当mysql方位一个表时,如果表缓冲区还有空间,该表就被打开并放入其中,这样可以更加快速访问表内容

              11 thread_concurrency = 8

    #这个值正确与否,对mysql的性能影响很大,在多个cpu核下,错误设置值,会导致mysql不能充分利用cpu;比如有一个双核的cpu,那么值应该为4;2个双核的cpu,那么值应该为8

               12 query_cache_limit = 4M

    #默认是4kb,设置越大值,对大数据查询有好处,但是如果是小数据查询,就容易照成内存碎片和浪费

              13 bulk_insert_buffer_size = 64M

    #批量插入数据缓存大小,可以有效提高插入效率,默认为8M

    下面几个参数将是对二进制日志文件的优化

               14 log-bin=mysql-bin

    #打开二进制功能

              15 binlog_cache_size = 4M

    #在事务过程中容纳二进制日志SQL语句的缓存大小。

              16 expire_logs_days = 7

    #二进制日志只留存最近7天,不用人工手动删除

     

     

     

  • 相关阅读:
    Python正则表达式指南(转)
    二进制文件与文本文件的区分(转)
    Linux上的下载软件uGet
    Ubuntu 12.04安装Google Chrome(转)
    单元测试中的黑盒测试的重要性(转)
    尾递归(转)
    chrome使用技巧(转)
    LRU算法的Python实现
    MySQL单列索引和组合索引的区别介绍(转)
    Python性能优化(转)
  • 原文地址:https://www.cnblogs.com/123456likun/p/14246146.html
Copyright © 2011-2022 走看看