欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

基于MySQL INNODB的优化技巧

程序员文章站 2022-05-02 12:14:17
背景 ​ 回顾人们在开始工作之前,都会问自己这样一个问题:给你一台16G内存的Innodb专用数据库服务器,如何配置才能让其稳定、高效地给典型的Web应用提供服务? 硬件 内存:内存对于Innodb数据库至关重要!16 32G内存 CPU:虽然CPU配置依赖于应用,但一般来说,就CPU来说,2 Du ......

背景

​ 回顾人们在开始工作之前,都会问自己这样一个问题:给你一台16g内存的innodb专用数据库服务器,如何配置才能让其稳定、高效地给典型的web应用提供服务?

硬件

内存:内存对于innodb数据库至关重要!16-32g内存

cpu:虽然cpu配置依赖于应用,但一般来说,就cpu来说,2*dual core cpus已是非常好的配置,若使用two quad core cpus 会增加一些扩展性的问题。

硬盘:一般来说,硬盘需要使用6-8个硬盘做成一个raid就足够了。raid10比raid5的效果要好。

软件

操作系统

  • 操作系统采用64位的,切勿在64位的机器上使用32位的操作系统。
  • linux操作系统使用lvm将更高效
  • 大多数情况下ext3文件系统就足够了,但一些特殊项目中会使用xfs文件系统。
  • 如果使用参数innodb_file_per_table,虽然作用很小,还是建议使用选项noatime和nodiratime。
  • 确保swap充足

mysql数据库设置

innodb_buffer_pool_size :70-80%可用内存。

innodb_log_file_size :取决于您的恢复速度需求,一般来说256m已经足够。
innodb_log_buffer_size :4m能满足大多数情景,若使用很多大字段需适当增加该值,目前看到的状况8m即可。

innodb_flush_log_at_trx_commit=2 :若不关心事物的acid特性的话,在系统崩溃时,设置这个值可以在1~2秒中释放事务。特别是在有较多短连接的情况下,该参数尤为重要。
innodb_thread_concurrency=8:即使当前的innodb可扩展性修复具有有限的并发性也有帮助。8这个数据能满足大多数情况,但实际运用起来可能比这个值大也有可能比这个值小。
innodb_flush_method=o_direct :大多数情况下可提高性能,但没有raid的话,会影响写速度。

参考文献