我需要创建一个设计来满足优惠券系统以下要求
- 每 6 周发放一次优惠券
- 每次发行将提供约 9000 万张优惠券实例
- 优惠券实例记录一旦超过 6 个月就会被删除
- 总优惠券实例约 3.8 亿
- 每分钟峰值约为 3,500 个赎回请求(读/写)+每分钟 1,500 个验证请求(只读)
- 必须支持约 3,000 台 POS 收银机的连接
- 数据库必须提供 0.5 秒内的响应
我需要使用 SQL Server 2008r2 64 位。16gb 和 8CPU 够用吗?您认为我还需要使用表分区吗?
谢谢
抢。
答案1
我将继续回答硬件部分的问题:
基本上,SQL Server 会尝试将数据库完全保存在 RAM 中,并频繁轮询系统以查看 RAM 是否可用,并且仅在内存不足时才开始交换数据(不完全正确,据我所知,很少使用的表也可能会交换到磁盘)。如果您可以大致估计数据库的大小,请尝试获取尽可能多的 RAM,以使数据库完全适合 RAM,然后再多放一些。如果这不可能(或更好:也这样做),请尝试获取快速 I/O 子系统并将数据库文件分散到多个磁盘上,这也是建议的。
答案2
- 你的设计和索引将更为重要,
没有这些,无论你做什么都会遇到问题 - 我会添加更多 RAM
- 你的磁盘设置很重要:单独的数据/日志/tempdb
- 分区可能有用,但不是必需的:每个分区一个单独的磁盘阵列会更好
答案3
16gb 和 8CPU 够用吗?
是的,但是这就像根据收音机的型号来判断汽车的尺寸一样。
对于事务数据库来说,更重要的因素一直是磁盘布局和速度。例如,每秒发生 3500 次更改事务(通过赎回写入)。15k SAS 驱动器仅适用于 450 IOPS。银行 - 这里有一个问题。您的 CPU 甚至不会为此而烦恼,RAM 甚至不在游戏中。
因此,更重要的是一个非常快的 IO 子系统。