问题描述:
最近客户公司备份数据库的时候,数据量高达60个g,实际上并没有那多数据,让我找出具体原因和解决方案。操作步骤供大家参考。
问题分析
一种情况是本身业务上的数据会出现大量冗余,但是一般不会出现这么多。
另外一种情况就是比如日志,监听这些记录太多,没有及时清理,所以导致越来越多,这种可能性更大一些。
排查原因
首先查找数据库中表数据量最大的表 可以看到 前面几张表数据量最多
再通过下面语句查询这几个表占用的大小,或者直接排序查询最大的表也行
select sum(bytes)/(1024*1024) as "size(M)" from user_segments where segment_name=upper('DRUID_WEBURI');
或
select A.bytes/(1024*1024) as "size(M)",A.* from user_segments A ORDER BY BYTES DESC;
查询结果:
这里可以看到Druid_profile这张表数据最多,争对这张表做处理就行。
setment_type 为LOBSEGMENT是因为表中的字段有为LOB类型的数据,所以会存在类型为LOBSEGMENT的里面。
解决
如果是日志的表,可以定时清理太久之前的数据。