1、优化查询html
1.使用索引,避免全表扫描。数据库
2.优化SQL语句。缓存
3.优化数据库对象。负载均衡
1)拆分表异步
(1)垂直拆分:把主键和一些列放在一个表中,而后把主键和另外的列放在另外一个表中。若是一个表中某些列经常使用,而另一些不经常使用。若是一个表中某些列经常使用,而另一些不经常使用,则 能够采用垂直拆分。性能
(2)水平拆分:根据一列或多列数据的值把数据行放到两个独立的表中。优化
2)使用中间表提升查询速度spa
建立中间表,表结构和源表结构彻底相同,转移要统计的数据到中间表,而后在中间表上进行统计,得出想要的结果。线程
4.硬件优化。日志
5.MySQL自身优化
指定MySQL查询缓冲区的大小,指定MySQL容许的最大链接进程数等。
http://www.javashuo.com/article/p-rsqetals-gb.html
http://www.javashuo.com/article/p-nfrpmmtk-c.html
6.应用优化
1)使用数据库链接池
2)使用查询缓存。
2、大访问量到数据库上,如何优化
1.主从复制,读写分离,负载均衡
配置两台数据库的主从关系,master用于写操做,slaves用于读操做,master经过复制将数据同步到slaves中。原理:
1)master会将数据改变记录到二进制日志(binary log)中。
2)slaves有一个I/O线程不停监听master中的binary log,一旦有更新,会将binary log拷贝进中继日志(relay log)。
主从复制的三种范式:
1)同步复制:master更新binary log后,需等待全部slaves复制更新完成后,才能够自由处理其余事务。
2)异步复制:master无需等待,就能够自由处理其余事务。
3)半同步复制:master只需等待一台slave复制更新完成,就能够自由处理其余事务。
2.数据库分表,分区,分库。
分表:垂直拆分,水平拆分。
分区:把一张表的数据分红多个区块,这些区块能够在一个磁盘,也能够在不一样磁盘,分区后,数据散列在多个位置,多块硬盘同时处理不一样的请求,从而提升磁盘I/O读写性能。包括水平分区和垂直分区。
分库:根据业务不一样把相关的表切分到不一样的数据库中。