MySQL优化-第一部分

版权声明:版权所有,转载备注 https://blog.csdn.net/alviss_kdd/article/details/83616623

前言

 优化可以分为两部分。第一部分,如何提高硬件使用率,第二部分,如何降低硬件使用率。观点貌似矛盾,其实不然。
 第一部分中提高硬件使用率是在硬件存在空闲资源的情况下,通过技术手段,提高I/O效率,减少系统响应时间和等待时间,充分利用资源,一般通过分布式部署,分库分表,修改系统参数等方式实现。
 第二部分中降低硬件使用率是指在硬件条件不能无限的情况下(一般情况都是这样),通过调整参数,让资源能够合理利用,不会造成资源浪费,一般通过优化表结构,优化SQL语句等来实现。
 没有最佳的实践,过犹不及,只有最适合自己的,才是最好的。
 后面首先从第一部分开始阐述。

硬件选择

使用xfs文件系统 ,挂载使用noatime (不记录时间),nodirtime(不记录文件夹时间),nobarrier(xfs特有)

  • centos7.0默认文件系统是xfs,centos6是ext4,可以使用mkfs.xfs( 若没有命令,安装yum -y install xfsprogs),centos5是ext3。

系统参数

查看系统参数指令:sysctl -a,临时修改systl -p,永久修改/etc/sysctl.conf

操作系统参数对应相应文件。例如:net.ipv4.tcp_tw_recycle对应文件为对应文件为/proc/sys/net/ipv4/tcp_tw_recycle

减少time_wait时间,提高tcp效率。
net.ipv4.tcp_tw_recycle = 0 --> 1 #修改为1 1
net.ipv4.tcp_tw_reuse = 0 --> 1
确保写入磁盘,影响fsck刷新频率。
vm.dirty_background_ratio = 10 -->5
vm.dirty_ratio = 30 -->10
禁用swap空间。据说Rhel7之后会存在内存不足宕机问题,但阿里云7.4版本默认为0。
vm.swappiness = 0

MySQL参数

default_storage_engine  =  InnoDB     #建议
innodb_buffer_pool_size =   130 -->单实例,物理内存50%-70%
innodb_file_per_table = 1 
innodb_data_file_path = ibdata1:12M:autoextend --> 调节为合适大小
innodb_log_file_size = 50331648 -->256M
innodb_log_files_in_group = 2
max_connections = 151 -->根据业务量调节
max_connect_errors  = 100  -->根据业务量调节
innodb_open_files = 2000 --> max_connections数10倍左右
open_files_limit = 65535         
table_open_cache  = 2000 --> 同上
table_definition_cache = 1400 --> 同上
key_buffer_size = 8M #不用调节,不应超过32M

其它 max_heap_table_size ,tmp_table_size,innodb_sort_buffer_size, join_buffer_size,read_buffer_size , read_rnd_buffer_size , sort_buffer_size   不能设置过大           
      

  1. 参数默认–>修改 ↩︎

猜你喜欢

转载自blog.csdn.net/alviss_kdd/article/details/83616623