首页 > 编程知识 正文

mysql水平分表查询方法,mysql水平分表有什么缺点

时间:2023-05-06 06:31:36 阅读:276416 作者:1499

Mysql水平分表

Mysql在数据量大的情况下,会遇到水平分表的情况。

1:条件中含有分表的信息
比如说要划分10个表,那对10进行取模。其实也可以是任意哈希函数,但是要注意注意冲突处理。

2: 根据时间拆表
当表的关系比较复杂时,无法根据某个维度进行分表。但是有明显的时效性。
想必大家都用微薄,某人发的微薄,会被推送到千家万户。所以某条微薄是无法根据用户ID进行分表查询。而微薄是有很强的时效性的。一年前的默认的动态信息是不会再关心的。我们把微薄按时间分表,三个月一张表。而行级缓存(memcached)只存储了一个月。用户微薄收件箱(微薄ID列表)一般都是限长的。当缓存服务器重启或不命中时,需要查询Mysql,mysql按时间分表,缓存不命中的情况下,大部分情况下都是查近三个月的微薄。所以近1年的微薄我们可以存储在物理资源比较好的数据库服务器上。

3:根据自增长ID拆表
这种分割法不是取模分,而是每张表存指定量的数据。如果数据量到了,就存放到新表中。这样可以完全控制每张表的数据量。关系非常简单并且有时效性的情况下可以用。

4:数据迁移的方式
当一些很久之前的数据,很少再查询。比如员工工资表,我们可以只存今年的工资情况。而历史数据我们可以迁移到一张salary_old表中,保证数据不会丢失。但也可以用来查询。

很简单吧,其实分库的原理也类似。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。