当前位置: 首页 > 面试题库 >

MySQL数据库中历史数据的最佳做法

尹超
2023-03-14
问题内容

最近,我考虑了将历史数据存储在MySQL数据库中的最佳做法。目前,每个可版本控制的表都有两列-valid_fromvalid_to,两者均为DATETIME类型。具有当前数据的记录已valid_from充满了创建日期。当我更新此行时,我填写valid_to了更新日期,并添加valid_from了与valid_to上一行相同的新记录-
简单的东西。但是我知道表会非常快,因此获取数据可能会很慢。
我想知道您是否有任何存储历史数据的做法?


问题答案:

担心“大”表和性能是一个常见的错误。如果您可以使用索引来访问数据,那么拥有1000000条记录中的1000条就没有关系-
至少可以测量。您提到的设计是常用的。这是一个很棒的设计,其中时间是业务逻辑的关键部分。

例如,如果您想知道客户下订单时商品的价格,那么能够搜索到其中valid_from
order_date的产品记录是迄今为止最简单的解决方案。

并非总是如此-如果出于存档目的保留数据,则创建存档表可能更有意义。但是,您必须确保时间 确实 不是业务逻辑的一部分,否则搜索多个表的痛苦将是巨大的-
想象一下,每次要查找有关表的内容时都必须搜索product表或product_archive表。下订单时产品的价格。



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

  • 问题内容: 我想知道构建和存储ID的最佳做法是什么。几年前,一位教授以社会保险号为例,向我讲述了身份证明系统构造不佳的危险。特别是,由于SSN没有错误检测功能,因此无法分辨9位数字的字符串和有效的SSN之间的区别。现在,政府机构需要“姓氏+ SSN”或“生日+ SSN”之类的信息来跟踪您的数据并确保对其进行验证。另外,根据您的出生地,您的社会保险号是可以预测的。 现在,我正在建立一个用户数据库…,

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

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

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

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