我的订单表包含,
Order table{
order id, item id, date...
}
随着时间的流逝,桌子将无限扩大。
处理生长桌时的良好做法是什么?
我正在考虑创建一个sp以检查查询日期,然后每天创建一个新表。这似乎不是一个好的解决方案。
有什么建议吗?
答案 0 :(得分:0)
这些评论非常准确和正确:没有理由照顾这样的桌子。 如果您在某大型零售公司工作,并且期望每小时成千上万的订单,那么该解决方案是在硬件而非数据库中进行的。带有RAID 0中多个SSD磁盘的高端裸机服务器将允许处理1 TB的表而不会费力。 在数据库中,简单,通用的做法(例如正确的索引编制)就足够了。详细信息取决于您的DBMS:适用于Oracle的信息不同,适用于MySQL的信息,适用于MS-SQL的信息和适用于PostgreSQL的信息。
但是,如果您希望某些跨星系业务,那么您必须考虑以下事实:每个会计年度已关闭的订单都可以存档。那些旧的和送达的订单可以复制到另一个表中的另一个表(甚至是NoSQL DB)中,在另一个位置进行压缩,并可能在性能较低的硬件中使用,从而减轻了生产表的负担。经过多年的使用(在稳定,不扩展的业务中),“订单”表将变得相当稳定:每年有许多新订单,许多已在年底存档。 在这种情况下,无论如何,您都可以要求外星人提供外星人机器来处理数据库。
答案 1 :(得分:0)
正如其他人所说,由于数据库功能强大,因此不太可能需要存档。
一个未提及的区域(并且因数据库而异)正在分区。顾名思义,分区使您可以通过数据库而不是代码来管理数据块。尽管可以将其用于性能,但这不是唯一的情况。它更有可能用于管理(例如,仅备份本周的数据,重建索引等)。您将需要检查您特定数据库的功能,以查看是否有任何好处(但不要被性能低迷所困扰!)