phoenix 5.0 二级索引表 与 主表 数据量不一致的情况

前言:
select发现count没有值,但是实际上表中有数据的异常情况,是由于二级索引表 与 主表不一致导致的。

主表是可变的,日常也是通过phoenix进行upsert的数据,其他几个类似的二级索引表都是正常的,只有这张二级索引表的早期数据缺失,目前原因不明(曾经历过: 停电、磁盘损坏文件丢失与转移)。

-- 走二级索引表查询,无数据
SELECT SERVER_DATE,COUNT(1) FROM T_ODS_XXX WHERE SERVER_DATE<'2020-01-10' GROUP BY SERVER_DATE;
+--------------+-----------+
| SERVER_DATE  | COUNT(1)  |
+--------------+-----------+
+--------------+-----------+
No rows selected (0.016 seconds)

-- 查询主表,有数据
SELECT /*+NO_INDEX*/ SERVER_DATE,COUNT(1) FROM T_ODS_XXX WHERE SERVER_DATE<'2020-01-10' GROUP BY SERVER_DATE;
+--------------+-----------+
| SERVER_DATE  | COUNT(1)  |
+--------------+-----------+
| 2020-01-01   | 99        |
| 2020-01-02   | 148       |
| 2020-01-03   | 956       |
| 2020-01-04   | 9313      |
| 2020-01-05   | 8667      |
| 2020-01-06   | 7117      |
| 2020-01-07   | 8634      |
| 2020-01-08   | 10411     |
| 2020-01-09   | 11478     |
+--------------+-----------+
9 rows selected (1.462 seconds)



-- app设置的二级索引表 IDX_T_ODS_XXX_SERVER_DATE_SHOW_ID,最早日期是 2020-03-27 开始,并且与主表存在不一致情况,从2020-03-28开始数据正常。

SELECT SERVER_DATE,COUNT(1) FROM T_ODS_XXX WHERE SERVER_DATE<'2020-04-01' GROUP BY SERVER_DATE;
+--------------+-----------+
| SERVER_DATE  | COUNT(1)  |
+--------------+-----------+
| 2020-03-27   | 1898      |
| 2020-03-28   | 19099     |
| 2020-03-29   | 16459     |
| 2020-03-30   | 16745     |
| 2020-03-31   | 19645     |
+--------------+-----------+
5 rows selected (0.241 seconds)

SELECT /*+NO_INDEX*/ SERVER_DATE,COUNT(1) FROM T_ODS_XXX WHERE SERVER_DATE>'2020-03-26' AND SERVER_DATE<'2020-04-01' GROUP BY SERVER_DATE;
+--------------+-----------+
| SERVER_DATE  | COUNT(1)  |
+--------------+-----------+
| 2020-03-27   | 20699     |
| 2020-03-28   | 19099     |
| 2020-03-29   | 16459     |
| 2020-03-30   | 16745     |
| 2020-03-31   | 19645     |
+--------------+-----------+


最后总结:
如何补充二级索引表缺失的数据?
解决方法:写一个程序,走主表自身row key,按照缺失日期分批获取数据,再次upsert进入主表,此时二级索引表就会刷新。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值