mysql表数据量太大,达到了1亿多条数据,除了分库分表之外,还有没有其他的解决方式?
在正常配置下,mysql只能承载2000万数据(同时读写,表中有大文本字段,单服务器)。现在已经超过1亿,而且还在增加,建议按以下方式处理:
1子表。它可以按时间或一定的规则进行拆分,以便尽可能地查询子表中的数据库。这是最有效的方法。特别是写,放入一个新表,并定期同步。如果记录不断更新,最好将写入的数据放在redis中,并定期同步表3的大文本字段,将它们分隔成一个新的独立表。对于较大的文本字段,可以使用nosql数据库
4优化体系结构,或者优化sql查询,避免联合表查询,尽量不要使用count(*)、in、recursion等性能消耗语句
5使用内存缓存,或者在前端读取时增加缓存数据库。重复读取时,直接从缓存中读取。
以上是一种低成本的管理方法,基本上几个服务器就可以做到,但是管理起来有点麻烦。
当然,如果总体数据量特别大,我们不关心投资成本,可以使用cluster,也可以使用tidb
当数据库表中的数据量可以预测到非常大,或者已经有大量的数据时,我们应该选择子表或分区(即使用多个数据库)解决数据访问的性能问题。如果单机的cpu能承受并发的站点数,就应该选择分表的方式,因为分表比较简单,容易实现规模化,当涉及多表连接时,分区不能直接使用join。但是如果并发站点的数量太大,那么访问多个数据库无疑需要多个cpu。此时,我们需要选择分区方法。
mysql分区的缺点是哪些?
通过mysql的表分区功能(逻辑上是表,对程序是透明的),可以通过分区功能实现自动的表分区。如果要实现每月或每周按数据动态重分区,可以编写存储过程实现分区调整逻辑,最后编写mysql事件定期调用存储过程。
mysql怎么按照时间做表分区?
我将从存在的问题和如何做中回答这个问题。。
没有办法避免这个问题,通常拆分sql,使用多个查询,然后使用结果分别检查结果
!我们可以使用tcc编程模型来确保两个事务可以正确提交,但这种代码入侵方式相对较重!您还可以使用基于消息的数据一致性保证
!1.使用多线程分别查询多个节点,然后汇总!
原文标题:mysql分区和分表优缺点 mysql表数据量太大,达到了1亿多条数据,除了分库分表之外,还有没有其他的解决方式?,如若转载,请注明出处:https://www.saibowen.com/tougao/16465.html
免责声明:此资讯系转载自合作媒体或互联网其它网站,「赛伯温」登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,文章内容仅供参考。