ITPUB论坛-中国最专业的IT技术社区

 找回密码
 注册
查看: 40471|回复: 54

【IT名人堂】对话易车网高级DBA:为何对SQL Server 内存数据库情有独钟?

[复制链接]
认证徽章
论坛徽章:
127
目光如炬
日期:2014-12-01 06:00:04火眼金睛
日期:2015-02-01 06:00:04目光如炬
日期:2015-01-26 06:00:04目光如炬
日期:2015-02-16 06:00:03火眼金睛
日期:2015-03-01 06:00:03目光如炬
日期:2015-03-02 06:00:13慢羊羊
日期:2015-03-04 14:53:33目光如炬
日期:2015-07-26 22:00:00目光如炬
日期:2015-07-26 22:00:002015年新春福章
日期:2015-03-06 11:58:39
发表于 2015-1-15 10:38 | 显示全部楼层 |阅读模式

很早以前,有一个古老的预言,认为全球大概只需要五台计算机就够了,640KB的内存应该对任何人都够用了。时至今日,这种预言在云计算时代慢慢变成了现实。Garnter公司的研究表明,80%的业务流程依赖于IT,而IT系统的根基又是数据库系统,关系数性数据库已经平定天下,真正的战场角逐转向了分布式与内存数据库。传统的数据库大佬开始发力内存数据库,Oracle推出了Times Ten,SAP 有HANA,微软在SQL Server 2014中也内置了内存技术,三驾马车齐驱并进,易车网为何对SQL Server情有独钟?本期IT名人堂我与易车集团高级DBA高继伟(社区ID:Shanks_gao)对话,畅谈SQL Server内存数据库的最佳实践。



皮皮(Q1):高总,您好!很荣幸有机会采访到您,能否想给我们介绍下自己?

高继伟(A1):大家好,很高兴接受皮皮的采访,我是来自易车集团的DBA高继伟,目前主要负责易车集团数据平台架构设计、优化、运维方面的工作.

自从大学毕业以来,我一直是一名ITer,不过从新手变成了老手,但不忘初衷,坚持学习来提高自我。除传统的关系型数据库,外,我自己也对分布式技术、内存数据库技术拥有浓厚的兴趣,期待和大家一起学习进步.当然对于自己熟悉的领域,尤其是SQL Server,我也乐于和大家一起探讨.



皮皮(Q2):无论是PC端还是移动端,易车为用户提供了多维度的车型查询,车型报价实时查询等功能,这得益于易车网强大的车型数据库,那么支撑易车集团背后的数据库到底是什么?它有哪些亮点?

高继伟(A2):这可是一个不小的话题啊!首先,易车做为国内领先的汽车资讯服务平台,其健壮高效的数据库设计必须满足广大用户个性的数据需求.在数据库设计阶段我们会仔细研讨将来可能面临的情况,如数据量、功能扩展等.在满足业务需求的同时力求灵活高效。其次,我很想说,这里说的数据库并不完全指底层的数据存储.正如皮皮所问,易车为用户提供了多维度的车型,报价查询,这里我们会根据查询的特性,在前端应用不同的数据检索方式,如ElasticSearch.此外在数据库上层我们还有缓存层以减少数据库的硬访问.我想这些可以共同称之为"数据库服务".最后我们的数据库日常运行过程中时刻进行着优化工作,依据我们完善的性能报表系统,在任何实例、库、对象及相关的SQL语句出现异常的情形下DBA就会介入分析,并优化.当然这其中的部分工作已经由我们智能分析系统完成了。



皮皮(Q3):对很多企业来讲,可能会面临着一些突发情况,比如业务进行时忽然停下了,服务器宕机了数据也找不到,IT们不排查故障一点喘气的时间也没了,您是否也会遇到类似的囧境?那么有什么方法才能保持系统的持续不间断工作,保证数据不丢失呢?

