当前位置: 首页 > 知识库问答 >
问题:

在MySQL数据库中使用历史数据的最佳实践

郎思远
2023-03-14

最近我考虑了在MySQL数据库中存储历史数据的最佳实践。目前,每个可版本表都有两列-valid_fromvalid_to,都是datetime类型。具有当前数据的记录的valid_from填充了其创建日期。当我更新此行时,我将valid_to填充更新日期,并使用valid_from添加新记录,与前一行中的valid_to相同-简单的操作。但是我知道这个表会非常大,非常快,所以获取数据会非常慢。
我想知道您是否有存储历史数据的实践?

共有1个答案

祁宾白
2023-03-14

担心“大”表和性能是一个常见的错误。如果您可以使用索引来访问数据,那么如果您有1000000个记录中的1000个,这并不重要--至少不是因为您能够测量。你提到的设计是常用的;这是一个伟大的设计,其中时间是业务逻辑的关键部分。

例如,如果您想知道客户机下订单时一个项目的价格是多少,那么能够搜索valid_from order_date的产品记录是最简单的解决方案。

这种情况并不总是如此--如果您只是为了归档而保留数据,那么创建归档表可能更有意义。但是,您必须确保时间确实不是业务逻辑的一部分,否则搜索多个表的痛苦将是巨大的--想象一下,每次您想要了解产品在下订单时的价格时,都必须搜索product表或product_archive表。

 类似资料:
  • 问题内容: 最近,我考虑了将历史数据存储在MySQL数据库中的最佳做法。目前,每个可版本控制的表都有两列-和,两者均为类型。具有当前数据的记录已充满了创建日期。当我更新此行时,我填写了更新日期,并添加了与上一行相同的新记录- 简单的东西。但是我知道表会非常快,因此获取数据可能会很慢。 我想知道您是否有任何存储历史数据的做法? 问题答案: 担心“大”表和性能是一个常见的错误。如果您可以使用索引来访问

  • 我开始创建一个系统,我(作为目前唯一的用户)将加载一个动态创建的PHP页面,该页面具有

  • 目前需求就是将mysql的表结构及数据迁移到pgsql. 我用的方案是使用navicate 同步数据及结构到pg, 有如下问题: mysql中的索引直接丢失了 不知道为啥一直报错表找不到 对于默认值 pgsql也丢失了 请问大家有什么好的实践吗? 我考虑的是 直接使用数据库迁移 将数据库脚本转化为pg的语法

  • 本文向大家介绍数据模型和数据库的历史,包括了数据模型和数据库的历史的使用技巧和注意事项,需要的朋友参考一下 数据模型的历史已有三代DBMS- 分层系统是第一代DBMS。第一代还带有CODASYL系统。他们两个都是在1960年代推出的。 第二代包括关系模型。EFCodd博士于1970年将其引入。 在第三代包括对象关系数据库管理系统和面向对象的数据库管理系统。 数据库的历史时间表如下所示- 基于文件的

  • 我是Android开发的新手,我正在从firebase Realtime数据库中检索所有的子节点,这些节点的约会状态为“已完成”,并且子节点具有当前用户id,但当我移到历史记录时,它没有显示任何内容。有人能帮我解决这个问题吗。我需要尽快解决问题。 Firebase数据库模型

  • 首先,我将用现实生活中的例子来解释我的问题。假设我们是一家公司,我们销售不同的运输工具,例如汽车、公共汽车、卡车、火车、飞机等。假设我们有大约10,000,000种不同的产品,每天都有变化。 对于每个项目,我们都有一个唯一的名称(例如,汽车奥迪A8 X或飞机波音747-200by),其中X和Y是唯一的值。不用担心命名,因为它工作很好。 对于每一项,我们也有一些特殊的数据。数据取决于类型,例如汽车: