优化查询+大访问量

一、优化查询

1.使用索引,避免全表扫描。

2.优化SQL语句。

3.优化数据库对象。

  1)拆分表

  (1)垂直拆分:把主键和一些列放在一个表中,然后把主键和另外的列放在另一个表中。如果一个表中某些列常用,而另外一些不常用。如果一个表中某些列常用,而另外一些不常用,则 可以采用垂直拆分。

  (2)水平拆分:根据一列或多列数据的值把数据行放到两个独立的表中。

  2)使用中间表提高查询速度

  创建中间表,表结构和源表结构完全相同,转移要统计的数据到中间表,然后在中间表上进行统计,得出想要的结果。

4.硬件优化。

5.MySQL自身优化

  指定MySQL查询缓冲区的大小,指定MySQL允许的最大连接进程数等。

https://www.cnblogs.com/200911/p/5869123.html

https://www.cnblogs.com/claireyuancy/p/7258314.html

6.应用优化

  1)使用数据库连接池

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

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

原文地址:https://www.cnblogs.com/cing/p/9397741.html