高继伟(A3):在我眼里,数据库HA是DBA的一个永恒话题,在清楚业务需求的RPO、RTO后需要DBA按照需求设计相应架构,并尽量降低成本.这里我简单的说下SQL Server,根据需求不同我们可以选择SQL Server故障转移群集,AlwaysON,Mirror,Logshipping,Replication, service broker等等,并加以合理的备份策略.


另外关于数据库的SLA这里应该基于业务访问涉及数据库的各个粒度及方面.皮皮这里问道到囧境,曾经我就遇到过。还记得当时由于一些不合理的批量DML,导致整个表被锁,虽然及时发现了问题,取消了查询,但已经波及到了业务,事务回滚过程未能幸免。


为了保持数据库持续的高可用性,除了在架构设计上下足功夫外,合理友好的监控也是必不可少的,我们既提供CPU、内存、磁盘监控,也有针对个别语句和用户访问的异常访问报警等.这样一来,一旦出现异常问题,我们的DBA可以迅速介入并及时解决,把影响降到最低.这样一来,DBA的经验就显得十分可贵.



皮皮(Q4):有人认为云计算的核心就是在一大堆烂机器上提供高性能可靠服务,80%的数据、计算、应用将被云化,能否和我们分享下易车集团是如何实现数据平台的私有云应用?

高继伟(A4):这里我谈谈自己对云计算的一点理解,云计算的本质之一就是虚拟化,目的很明确,充分利用计算资源并灵活可控.至于有多大的比例将被云化,我就不做揣测了,希望二八定律依旧灵验.可以说云是趋势,就个人而言,越来越多的应用资源都在云端,我们无需为自己的PC存储资源不足而感到烦恼了.而针对企业就如我之前所说云可以使得企业可以显著降低TCO,无论是自建私有云还是购买大厂商的云服务.


我们自己的数据私有云平台主要应用开源的解决方案,如存储层我们主要应用GLusterFS,在计算层主要应用KVM搭载.同时会根据应用特性涉及到微软的相关虚拟化解决方案.



皮皮(Q5):据说,新浪、腾讯、网易、开心网都使用到了易车的购车数据库,那么易车的SQL Server 数据库又是如何实现数据库负载均衡的?

高继伟(A5):易车除了提供优秀的汽车资讯服务外,同时也是一个汽车数据平台.这里我们采用的是可扩展的读写分离方案,正如皮皮提到的那些网站,客户可以将数据置于我们的数据平台中并提供访问接口.在SQL Server的同步方式上,我们对其中采用的技术如replication, service broker进行了部分改造优化,使之更适合我们的需求.



皮皮(Q6):在2015中国数据库技术大会上,我了解到您的演讲主题是《SQL Server内存数据库揭秘》,而谈到内存数据库,Oracle推出了Times Ten,SAP 有HANA,微软在SQL Server 2014中内置了内存技术,它们究竟有什么不同?各自适应什么样的业务场景?那么易车网为什么对SQL Server 情有独钟呢?

高继伟(A6):这个问题很开放,我只谈下自己的理解.说到不同点,与SAP HANA有所不同,SQL Server的In-memory OLTP(hekaton)和Oracle的Times ten完全是针对高负载的OLTP业务设计的引擎,而SAP HAHA不是OLTP引擎,主要是内存中基于列存储用于高效的检索应用,并兼容OLTP系统.和Times ten有所不同的是,SQL Server Hekaton完全取消了latch,更激进.同时Hekaton中采用了乐观的并发控制,用时间戳+版本行保证事务.事务过程中无需锁,并且优化器采用特定的CBO,并可以实现本地编译,为机器代码完成执行,极大提高了性能。举个例子来讲,如知名的Bwin,Hekaton使得它的每秒批处理请求由15000提升到250000,提升了17倍.在微软自己的官方解决方案中也不乏提升100倍的案例.可以说在高并发的OLTP系统中,Hekaton绝对是个利器.


如果大家对Hekaton感兴趣,DTCC 2015,我将为大家重点分享上述关键技术实现的相关内容。


