今天一个朋友向我咨询怎么去优化 MySQL,我按着思维整理了一下,大概粗的可以分为21个方向。 还有一些细节东西(table cache, 表设计,索引设计,程序端缓存之类的)先不列了,对一个系统,初期能把下面做完也是一个不错的系统。 1. 要确保有足够的内存数据库能够高效的运行,最关建的因素需要内存足更大了,能缓存住数据,更新也可以在内存先完成。但不同的业务对内存需要强度不一样,一推荐内存要占到数据的15-25%的比例,特别的热的数据,内存基本要达到数据库的80%大小。 2. 需要更多更快的CPUMySQL 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 |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|