简单介绍一下背景—我们有一个名为"orders"的表,每天大约有10k条记录写入其中。这是数据库中查询最多的表。为了保持表的小,我们计划将大约一周前写入该表的记录移动到另一个表中。这将由自动化作业完成。虽然我们知道将历史记录放到一个单独的服务器上是有意义的,但我们目前只有一个DB服务器。
订单表在databaseA中。以下是我们正在考虑的方法:
- 创建一个新的模式数据库b并创建一个包含历史记录的订单表?
- 在databaseA中创建一个orderhistory表。
如果我们能得到指示,哪种设计能提供更好的性能,那就太好了。
编辑: 性能更好- 查询当前订单-因为它不受过去数据的影响
- 查询历史记录
你可以:
- 有一个单独的存档表,可能在其他数据库中。这可以编译查询。
- 使用分区。
我不确定MySQL分区的有效性。作为备选方案,您可以看看PostgreSQL分区。大多数商业数据库也支持。
我从你的问题中了解到你只想处理当前的订单。
过去,在繁忙的站点上使用了3个表
新订单,处理订单,已完成订单,
和一个主订单表
订单所有这些表都与orders表和主键有关系。
例如new_orders_id, orders_idProcessing_orders_id, orders_id ....
使用左连接查找新订单和处理订单应该是相对高效的