Mysql的一些优化

    记录一些对数据库操作及一些优化措施,结合截图来验证

1. 

Mysql的一些优化

Mysql的一些优化

Mysql的一些优化

小结1:对经常使用的字段,添加索引.但是也不宜过多,会占用磁盘空间并会降低写操作的性能.

============================================================================

2.

Mysql的一些优化

Mysql的一些优化

Mysql的一些优化

Mysql的一些优化

小结2:尽量减少全表扫描的操作,通过explain获取type类型,进行优化. select_type:ALL,index,range ,ref ,eq_ref,const,system null从左到右越来越好

============================================================================

3.

Mysql的一些优化

Mysql的一些优化

Mysql的一些优化

小结3:.text和blob的值会引起性能问题,特别是在执行大量删除操作时,会在表中留下大量的”空洞”,以后在插入的性能上会有影响,建议定期执行optimize table功能,对这类表进行碎片整理

============================================================================

4.load优化

 

    4.1MYISAM表

        alter table aaadisable keys;

        load data infile'/home/aaa.txt' into table aaa;

    4.2InnoDB表

        1.存储前添加主键

        load data infile'/home/aa.txt' into table aa;

        2.在导入数据前执行关闭唯一性校验

        setunique_checks=0 #关闭唯一性校验

        setunique_checks=1 #导完后恢复唯一性校验

        3.关闭自动提交的方式

        set autocommit=0

        setautocommit=1  #完成后恢复自动导入

============================================================================

5.insert

批量插入,会快很多

insert into test values(1,2),(3,4),(5,6);

尽可能用load data infile代替insert会快20倍

============================================================================

6.order by

1.尽量使用索引排序,显示USING index

2.如果不是索引排序,显示USINGFILESORT(适当修改max_length_for_sort_data的值,适当加大sort_buffer_size排序区尽量让排序再内存中完成)

============================================================================

7.group by

如果不需要分组默认排序(查询变化不明显,稍稍优化)

select * from test group by key,value order by null

============================================================================

8.一般情况效率Join>子查询

============================================================================

9.or

or之间的每个条件列都须用到索引,如果没有索引则考虑增加

============================================================================

10.分区

MySQL分区优点:

   1.存储更多的数据

   2.优化查询,where子句包含分区

   3.多个磁盘分散查询,以获得更大的查询吞吐量

   4.删除分区删除数据