关于数据库选型,易车并非只用SQL Server,我们也有不少业务运行在MySQL和NOSQL(如cassandra)中.借用火影中宇智波.鼬的一句话:"任何术都是有缺陷的",同样没有哪项技术是完美无缺的.特定的场景选择特定的技术是我们的出发点.尽管MySQL很优秀,但对于易车而言其中一部分应用逻辑比较复杂,如为汽车经销商提供的车易通服务,由于Mysql的优化器自身不够完善,使得其处理复杂SQL语句上显得力不从心,SQL Server作为传统的关系型数据库,其优化器十分强大,能够满足我们的绝大多部分的需求,并且在扩展性、易用性等方面都做得十分出色,故易车内部的应用中SQL Server比较流行.



皮皮(Q7):能否结合易车网的业务场景,和我们分享SQL Server 性能调优的一些秘诀?

高继伟(A7)说到性能调优我想说这是传统的DBA最有价值的工作之一了,它涉及的面很广,需要了解的知识点也非常多,比如数据的存储结构、数据库的引擎工作方式,优化器的工作原理及方式等等.单就SQL Server优化器的基本工作流程来讲,如果加以实例简单说明我想就至少需要半天时间.如果说秘诀的话,我想抛出四个字:勤学苦练.如果各位DBA在工作中遇到了性能问题,不放沉下心来,好好琢磨,假以时日,能够水落石出.如SQL Server中最常见的键查找,覆盖索引的作用是什么,数据行是如何组织的,对DML的操作影响,随机IO的缺陷如何,预读会有何种影响,nested loop中的预读又如何等等..


为了让大家领悟得更透彻,在本期IT名人堂里我想分享一个今年易车双11活动中我遇到的案例及解决过程.


背景:双11活动中,公司网站访问量明显增加,发现某台数据库实例资源消耗上升明显.通过DMV捕获其中消耗资源的语句发现资源大多被个别高并发的语句消耗.

语句执行计划截图图1-1

                              图片1.png

可以看出绝大多数消耗被Sort占据

由于Sort是典型的计算密集型操作,消耗CPU的同时消耗大量内存.


在没有溢出到tempdb的sort采用的算法是快速排序,内存消耗将至少是排序结果集的200%以上,本例中单条查询的内存消耗在600MB以 上,高并发,加上语句执行周期长(2s以上)使得单条语句长期占用内存,影响Buffer Pool的稳定,进而影响吞吐.同时带来不好的用户体验.

通过对语句实际分析,发现如果采用并行执行,优化器是可以利用Bitmap过滤,进而改善整体查询.

语句执行计划截图图1-2


                      图片2.png

可以看出在并行执行计划中由于采用了Bitmap过滤,使得并行响应时间缩短为不到0.3s,同时CPU时间缩短为1s并且内存的消耗由 600MB+减少至不到300M,这样减少资源使用的同时也提升了用户体验,并且由于响应时间不到0.3s使得查询内存的占用时间明显缩短,保证了 Buffer Pool的稳定,进而确保吞吐基本稳定.


调整方案的抉择

实际上要优化器针对某些查询使用并行执行计划,我们提供了几种选择方案

Plan Guide, Trace Flag , cost threshold for parallelism


由于当时的语句是个复杂的拼串语句,在query cache中发现针对相关语句存在不少不同的query_hash,此时如果使得Plan Guide调整复杂,不确定因素多,因此未采用.

针对特定的语句,采用Trace flag(8649)对特定语句调整其实是最具针对性的解决思路,但是考虑到代码中实际上是需要研发同事参与的,在双11这个节骨眼儿上,我们运维人员遇事自己扛,尽量不想给别人找事儿。(同时也是运维人员价值的侧面直观体现).


因此决定采用并行阈值,使系统自动运行,并调整合适的并行度.记得调整并行阈值时,我并未采用一般的二分法进行定位调整,考虑到并行阈值调整是实例级调整,会清空plan cache,影响很大,多一次调整就多一次性能抖动(甚至多一次意外).这时在一个时间段内我对实例的高消耗、出镜率高的查询进行采样,分别统计它们的 subtree cost,进而大概确定了最小影响的阈值区间,并进行调整.由于本人人品不错,一次调整就OK了.


