我们将有一个MS SQL Server数据库,每秒读取100次,在一小时内均匀分布2,400个插入,并在一个小时内均匀分布14,400个更新。每个月,环境可以增长1,7M行。列数在20以下。拆分表格来处理100次插入/秒?
我们是一个有60台起重机的集装箱码头,每个集装箱码头在特定时刻处理1个集装箱。这些表的属性是a/o:crane_ID(3个字符),container_ID(11个字符),container_unique_number(双精度),container_status(1个字符)和一堆其他细节。
在任何给定的时刻,最多60条记录(一台起重机处理一个容器)将“活跃”;其余的是历史数据。
活动记录上的更新将使用3列进行读取,其中一个字段(container_unique_number)是唯一的。 100个I/O(来自各种客户端的所有不同进程)扫描所有活动记录或活动的特定container_id。 一半的过程基本上是专用于一台特定的起重机。
,我们所面临的设计问题是:
- 如果我们建立一个适用于所有起重机的所有记录,用100个查询(截然不同的过程中)每秒的活动记录一个公共表,将我们性能问题?
- 或者我们应该为每台起重机建立一个专用(但同样)的工作台,并将具体工艺专用于特定工作台,例如,与起重机1相关的工艺只读表CRANE1_blablabla?
- 如果我们建立一个公共表格,我们应该将“已完成”记录移出到归档表格吗?完成记录的最大数量是什么?在存档之前,您可以允许在这个“活动”表中坐下吗?
感谢, 西蒙
通常,主轴驱动器或入门级RAID *不能*每秒处理100 *提交*(根据其他因素,7.2K RPM应达到30,15K到60左右)。提交是昂贵的,与实际同步相比,插入/更新/“操作”*非常便宜* - [真实] ACID支持的价格。这将通过数据库和微调(或禁用)同步到非易失性存储的能力而有所不同,这可能会在极端情况下稍微增加数据丢失的变化。 – 2011-10-17 06:15:40
for'和其他一些细节。'是指与容器移动直接相关的细节(容器移动时它是否改变)还是应该放在'容器'表中的东西(例如容器的最终目的地)? – Seph