一亿条数据如何优化

根据业务场景回答,什么叫查询优化,有瓶颈才叫优化。

首先在常规的数据设计中,就不应该让一张表存储一亿条数据

你是主键查询慢还是条件查询慢,是分组聚合慢,还是深度分页慢,到底怎么慢,怎么影响业务了

数据库查询优化是一个综合工程。再往细说,

软件层面

sql语句尽量简单,实在简单不了就要用空间换时间。

查询字段要根据实际情况,不要查非必要的字段,减少io操作。

表设计方面,不一定要按照三大范式来设计,有时候反范式设计会有更好的效果

主键要使用单调递增的数字

索引层面,尽量让命中的查询走覆盖索引,避免二次回表

深度分页不要通过limit,要通过游标的思想查询

分库分表是最快速解决查询慢的问题,分库分表的依据只有一个,就是查询是不是真的影响业务。和数量和树的高度根本没有关系

硬件层面

最快速的方法就是做主从集群,从集群可以迅速的把读能力提高一倍以上

其他硬件提升比如cpu,内存。在有限的成本,我建议提升内存,因为mysql大多数都是io密集型操作,特点就是对内存要求高。innodb这种存储引擎有一个特点,就是把数据,索引,都放到了innodb buffer poll这个缓冲池中。所以,内存越大就可以把缓存池设置的越大

固态硬盘这种优越的读能力也非常适合放到从库分担读的压力

所以优化查询要根据业务场景,数据规模,硬件水平和成本控制

你可能感兴趣的:(数据库)