之后CPU下降明显,访问量继续升高.


可以看出虽然只是调整了一个系统参数,但调整过程并非动动鼠标手指那么简单.任何优化我们都需要知道前因后果,这样才能运筹帷幄,淡定自如.


皮皮(Q8):DBA是一个容易精神紧张的人群,而且总是被推到风口浪尖上。因此在自动化流行、云计算大行其道时,DBA自然就成为了即将失业的‘众矢之的’。易车网有自己的私有云平台,作为易车网的DBA,您对此是怎么看的?


高继伟(A8):非常有意思的话题,诚然当数据库迁移到云端后,你不必时刻关注它的部署,访问是否安全,备份等诸如此类的日常运维工作。但对传统DBA而言,你需要更关注是性能预警与优化工作,无论是共有云还是私有云,计算资源是稀有资源,不合理的数据库设计、访问或是不合理的应用架构都会使应用消耗更多的资源。而这些资源便是真金白银.所以各层次性能预警及优化工作对传统DBA而言,显得尤为重要.这解决的不光是访问速度,还有降低TCO.


随着大数据与云计算的各种新潮技术的涌现,DBA需要时刻迎战,拥抱变化,如果说之前的DBA 关注的是如何让数据库系统良好地运行在操作系统及相应的网络和存储上,那么现如今,我们的DBA 需要聚焦到如何让数据库正常运行在云端.为此我们要学习云计算相关技术,比如虚拟化,分布式等等.


最后祝所有的DBA远离紧张,做个潇洒的DBA.


如果您想了解更多关于SQL Server 最新前沿技术,请关注2015第六届中国数据库技术大会,大会第二天专场13将重磅推出SQL Server 专场,届时本期嘉宾易车集团高级DBA高继伟将现身演讲主题为《SQL Server内存数据库揭秘》的精彩演讲,欢迎大家踊跃报名参会:http://dtcc.it168.com/


作为国内数据库与大数据领域最大规模的技术盛宴,2015第六届中国数据库技术大会(DTCC)即将于2015年4月16日-18日在北京新云南皇冠假日酒店震撼登场。大会以“大数据技术交流和价值发现”为主题,云集了国内外顶尖专家,共同探讨MySQL、NoSQL、Oracle、缓存技术、闪存技术、国产数据库、Hadoop、数据挖掘、推荐系统、机器学习等领域的前瞻性热点技术。大会届时将吸引2500多名IT人士参会,举办120多场精彩演讲,致力于为数据库人群、大数据从业人员、广大互联网人士提供最具价值的交流平台。

11.jpg

本期IT名人堂互动环节:点击名人堂栏目

活动时间:2015年1月15日-2月15日

活动参与:欢迎大家积极发表自己的观点,探讨大数据、云计算、数据库等热点技术,本期嘉宾将线上为大家答疑解惑,更期待大家能擦出火花。

活动奖励:参与互动表现优秀的网友将获得技术图书一本。



认证徽章
论坛徽章:
18
ERP板块每日发贴之星
日期:2010-08-15 01:01:02喜羊羊
日期:2015-03-16 11:00:26喜羊羊
日期:2015-03-10 14:01:43知识
日期:2015-03-10 11:54:022015年新春福章
日期:2015-03-06 11:57:31暖羊羊
日期:2015-03-04 14:50:37ITPUB社区12周年站庆徽章
日期:2013-08-20 11:30:112013年新春福章
日期:2013-02-25 14:51:24迷宫蛋
日期:2013-01-07 13:17:49ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15
发表于 2015-2-9 23:27 | 显示全部楼层
在应用程序开发中,你们的数据库有使用存储过程、触发器等应用吗?

我们公司的业务基本是写在存储过程中,对于哪些业务应该写在数据库层,哪些应该写在应用层,你有什么好的建议吗?

