SQL Server 2014内存优化表的使用场景
最近一个朋友找到走起君,咨询走起君内存优化表如何做高可用的问题
大家知道,内存优化表作为In-Memory OLTP功能是从SQL Server 2014开始引入,用来对抗Oracle 12C的In-Memory OLTP选件
不过SQL Server的In-Memory OLTP功能是完全内置的功能,不像Oracle需要额外付费才能获得
由于是比较新的技术,可能大家对内存优化表还是比较陌生,网上也鲜有内存优化表使用场景的文章
朋友公司做的业务是跟蜂鸟配送类似的配送业务,整个配送系统平台每天订单量超过30W
坐标问题
系统中某一个部分需要保存跑男的坐标
坐标需要保存到redis和数据库,一旦坐标更新也需要更新redis中的数据
刚开始朋友用传统表来保存坐标数据,但是很快遇到问题,传统表在更新的速度跟不上
后来改用内存优化表,使用了之后
刚开始上传坐标的接口,延迟很大,用了内存表,100毫秒以内,搞定
这些坐标是需要持久化的,而内存优化表是完全支持ACID的,所以也不需要担心数据丢失的问题
内存优化表更新速度快的另一个原因:无锁机制, 并发(如闩锁争用或阻塞)影响的应用程序迁移到内存中 OLTP 时,其性能会显著提高。
大家知道,内存优化表需要有一个非聚集哈希主键索引,大概的表结构是
每个跑男占用一行记录
对应到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集群的内存优化表做了改进,支持在辅助副本上查询内存优化表数据
总结
实际上,如果大家对内存优化表研究比较深入的话,内存优化表实际上相当于把redis嵌入到SQL Server,再在上面加上事务等关系型数据库特性
因为两者实现的底层都是哈希表
注意:内存优化表跟redis一样,是纯内存操作的,所以机器内存不能太小,SQL Server在启动时候会把内存优化表数据库文件
里面的数据全部load入内存,朋友的redis服务器和SQL Server服务器都用的256G内存,内存还算足够
这篇文章写得比较粗糙,最后祝大家新年快乐!
参考文章
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
本文版权归作者所有,未经作者同意不得转载。
SQL Server 2014内存优化表的使用场景的更多相关文章
-
SQL Server 2014内存优化表的使用场景(转载)
最近一个朋友找到走起君,咨询走起君内存优化表如何做高可用的问题 大家知道,内存优化表作为In-Memory OLTP功能是从SQL Server 2014开始引入,用来对抗Oracle 12C的In- ...
-
SQLServer 2014 内存优化表
内存优化表是 SQLServer 2014 的新功能,它是可以将表放在内存中,这会明显提升DML性能.关于内存优化表,更多可参考两位大侠的文章:SQL Server 2014新特性探秘(1)-内存数据 ...
-
sql server 2014内存表
内存数据库,指的是将数据库的数据放在内存中直接操作.相对于存放在磁盘上,内存的数据读写速度要高出很多,故可以提高应用的性能.微软的SQL Server 2014已于2014年4月1日正式发布,SQL ...
-
SQLSERVER 2014 内存优化表相关
更新了SP2的补丁能够解决 不能收缩日志文件的bug了. 但是因为已经不用内存优化表了, 所以想着能够删除内存优化表的file group 但是发现 很难删除 先说结论: 以下是针对内存优化文件组的 ...
-
试试SQLServer 2014的内存优化表
SQL Server2014存储引擎:行存储引擎,列存储引擎,内存引擎 SQL Server 2014中的内存引擎(代号为Hekaton)将OLTP提升到了新的高度. 现在,存储引擎已整合进当前的数据 ...
-
试试SQLServer 2014的内存优化表(转载)
SQL Server2014存储引擎:行存储引擎,列存储引擎,内存引擎 SQL Server 2014中的内存引擎(代号为Hekaton)将OLTP提升到了新的高度. 现在,存储引擎已整合进当前的数据 ...
-
试试SQLSERVER2014的内存优化表
试试SQLSERVER2014的内存优化表 SQL Server 2014中的内存引擎(代号为Hekaton)将OLTP提升到了新的高度. 现在,存储引擎已整合进当前的数据库管理系统,而使用先进内存技 ...
-
SQL Server 2014新特性探秘(1)-内存数据库
简介 SQL Server 2014提供了众多激动人心的新功能,但其中我想最让人期待的特性之一就要算内存数据库了.去年我再西雅图参加SQL PASS Summit 2012的开幕式时,微软就宣布 ...
-
[SQL Server 2014] SQL Server 2014新特性探秘
SQL Server 2014新特性探秘(1)-内存数据库 简介 SQL Server 2014提供了众多激动人心的新功能,但其中我想最让人期待的特性之一就要算内存数据库了.去年我再西雅图参加SQ ...
随机推荐
-
for循环的表达规则,for循环的嵌套,跳转语句;穷举;迭代;异常处理
for循环的基本格式 for(表达式1:表达式2:表达式3) { 循环体: } for循环的四要素 表达式1就是变量初始化:表达式2就是循环条件:表达式3是状态改变 static void Main( ...
-
Luogu 1090 合并果子(贪心,优先队列,STL运用)
Luogu 1090 合并果子(贪心,优先队列,STL运用) Description 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成一堆. 每 ...
-
Java基础---Java---IO流-----对象的序列化、管道流、RandomAccessFile、数据类型的流对象DataStream、ByteArrayStream
ObjectInputStream 对以前使用 ObjectOutputStream 写入的基本数据和对象进行反序列化. ObjectOutputStream 和 ObjectInputStream ...
-
JVM自动内存管理机制——Java内存区域(上)
一.JVM运行时数据区域概述 Java相比较于C/C++的一个特点就是,在虚拟机自动内存管理机制的帮助下,我们不需要为每一个操作都写像C/C++一样的delete/free代码,所以也不容易出现内存泄 ...
-
docker--compose--sonarqube
Create this docker-compose.yml file: version: "2" services: sonarqube: image: sonarqube po ...
-
zabbix监控指定端口
生产上经常会监控某些具体端口状态,下面介绍具体步骤: 主机名 ip 操作系统 zabbix版本 zabbix-server 172.27.9.63 Centos7.3.1611 zabbix_serv ...
-
Maven启用代理服务器访问
0.什么叫代理服务器? 代理服务器英文全称是(Proxy Server),其功能就是代理网络用户去取得网络信息.形象的说:它是网络信息的中转站. 代理服务器就好象一个大的Cache,这样就能显著提高浏 ...
-
python platform模块
该模块用来访问平台相关属性. 常见属性和方法 系统名称 platform.system() 返回系统/操作系统名称,例如“Linux”,“Windows” >>> platform. ...
-
Lucene_索引(域)的查询
package cn.tz.lucene; import java.io.File; import org.apache.lucene.analysis.Analyzer; import org.ap ...
-
thinkphp5 toArray()报错
//DB操作返回是数组.模型直接操作返回是对象 //对象类型转换数组 //打开 database.php 增加或修改参数 'resultset_type' => '\think\Collecti ...