MySQL简单优化

公司升级了服务器的配置,内存吃紧的问题得以解决,由此想到了几个优化MySQL的简单方法。首先明确两件事,咱们的业务场景是常见的高并发web服务,查询速度是重中之重。还有就是优化前必定要备份数据库,否则出问题就只能跑路了。web

1.使用固态硬盘数据库

这个优化方法毫无技术含量,彻底就是花钱买性能,可是不得不说这个方法至关的简单、粗暴、有效。借助固态硬盘高频的读写速度能够大幅提高MySQL的各项性能服务器

2.添加索引数据结构

当数据量达到必定级别时,添加合适的索引是必须的。MySQL是B+树或者其变种树,将数据按照索引的数据结构排序以优化查询效果。若是表中的数据要频繁的插入、删除时,这些操做会损害索引,致使索引占用了很大的无效空间。我就见过一张数据表的因此比数据量大不少,查询速度超慢甚至不及不添加索引,缘由就是频繁的插入删除致使的,这种场景须要按期删除索引而后从新生成索引多线程

3.去掉外键并发

大学期间,老师强调了使用外键来约束数据一致性是颇有必要的。上学时我也严格奉行了这一观点,毕竟这可让我少写代码,把一致性问题抛给数据库。工做后结合真正的业务场景,数据库经常成为性能瓶颈,而服务并不会成为性能瓶颈,因此将数据一致性问题的解决方案写入服务中以此减小数据库压力颇有必要。高并发

4.使用InnoDB性能

不少事实都代表InnoDB比MyISAM更具优点。InnoDB对内存的使用更全面,内存的访问速度显然比磁盘要快优化

5.设置InnoDB内存spa

innodb_buffer_pool_size参数表明分配给InnoDB的内存大小,分配内存时要给操做系统留下足够的内存。根据同事的经验之谈是能够为innodb_buffer_pool_size分配服务器80%的内存,固然了,这么作的前提条件是你的服务上基本只有MySQL,若是服务器上存在数据解析等其余很费内存的服务时,innodb_buffer_pool_size数值要酌情减小

6.设置InnoDB多任务

若是分配给innodb_buffer_pool_size的内存大于2G时,咱们能够考虑将InnoDB的缓冲池划分为多个,咱们能够修改配置中的innodb_buffer_pool_instances参数。对于高并发服务,性能瓶颈每每是多线程访问MySQL,划分更多的缓冲池能够有效的缓解这个问题。固然缓冲池也不是越多越好,每一个缓冲池的内存太低的话就不能发挥出多个缓冲池的优点了。官方的建议是每一个缓冲池须要至少1G的内存。

 

最后提醒你们,对MySQL的配置修改须要重启MySQL才能生效

相关文章
相关标签/搜索