首页 存档 技术 查看内容

优化MySQL的21个建议

2018-3-30 13:00 |来自: 互联网 310 0

摘要:   今天一个朋友向我咨询怎么去优化 MySQL,我按着思维整理了一下,大概粗的可以分为21个方向。 还有一些细节东西(table cache, 表设计,索引设计,程序端缓存之类的)先不列了,对一个系统,初期能把下面做完也是一 ...

  今天一个朋友向我咨询怎么去优化 MySQL,我按着思维整理了一下,大概粗的可以分为21个方向。 还有一些细节东西(table cache, 表设计,索引设计,程序端缓存之类的)先不列了,对一个系统,初期能把下面做完也是一个不错的系统。

 1. 要确保有足够的内存

  数据库能够高效的运行,最关建的因素需要内存足更大了,能缓存住数据,更新也可以在内存先完成。但不同的业务对内存需要强度不一样,一推荐内存要占到数据的15-25%的比例,特别的热的数据,内存基本要达到数据库的80%大小。

 2. 需要更多更快的CPU

  MySQL 5.6可以利用到64个核,而MySQL每个query只能运行在一个CPU上,所以要求更多的CPU,更快的CPU会更有利于并发。

 3. 要选择合适的操作系统

  在官方建议估计最推荐的是Solaris, 从实际生产中看CentOS, REHL都是不错的选择,推荐使用CentOS, REHL版本为6以后的,当然Oracle Linux也是一个不错的选择。虽然从MySQL5.5后对Windows做了优化,但也不推荐在高并发环境中使用windows.

 4. 合理的优化系统的参数

  更改文件句柄 ulimit -n 默认1024 太小

  进程数限制 ulimit -u 不同版本不一样

  禁掉NUMA numctl -interleave=all

 5. 选择合适的内存分配算法

  默认的内存分配就是c的malloc 现在也出现许多优化的内存分配算法:

  jemalloc and tcmalloc

  从MySQL 5.5后支持声明内存储方法。

  [mysqld_safe]

  malloc-lib = tcmalloc

  或是直接指到so文件

  [mysqld_safe]

  malloc-lib=/usr/local/lib/libtcmalloc_minimal.so

 6. 使用更快的存储设备ssd或是固态卡

  存储介质十分影响MySQL的随机读取,写入更新速度。新一代存储设备固态ssd及固态卡的出现也让MySQL大放异彩,也是淘宝在去IOE中干出了一个漂亮仗。

 7. 选择良好的文件系统

  推荐XFS, Ext4,如果还在使用ext2,ext3的同学请尽快升级别。 推荐XFS,这个也是今后一段时间Linux会支持一个文件系统。

  文件系统强烈推荐: XFS

 8. 优化挂载文件系统的参数

  挂载XFS参数:

  (rw, noatime,nodiratime,nobarrier)

  挂载ext4参数:

  ext4 (rw,noatime,nodiratime,nobarrier,data=ordered)

  如果使用SSD或是固态盘需要考虑:

   innodb_page_size = 4K

   Innodb_flush_neighbors = 0

 9. 选择适合的IO调度

  正常请下请使用deadline 默认是noop

  echo dealine

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部