我从来没有使用过SQL Server分区,但是目前我面临着设计数据库的问题,而这些数据库可能需要它的支持。该系统用于优惠券。优惠券应定期发行,通常每六周发行一次,尽管也会临时发行(例如特殊活动)。有1500万客户,每次发行活动,每个客户将获得6种不同的优惠券类型,总共提供9000万个优惠券实例。我们需要跟踪优惠券实例的兑换数据并保持6个月,尽管通常优惠券仅有效6周。任何兑换无效优惠券的请求都不会到达数据库,因为直到POS都将对其进行验证。
在六个月的时间内,我们需要在Coupon Instance表中存储3.6亿行,在Redemption表中存储多达7200万行(假设最大20%的赎回率)。我感觉这些数字对于单个分区来说太大了吗?
我的问题是-用作分区键是什么?一个明显的候选者将是通过发行事件,给出大约6个分区。但是然后我认为,即使那样也会使分区大小太大而无法实现最佳性能?是否可以通过两个密钥进行划分,例如按发布事件+客户ID的最后一位数字?因此逻辑将是:
If issuance event = 1 and last digit of customer id < 5 then
Store in partition 1
Else if issuance event = 1 and last digit of customer id >4 then
Store in partition 2
Else if issuance event =2 and last digit of customer id <5 then
Store in partition 3
Else if issuance event =2 and last digit of customer id >4 then
Store in partition 4
Etc...
另外,我不确定我们需要的数据库服务器规格。16GB和8CPU是否足够?数据库需要能够从优惠券实例表中返回结果,并在不到半秒的时间内键入数字条形码值。验证(选择)和赎回(插入)的预期交易请求预计将达到约每分钟3500个峰值。
SQL Server 2008r2 64位数据库服务器将通过功能强大的主机配置为VM,并可以访问高性能和大容量SAN。
对于那些已经部署了SQL Server解决方案来管理类似卷的人员的建议,我将不胜感激。
问候
抢。