加入收藏 | 设为首页 | 会员中心 | 我要投稿 网站开发网_马鞍山站长网 (https://www.0555zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 移动 > 正文

一篇全面的 MySQL 高性能优化实战总结!

发布时间:2019-09-03 19:36:00 所属栏目:移动 来源:惨绿少年
导读:副标题#e# 1 前言 在进行 MySQL 的优化之前必须要了解的就是 MySQL 的查询过程,很多的查询优化工作实际上就是遵循一些原则让 MySQL 的优化器能够按照预想的合理方式运行而已。 2 优化的哲学 2.1 优化可能带来的问题 优化不总是对一个单纯的环境进行,还很

防火墙:iptables、selinux等其他无用服务(关闭):

  1. chkconfig --level 23456 acpid off 
  2.    chkconfig --level 23456 anacron off 
  3.    chkconfig --level 23456 autofs off 
  4.    chkconfig --level 23456 avahi-daemon off 
  5.    chkconfig --level 23456 bluetooth off 
  6.    chkconfig --level 23456 cups off 
  7.    chkconfig --level 23456 firstboot off 
  8.    chkconfig --level 23456 haldaemon off 
  9.    chkconfig --level 23456 hplip off 
  10.    chkconfig --level 23456 ip6tables off 
  11.    chkconfig --level 23456 iptables  off 
  12.    chkconfig --level 23456 isdn off 
  13.    chkconfig --level 23456 pcscd off 
  14.    chkconfig --level 23456 sendmail  off 
  15.    chkconfig --level 23456 yum-updatesd  off 

安装图形界面的服务器不要启动图形界面 runlevel 3

另外,思考将来我们的业务是否真的需要MySQL,还是使用其他种类的数据库。用数据库的最高境界就是不用数据库。

6 数据库优化

SQL优化方向:

执行计划、索引、SQL改写

架构优化方向:

高可用架构、高性能架构、分库分表

6.1 数据库参数优化

调整:

实例整体(高级优化,扩展):

  1. thread_concurrency       # 并发线程数量个数 
  2.     sort_buffer_size         # 排序缓存 
  3.     read_buffer_size         # 顺序读取缓存 
  4.     read_rnd_buffer_size     # 随机读取缓存 
  5.     key_buffer_size          # 索引缓存 
  6.     thread_cache_size        # (1G—>8, 2G—>16, 3G—>32, >3G—>64) 

连接层(基础优化)

设置合理的连接客户和连接方式

  1. max_connections           # 最大连接数,看交易笔数设置 
  2.     max_connect_errors        # 最大错误连接数,能大则大 
  3.     connect_timeout           # 连接超时 
  4.     max_user_connections      # 最大用户连接数 
  5.     skip-name-resolve         # 跳过域名解析 
  6.     wait_timeout              # 等待超时 
  7.     back_log                  # 可以在堆栈中的连接数量 

SQL层(基础优化)

  1. query_cache_size:查询缓存   >>>  OLAP类型数据库,需要重点加大此内存缓存,但是一般不会超过GB 
  2. 对于经常被修改的数据,缓存会立马失效。我们可以实用内存数据库(redis、memecache),替代他的功能。 

6.2 存储引擎层(innodb基础优化参数)

  1. default-storage-engine 
  2. innodb_buffer_pool_size       #没有固定大小,50%测试值,看看情况再微调。但是尽量设置不要超过物理内存70% 
  3. innodb_file_per_table=(1,0) 
  4. innodb_flush_log_at_trx_commit=(0,1,2) # 1是最安全的,0是性能最高,2折中 
  5. binlog_sync 
  6. Innodb_flush_method=(O_DIRECT, fdatasync) 
  7. innodb_log_buffer_size        # 100M以下 
  8. innodb_log_file_size          # 100M 以下 
  9. innodb_log_files_in_group     # 5个成员以下,一般2-3个够用(iblogfile0-N) 
  10. innodb_max_dirty_pages_pct   # 达到百分之75的时候刷写 内存脏页到磁盘。log_bin 
  11. max_binlog_cache_size         # 可以不设置 
  12. max_binlog_size               # 可以不设置 
  13. innodb_additional_mem_pool_size    #小于2G内存的机器,推荐值是20M。32G内存以上100M 

(编辑:网站开发网_马鞍山站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!