Skip to main content

Posts

优化MySQL的21个建议

作者:吴炳锡 来源:http://www.mysqlsupport.cn/ 联系方式: wubingxi#gmail.com 转载请注明作/译者和出处,并且不能用于商业用途,违者必究. 今天一个朋友向我咨询怎么去优化 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也是一个不错的选择。虽然从MySQL 5.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的随机读取,写入更新速度。新一代...