sql-server - 拆分表以每秒处理 100 次插入?

标签 sql-server performance io

我们将拥有一个每秒 100 次读取的 MS SQL Server 数据库,在一小时内均匀分布 2,400 次插入,在一小时内均匀分布 14,400 次更新。环境每月可能会增长 170 万行。列数低于 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?
  • 如果我们确实构建了一个公用表,我们是否应该将“已完成”记录移至存档表中?在归档之前,您允许在此“事件”表中保存的已完成记录的最大数量是多少?

谢谢, 西蒙

最佳答案

一张 table 。这更多地与硬件有关。放入 SSD 来存储日志和数据,一切都很好。

拆分到多个表会让您在大多数公司中获得第一,尽管这会带来“所谓的”性能提升。有充分的理由。

如今,您可以在桌面硬件上执行每秒 100 次操作。

关于sql-server - 拆分表以每秒处理 100 次插入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7789814/

相关文章:

sql - 将表情符号/表情符号添加到 SQL Server 表

sql-server - 缺口和岛屿?或不?

java - 用 Java 将非常小的字符串写入文件的最快方法是什么?

c# - 检查文件是否可以读取

Haskell - 递归循环中的分支除了所选分支之外还执行所有先前访问过的分支

sql-server - SQL Server : convert ((int)year,(int)月,(int)日)到日期时间

sql - 如何在没有日志文件的情况下附加 MDF?

performance - 为什么 Haskell 函数执行时间测量与 ghc 计时不同?

c++ - __forceinline 的执行速度是否比 __inline 快?

file - 我如何在fortran中声明MPI_File_set_view所需的整数(MPI_OFFSET_KIND),以防止写入大数据时溢出?