优化查询+大访问量

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读写性能。包括水平分区和垂直分区。

分库:根据业务不一样把相关的表切分到不一样的数据库中。

相关文章
相关标签/搜索