=====================================

网上针对“秒杀”的解决方案很多,数据拆分化解热点,READPAST解决锁问题,应用程序排队限制并发等等很多方式,各有优缺点,只为证明一句名言:条条大路通罗马。

=====================================

今天拿SQL SERVER 2014的内存表来试水“秒杀”,内存表使用“版本”解决了高并发下锁请求和阻塞的问题,使用HASH索引来处理数据页“热点”的问题,解决了PAGE_LATCH等待,虽然本地编译在本测试中效果不是那么明显,但是聊胜于无。

由于测试代码在别人代码基础上修改而来,就不拿出来共享了,具体实现思路:

1. 使用本地编译存储过程来封装秒杀(实现对库存UPDATE和对秒杀成功订单的INSERT操作)

2. 在步骤1的基础上封装一层,实现重试逻辑,重试相关基础请重击

3. 将秒杀商品拆分到多条记录中,避免单条记录成为热点

4. 将秒杀成功的订单表设计为内存表,避免插入记录时的PAGE_LATCH等待

=========================================

测试环境

Windows版本:Windows Server 2012 企业版

数据库版本:SQL SERVER 2014 企业版

服务器CPU: 4个物理CPU 64个逻辑CPU

服务器内存:128GB

模拟秒杀300000商品,1200个线程模拟并发

测试结果

记录数 耗时(毫秒) 每秒秒杀商品数
300 2786 107681.26
100 3620 82872.93
50 4363 68760.03
20 5240 57251.91
10 7690 39011.70
5 12266 24457.85
2 31186 9619.70
1 69770 4299.84
 
以上测试结果仅供参考!
 
--=============================================
虽然内存表没有锁阻塞的情况,但是对两个事务更新同一条数据时,只有第一个事务提交后第二个事务才能更新成功,而事务提交受日志写入速度的影响,因此在对单条记录或少量记录更新的时候,磁盘单词写入的时间(Avg. Disk sec/Write) 至关重要,本次测试的服务器上,Avg. Disk sec/Write 平均值在0.05ms到0.09ms之间,因此理论上对单条记录的每秒最大更新次数在1w到2w左右,这也是为什么要拆分成多条记录的原因。
 
--=============================================
福利依旧是妹子

SQL SERVER 2014--内存表实现秒杀场景的更多相关文章

  1. SQL Server 2014内存优化表的使用场景

    SQL Server 2014内存优化表的使用场景 最近一个朋友找到走起君,咨询走起君内存优化表如何做高可用的问题 大家知道,内存优化表是从SQL Server 2014开始引入,可能大家对内存优化表 ...

  2. SQL Server 2014内存优化表的使用场景(转载)

    最近一个朋友找到走起君,咨询走起君内存优化表如何做高可用的问题 大家知道,内存优化表作为In-Memory OLTP功能是从SQL Server 2014开始引入,用来对抗Oracle 12C的In- ...

  3. sql server 2014内存表

    内存数据库,指的是将数据库的数据放在内存中直接操作.相对于存放在磁盘上,内存的数据读写速度要高出很多,故可以提高应用的性能.微软的SQL Server 2014已于2014年4月1日正式发布,SQL ...

  4. SQL Server 2014新特性探秘(1)-内存数据库

    简介    SQL Server 2014提供了众多激动人心的新功能,但其中我想最让人期待的特性之一就要算内存数据库了.去年我再西雅图参加SQL PASS Summit 2012的开幕式时,微软就宣布 ...

  5. [SQL Server 2014] SQL Server 2014新特性探秘

    SQL Server 2014新特性探秘(1)-内存数据库   简介 SQL Server 2014提供了众多激动人心的新功能,但其中我想最让人期待的特性之一就要算内存数据库了.去年我再西雅图参加SQ ...

  6. 看完SQL Server 2014 Q/A答疑集锦:想不升级都难!

    看完SQL Server 2014 Q/A答疑集锦:想不升级都难! 转载自:http://mp.weixin.qq.com/s/5rZCgnMKmJqeC7hbe4CZ_g 本期嘉宾为微软技术中心技术 ...

  7. 谈谈我的微软特约稿:《SQL Server 2014 新特性:IO资源调控》

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 撰写经历(Experience) 特约稿正文(Content-body) 第一部分:生活中资源 ...

  8. 在SQL Server 2014里可更新的列存储索引 (Updateable Column Store Indexes)

    传统的关系数据库服务引擎往往并不是对超大量数据进行分析计算的最佳平台,为此,SQL Server中开发了分析服务引擎去对大笔数据进行分析计算.当然,对于数据的存放平台SQL Server数据库引擎而言 ...

  9. SQL Server 2014里的IO资源调控器

    在本文中,我们将来看看SQL Server 2014在资源调控器方面增加了哪些新的功能.资源调控器(Resource Governor)是从SQL Server 2008开始出现的一项功能.它是用于管 ...

随机推荐

  1. 一个团队和他们的调查表-----("调查表与调查结果分析"心得体会)

    注:这篇blog主要是描述六小灵童团队在从接到调查表任务到分析调查数据最后完成本次任务的过程,以及过程中的点滴和心德体会.---蔡何 1.制表历程 随着课程的推进,我们逐步进入了软件项目中比较重要的需 ...

  2. 正向工程configuration配置连接

    在执行正向工程的时候需要用到这个关键词里面的configure();方法, 这个方法有好几个重构, 都是参数不一样的, 也可以空着不写, 不写的话就会默认去找hibernate.cfg.xml这个文件 ...

  3. ubuntu16.04安装virtualbox

    download:download.virtualbox.org/virtualbox/5.0.10/virtualbox-5.0_5.0.10-104061~Ubuntu~trusty_amd64. ...

  4. nginx 反向代理 apache 服务

    反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时 ...

  5. mysql优化概述2

    一.索引的概念 利用关键字,就是记录的部分数据(某个字段,某些字段,某个字段的一部份),建立与记录位置的对应关系,就是索引.索引的关键字一定是排序的. 二.索引的类型 mysql支持四种索引: 1.主 ...

  6. js取当前页面名称

    // 取当前页面名称(不带后缀名)    function pageName()    {        var a = location.href;        var b = a.split(& ...

  7. Golang之(if)流程控制

    (if)我能坚持做好一只地鼠,慢慢的刨坑,讲洞挖的深一点…… package main import ( "fmt" ) func testIf1() { num := //var ...

  8. PAT 1072 开学寄语(20)(代码+思路)

    1072 开学寄语(20 分) 下图是上海某校的新学期开学寄语:天将降大任于斯人也,必先删其微博,卸其 QQ,封其电脑,夺其手机,收其 ipad,断其 wifi,使其百无聊赖,然后,净面.理发.整衣, ...

  9. codevs1246 丑数

    题目描述 Description 对于一给定的素数集合 S = {p1, p2, ..., pK}, 来考虑那些质因数全部属于S 的数的集合.这个集合包括,p1, p1p2, p1p1, 和 p1p2 ...

  10. nfs文件系统在linux下挂载不上的解决办法

      标签: mount nfs export 2014年08月07日 18:46:247472人阅读 评论(0) 收藏 举报  分类: 文件系统(10)  版权声明:本文为博主原创文章,未经博主允许 ...