我目前有一个包含 500K 行的数据库,未来可能会增长到 300 万行。表的结构如下所示:
-id
-price
-sku
-version(由日期时间字符串表示,即 20211012)
我有一个 ETL 作业,它将每晚更新价格和版本列,只有 UPDATE 语句,没有 INSERT 和 DELETE。我的问题是为了显示该项目,我需要按 sku 和版本进行查询。在 ETL 作业运行之前,一切正常。但是,当 ETL 作业开始批量更新行时,版本会发生变化,并且由于版本不匹配,我不再能够选择该特定 sku。
我解决此问题的想法是跟踪 ETL 作业执行的先前和当前版本(即 20211012 和 20211013),以便在记录已更新或回退到先前版本时尝试选择当前版本如果 ETL 作业尚未更新该特定对象。
有什么我应该注意的陷阱吗?如果我对 ETL 作业同时更新的特定记录执行 SELECT 会发生什么?