Hello,大家好,我是阿粉,今天是周六,你是在放假还是跟阿粉一样在加班呢?今天的课题是跟大伙聊聊数据表的优化问题,这个问题小伙伴们在工作应该会遇到而且在面试中还经常会问到。
我们都知道当 MySQL 中的表很大的时候,我们的查询就会变得很慢,即使是在进行分页查询,使用 count(*) 计算总条数的时候也是很慢,MySQL 的数据一般达到千万级别的时候就会变得很慢,往往这个时候我们就需要进行优化了,那么优化主要从哪几个方面呢?请听阿粉慢慢道来。
控制数据量
对于线上大表进行查询的时候,我们控制允许查询的时间范围,常规的查询其实也不会使用很多数据,我们一般我们限定一个月的时间限制,如果要查询多个月的数据,就进行分月查询,不支持跨多月进行查询,保证系统的稳定。所以一般我们在创建相关业务表的时候都会加上创建时间字段,在数据量很大的情况下,我们就可以根据创建时间字段进行限定查询。
分库分表
从业务上进行分库分表,我们可以根据业务本身的特定将数据进行分库分表的存储,在查询的时候根据对应的字段或者服务从程序上分库分表查询,也可以使用中间件实现分库分表的查询,这样程序就不用做任何修改,直接实现分库分表查询动作。
分区
除了上面提到的分库分表还是对数据表进行分区,关于分区的内容可以看阿粉之前写的文章