SQL SERVER分布式的事务访问,一般的处理方式是这么样子的,我一直使用链接服务器,但在数据联接查询时或OLTP时会比较慢?你们一般是如何处理的?

使用道具 举报

回复
论坛徽章:
9
技术图书徽章
日期:2014-08-22 13:56:58itpub13周年纪念徽章
日期:2014-09-28 10:55:55itpub13周年纪念徽章
日期:2014-10-08 15:19:03itpub13周年纪念徽章
日期:2014-10-08 15:19:03itpub13周年纪念徽章
日期:2014-10-08 15:19:03itpub13周年纪念徽章
日期:2014-10-08 15:19:03itpub13周年纪念徽章
日期:2014-10-08 15:19:03暖羊羊
日期:2015-03-04 14:50:372015年新春福章
日期:2015-03-06 11:57:31
发表于 2015-1-15 11:41 | 显示全部楼层
多谢分享。

使用道具 举报

回复
论坛徽章:
5
优秀写手
日期:2014-03-26 05:59:56马上有钱
日期:2014-10-30 16:45:50白羊座
日期:2015-11-10 11:35:01秀才
日期:2015-12-25 15:31:10秀才
日期:2016-01-25 15:02:04
发表于 2015-1-15 13:18 | 显示全部楼层
本帖最后由 WY24420 于 2015-1-15 13:18 编辑

感谢分享!支持高总

使用道具 举报

回复
发表于 2015-1-15 13:37 | 显示全部楼层
感谢分享!支持高总

使用道具 举报

回复
求职 : 数据库管理员
论坛徽章:
11
2011新春纪念徽章
日期:2011-02-18 11:43:362016猴年福章
日期:2016-02-23 09:58:34秀才
日期:2015-12-21 09:48:11秀才
日期:2015-10-26 09:24:12秀才
日期:2015-10-08 17:57:58itpub13周年纪念徽章
日期:2014-10-08 15:13:38马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11ITPUB社区12周年站庆徽章
日期:2013-08-21 15:17:46ITPUB社区千里马徽章
日期:2013-06-09 10:15:34
发表于 2015-1-15 14:20 | 显示全部楼层
高老大又了场了

使用道具 举报

回复
论坛徽章:
0
发表于 2015-1-15 18:58 | 显示全部楼层
支持高总!!

使用道具 举报

回复
求职 : 数据库开发
论坛徽章:
0
发表于 2015-1-15 19:05 | 显示全部楼层
支持高总!!!

使用道具 举报

回复
论坛徽章:
2
喜羊羊
日期:2015-03-04 14:52:462015年新春福章
日期:2015-03-06 11:58:18
发表于 2015-1-16 09:14 | 显示全部楼层
原来这里这么多熟人啊

使用道具 举报

回复
论坛徽章:
0
发表于 2015-1-16 14:02 | 显示全部楼层
高总威武。。

使用道具 举报

回复
论坛徽章:
13
咸鸭蛋
日期:2012-11-01 17:05:28喜羊羊
日期:2015-03-04 14:52:46马上有对象
日期:2014-02-18 16:44:082014年新春福章
日期:2014-02-18 16:44:08优秀写手
日期:2013-12-18 09:29:10雪铁龙
日期:2013-09-11 10:30:25雪佛兰
日期:2013-08-07 14:34:372013年新春福章
日期:2013-02-25 14:51:24迷宫蛋
日期:2012-06-13 15:28:34茶鸡蛋
日期:2012-05-28 17:27:32
发表于 2015-1-16 14:52 | 显示全部楼层
支持高总

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

TOP技术积分榜 社区积分榜 徽章 电子杂志 团队 统计 虎吧 老博客 知识索引树 读书频道 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档 | IT博客
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛 | SAP ERP系统
CopyRight 1999-2011 itpub.net All Right Reserved. 北京皓辰网域网络信息技术有限公司版权所有 联系我们 网站律师 隐私政策 知识产权声明
京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:1101082001 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表