设为首页 收藏本站
查看: 1289|回复: 0

[经验分享] SQL Server 2014内存优化表的使用场景

[复制链接]

尚未签到

发表于 2017-12-7 15:32:44 | 显示全部楼层 |阅读模式
SQL Server 2014内存优化表的使用场景
  最近一个朋友找到走起君,咨询走起君内存优化表如何做高可用的问题
  大家知道,内存优化表作为In-Memory OLTP功能是从SQL Server 2014开始引入,用来对抗Oracle 12C的In-Memory OLTP选件
  不过SQL Server的In-Memory OLTP功能是完全内置的功能,不像Oracle需要额外付费才能获得
  由于是比较新的技术,可能大家对内存优化表还是比较陌生,网上也鲜有内存优化表使用场景的文章
  朋友公司做的业务是跟蜂鸟配送类似的配送业务,整个配送系统平台每天订单量超过30W
DSC0000.jpg

DSC0001.jpg


  坐标问题
  系统中某一个部分需要保存跑男的坐标
DSC0002.jpg

  坐标需要保存到redis和数据库,一旦坐标更新也需要更新redis中的数据
  刚开始朋友用传统表来保存坐标数据,但是很快遇到问题,传统表在更新的速度跟不上
  后来改用内存优化表,使用了之后

  刚开始上传坐标的接口,延迟很大,用了内存表,100毫秒以内,搞定

  

  这些坐标是需要持久化的,而内存优化表是完全支持ACID的,所以也不需要担心数据丢失的问题
  内存优化表更新速度快的另一个原因:无锁机制,  并发(如闩锁争用或阻塞)影响的应用程序迁移到内存中 OLTP 时,其性能会显著提高。
  大家知道,内存优化表需要有一个非聚集哈希主键索引,大概的表结构是
DSC0003.png

  每个跑男占用一行记录
  对应到redis里面大家应该都知道怎麽存储了吧,使用redis的散列类型来存储跑男的坐标



hmset 跑男ID X坐标 value Y坐标 value 跑男在线时间 value
hmset  1  X坐标 12  Y坐标 10  跑男在线时间 60
  因为数据库高可用的问题,朋友就购置了新服务器,用来搭建AlwaysOn,新服务器都用SSD固态硬盘
  内存优化表的瓶颈主要在事务日志固化,虽然有延迟持久化,但是延迟持久化在意外宕机的时候可能丢失部分数据
  现在新服务器使用SSD固态硬盘之后,事务日志固化的瓶颈基本消失
  使用新服务器之后,支撑30w/日订单是完全没有问题的

  另一个问题是AlwaysOn问题
  实际上,SQL Server 2014的AlwaysOn集群已经支持内存优化表,只是不支持在辅助副本上查询内存优化表数据,在故障转移之后
  辅助副本上的内存优化表数据是完全没有丢失的,SQL Server 2016对AlwaysOn集群的内存优化表做了改进,支持在辅助副本上查询内存优化表数据
DSC0004.jpg

DSC0005.jpg

DSC0006.jpg


  总结
  实际上,如果大家对内存优化表研究比较深入的话,内存优化表实际上相当于把redis嵌入到SQL Server,再在上面加上事务等关系型数据库特性
  因为两者实现的底层都是哈希表
  注意:内存优化表跟redis一样,是纯内存操作的,所以机器内存不能太小,SQL Server在启动时候会把内存优化表数据库文件
  里面的数据全部load入内存,朋友的redis服务器和SQL Server服务器都用的256G内存,内存还算足够
DSC0007.jpg

  这篇文章写得比较粗糙,最后祝大家新年快乐!
DSC0008.png

  参考文章
  http://www.cnblogs.com/lyhabc/p/3691911.html
  http://www.cnblogs.com/lyhabc/articles/4230547.html
  https://msdn.microsoft.com/en-us/library/dn635118(v=sql.120)
  如有不对的地方,欢迎大家拍砖o(∩_∩)o
  本文版权归作者所有,未经作者同意不得转载。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-421786-1-1.html 上篇帖子: webpack 插件拾趣 (1) —— webpack-dev-server 下篇帖子: 用JSON-server模拟REST API
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表