拆分表可处理100次插入/秒?

时间:2011-10-17 05:46:35

标签: sql-server performance io

我们将拥有一个MS SQL Server数据库,每秒读取100次,在一小时内均匀分布2,400个插件,并在一小时内均匀分布14,400次更新。每月环境可能增长1,700行。列数小于20。

我们是一个集装箱码头,有60个起重机,每个起重机在给定时刻处理1个集装箱。这些表的属性是a / o:crane_ID(3个字符),container_ID(11个字符),container_unique_number(double),container_status(1个字符),还有一堆其他细节。

在任何特定时刻,最多60条记录(一台起重机处理一个容器)将“活跃”;其余的是历史数据。

活动记录的更新将使用3列进行读取,其中一个字段(container_unique_number)是唯一的。 100个I / O(来自不同客户端的所有不同进程)扫描所有活动记录或活动的特定container_id。 该过程的一半基本上专用于一台特定的起重机。

我们面临的设计问题是:

  • 如果我们构建一个包含所有起重机所有记录的公用表,每秒对活动记录进行100次查询(不同进程),我们是否会遇到性能问题?
  • 或者我们是否应该为每台起重机建立一个专用(但相同)的工作台并将流程专用于特定的表格,例如与起重机1相关的流程只读表CRANE1_blablabla?
  • 如果我们构建一个公共表,我们是否应该将“已完成”的记录移到存档表中?在归档之前,您将允许在此“活动”表中使用的最大nr个完成记录是什么?

谢谢,   西蒙

2 个答案:

答案 0 :(得分:3)

一张桌子。这比硬件要多得多。放入SSD来获取日志和数据,你就可以了。

在大多数公司中,分割到多个表格会让你感到震惊,尽管这会带来“假设的”性能提升。有充分的理由。

这些天你可以在桌面硬件上执行每秒100次操作。

答案 1 :(得分:3)

我不担心这种读写级别。它的绝对值非常低

为所有起重机构建一个表:不要将信息编码到表名中。

如果您想删除存档记录,并且如果您需要在实时表中添加一些存档记录,那么在第8天之后通过一些批处理过程就可以完成。如果您不需要实时表中的存档数据,请立即移动它,否则只需使用一个表并查看Slowly changing dimension即可将其保存在一个位置