Mysql数据库的优化方法

时间:2021-04-26 07:58:00

数据库的优化方案(这是自己整理的,如有错误请大家指出,谢谢!)

1.大量数据的插入

   可以从一下几方面改善效率:

        1.针对表结构进行改善

           如果是经常插入,创建的表应该采用Innodb引擎,相反,查询居多的话,应该选择Myisam引擎,但是这里请注意Myisam引擎是无法开启事务的。(他俩区别很多,这里只谈关于插入和查询区别,其他的可以去查)。实际情况,还是采用Innodb的居多。

        2.针对自己写的插入sql语句进行改善,具体效果如下图

          假设有个user表,里面有id,name, age,score这四种属性,其中id自动增长,现在对表插入大量的user信息。

         其中一种方法实现方式是这种

             insert into user(name,age,score) values('wanghan1', 23, 80);

             insert into user(name,age,score) values('wanghan2', 24, 90);//依此执行两条sql语句

         另外一种方式采用如下

           insert into user(name,age,score) values('wanghan1', 23, 80),('wanghan2', 24, 90);

//这样执行,两种结果是一样,但是运行的时间下面一种插入方式比上面方式快不少。下面是针对插入个数不同,执行时间的收集。

Mysql数据库的优化方法自己可以明显感觉到

          3.使用事务,提高插入效率

              提高效率的原因很简单,因为对Mysql进行插入的时候,mysql内部会建立一个事务,只有处于事务内才能进行真正的插入操作。通过使用事务减少了每次创建事务的消耗,实际上所有没有开启事务的插入都是在执行后才进行commit操作。下面是事务开启和不开启的执行时间图

Mysql数据库的优化方法 

          4.关于第四点优化,对插入的数据的主键数据进行排序然后进行插入(其实具体看项目实际情况,这里还是记录一下,以免后来用),话不多说实际执行效果如下图

Mysql数据库的优化方法这里很明显看到时间相差无几,后面会有说明

其实对于第二,三,四的优化当时有综合性能测试,效果如下图

Mysql数据库的优化方法可以看出排不排序的区别

 

2.大量数据的查询

 1.最简单的一种方法就是建立索引,如忘记了sql语句的,在这提一下create index user_index onuser(name,score)

这条语句指的是帮user表里的name和score属性建立索引,也可用 alter table user add indexname_index(name) 其实索引有三种,主键索引,唯一索引,普通索引,一个表里面只能有一个主键索引,最好之多6个索引

   2.优化查询性能

        具体方法可以用EXPLAIN 后面接你的select语句,来分析索引的添加,具体的可以查EXPLAIN语句,这里就略过

   3.从侧面上提高效率,调整内部变量

   改变索引缓冲区(key_buffer)  改变表长(read_buffer_size)设定打开表的数目的最大值(table_cache) 

  上面只提三个,大部分都是提高缓存的大小来控制效率

暂时只写到这三种,以后在遇到别的,在补上Mysql数据库的优化方法