MySQL数据库千万级数据处理?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL数据库千万级数据处理?相关的知识,希望对你有一定的参考价值。
MySQL数据库,有A表(二十多个字段,4千万条数据)和B表(1个字段,八百多万条数据)。现在要清理A表中的数据,将A表中在B表中不存在的数据清理掉。这个应该怎么处理呢?
也就是A表中保留B表中存在的数据,可以通过筛选把这样的数据放在第三个表
只要索引合理,数据量不算大
祝好运,望采纳。
追问索引就设置A表和B表的关联条件字段做索引就可以吧?但是直接这样用SQL命令做的话不会卡死么?
追答不要在在线库操作,多尝试
追问不要在在线库操作是什么意思?
追答生产环境
参考技术A 方法有三种1,delete from a where a.字段 not in (select b.字段 from b)
2,delete from a where not exists (select 1 from b where a.字段= b.字段)
3, create table a_tmp select a.* from a,b where a.字段= b.字段;
drop table a;
rename table a_tmp to a;
以上字段为a何b关联的字段,由于数据量大合理建立索引 参考技术B 数据库主要就是两个功能,一个是查询,一个是储存,而大数据必定会拖慢查询,我们对于大数据,更多的是从业务逻辑进行拆分,比如:
当存储一个人的历史信息的时候,可以按照时间存储,一定是最近的记录最经常访问,这就是我们常说的二八定律,最长访问的数据仅仅占有不到两成的数据量。
上面说的就是分库分表,这是一种解决数据量大的办法。
内存数据库,redis也是一种处理大数据的办法,将常访问的数据放到redis里面,可以缓解数据库的压力,还是像上面说的,我们只要可以找到用户经常访问的数据,然后放到内存数据库中,就可以大大减少mysql的压力。
最后,技术一定是为解决问题而产生的,我们一定需要对业务进行分析,才能考虑使用什么技术,抛开业务单存讲技术,这是不正确的。
以上是关于MySQL数据库千万级数据处理?的主要内容,如果未能解决你的问题,请参考以下文章