收获不止数据库

数据库二十年目睹之怪现状⓶ 测评现形记

往期回顾
数据库二十年目睹之怪现状⓵ 太!多!了!

上集回顾

 太!多!了!(数据库)

二十年怪状,迷雾里探望

开源一夜来,万树梨花开

厂商林立多,原创崛起少

套壳实现易,真伪辨识难
时代大发展,技术苦追赶
临时出方案,阉割换扩展
时势造需求,专用库涌流
待到回归日,利益已固留
话说由于数据库厂商及产品太多,导致客户被迫在龙蛇混杂中苦苦挑选,于是在眼花缭乱中,测评乱象出来了.....请看本集——测评现形记。

1

 选型笑哈哈,未来惨巴巴

不久,几位老朋友又见面了,大家聊到数据库选型,都显得很激动。
W:我被坑惨了,公司新上XX数据库替换O记,测评时不仅优于其他国产数据库,甚至还优于O记。上线后发现性能根本不满足需求,严重影响公司业务。
L:啊,后来怎么办?
W:只能硬着头皮坚持了,在我们不停优化应用、厂商派出多名工程师驻场支撑的情况下,现在略有好转。
老明:W兄,你那厂商能驻场配合算不错了。我更惨,因为数据库厂商修复BUG的行动过于迟缓,最终导致生产停机的重大故障,我因此绩效被扣光,年奖全泡汤。
Image
Q:深表同情啊,不过明哥还是没我惨,我们公司花数千万元购买了XX图数据库做项目,测评时很开心,发现性能较原数据库有数十倍提升,而实际上线后发现支持的场景太有限了,而且操作繁琐,维护不便,效率低到令人发指!尽管大家没日没夜加班加点,这个项目还是因为延期太长而被迫中止,团队原地解散,大家一起走人。
X:确实惨,我也很悲催啊!公司投入数亿在生产制造系统上线了XXX内存数据库。该数据库号称与业务深度绑定,集交易分析于一体,能极大提升效率。测评时效果拉满,上线后BUG横行,严重影响生产效率,苦不堪言!最让人无法接受的是,该数据库支撑复杂分析的能力不足,最终不得不继续采购分析型数据库......

2

    劣币驱良币,测评现形记

L:看来大家都很惨,知道为什么在测评中发现不了问题吗?
众人纷纷摇头。
L:其中有一个很重要的原因是,此类厂商在测评中采取了一些“特殊手段”。但是这些手段在真正上生产时是绝对不可用的,否则就会出现诸如数据不准、数据丢失等大问题。厂商心知肚明,也就是说,这些手段仅仅是为了让测试效果拉满,以便击败竞争对手。
W:太坑了!是什么手段?
L:手段的核心就三个字——少做事。数据库的活干少了,性能也就上去了、缺陷也不易被发现了、也更好忽悠了....
W:如何少做事。
L:其实数据库的好坏不仅体现在性能上,还包括安全、稳定、功能、易用、生态、成本、服务等等,要整体看待。而他们在测评中往往采用割裂方式操作,如关闭安全机制,少干了安全的活后,于是不良厂商就有可能在性能PK中挤走正经厂商。

Q:哦,这就能在性能PK中胜出了啊。

L:你们想想,丢盔弃甲能跑得不快吗?
Image
引发众人一阵大笑。

3

    日志强关闭,副本无踪迹

L:对于数据库测评而言,最直接的就是性能,无论是查询还是更新语句,相同SQL在不同数据库上跑,谁快谁慢一目了然。那怎样才能更快?正经厂商是在优化器、执行器、存储引擎、事务及锁管理器等内核机制上下功夫,同时顾及安全稳定易用......这里不展开了,总之极为不易。
我们知道数据库无论插入、删除还是修改都需要写日志,以便在出现异常时能恢复数据,只要有做事就有开销,不过这点开销值得,也是不可避免的。不过,不良厂商却在这里琢磨出可操作空间了。
他们想,“如果表的写日志功能可以关闭,没了记录日志的额外开销,是不是就更快了?”于是立即行动,果然写入提速立竿见影,方法类似在建表时加unlogged关键字,更为狡诈的是他们等测试结果一出来,立即采用alter  logging方式把表属性又改回来,神不知鬼不觉的,把内行都蒙在鼓里。
W:这也太离谱了吧!
Q:最后还会改回来,够绝了!
L:还有更绝的,直接把整个数据库设置为非归档模式,彻底放弃保护机制!
老明:无语!
L:大家知道数据库分为集中式和分布式两种。如果是分布式数据库,则一般都有副本机制,这样让异常时恢复数据的效率大幅提升,这也是分布式数据库架构的优势之一,结果这里又被不良厂商发现可操作空间了。
他们想“如果把副本机制一关,没了写副本的额外开销,是不是就更快了?“ 想到这,立即行动,于是数据写入再次提速!

Image

W:又关日志,又关副本,这么一叠加,不快都难啊,真是开眼界了。

4

   场景忙切割,数据假入库

L:让你继续开开眼,他们还有更多套路加速哦,比如把场景进行切割,又大幅提升数据写入性能,吊打一众正经厂商。
W:场景切割,啥意思?
L:这里说的场景特指数据库查询、写入等不同的操作。大家都知道索引可以提升查询性能的,却会拖累更新的性能。在这里,不良厂商又找到发挥空间了。
他们想,“如果把索引都删了,没了更新索引的额外开销,更新不就更快了?” 想到这,说干就干,于是数据写入进一步提速!
Q:那不对啊,如果要测试查询性能呢?
L:写入测试完毕后再把索引建回来啊,测试查询时不就OK了,神不知鬼不觉的,把内行都蒙在鼓里。
W:太没底线了吧!
L:还有更没底线的,不良厂商直接在数据库内部写上代码,检测到插入语句时并不立即真正插入,而是稍等片刻后直接返回入库成功了。
W:啊,那稍等片刻是多长时间。
L:自己定啊,想多长就多长,达到碾压正经厂商的目的即可。

Image众人听得瞪大眼睛,一时哑口无言。

5

    随意改参数,缓存掩耳目

L:看来这个终极大招让大家惊吓过度了,都不说话了,那咱们不提更新了,说说查询的测评吧。大家知道提升查询性能最直接的思路就是尽量减少访问路径,如建索引、表压缩、建分区等,不过在遇到复杂多表关联嵌套时,仅这些手段就不够了,还要依赖优化器的能力,极具挑战。遇到实力不济怎么办?嗯,没问题,不良厂商总能找到可操作空间。
他们想,”俺可以调参啊,如果把数据块data block调大了,访问的数据块就减少了,等同于访问路径短了,不就快了嘛。不过这可能会带来热点块和锁的后遗症咋办?嗯,不管了,反正只是测试,效果拉满最重要。对了,Data buffer也可以设大一些,物理读减少就能继续提速,不过这样操作系统的内存太少有可能带内存交换影响稳定性咋办?嗯,不管了,反正不是真正生产环境,干翻对手最重要。” 想到这里,他们撸起袖子......
W: L兄,您描述的这不良厂商也太损了,您不说我还真不知情啊!
L:还有更可损的。为了让测试报告效果继续拉满,不良厂商有时会考虑各种缓存结果集的手段,看清楚这是结果集而不是数据。
Q:结果是取决于数据的,而数据是变化的,这缓存结果集不是随时会变吗?
L:是的,不可否认缓存结果集有用武之地,比如在数据极少更新的场景里。不过如果为了测试效果拉满而滥用缓存结果集,就是不折不扣的作弊。

Image

W:下次再遇到数据库选型测评,我可要擦亮眼睛了。

6

    生态不完善,安全靠边站

L:是的,希望我说的这些能让大家擦亮眼睛,识破厂商使用”特殊手段“。不过大家选型的失败经历不仅仅是因为厂商使坏,还有第二个重要的原因。

W:什么原因?

L:就是对数据库的整体认识不足,导致选型时的测评角度不够全面。大家注意到没,前面列举的所有的“特殊手段”都是针对性能,但是从各位描述的遭遇来看,生产中遇到的麻烦可不只是性能问题。只不过由于各家数据库的功能看起来都差不多,似乎都能满足业务需求,于是很自然的演化成谁快谁牛,性能成了分胜负的有效手段。

不过如果只盯着性能看,那就会忽略安全、稳定、功能、易用、生态、成本、服务等等,就大概率会出问题的,我给大家随便说些大家比较容易忽略的点吧,首先是生态。

Q:生态?我确实从未考虑过这一点。

L:数据库不能只是单打独斗,需要与芯片、服务器等硬件形成紧密配合,尤其是在国产化浪潮下,与国产CPU及服务器的适配至关重要;需要要为上层应用提供标准统一的接口协议,让BI报表、门户网站、移动App等都能灵活调用数据资源;需要能对接完善的运维监控平台,能实时采集数据库的各项健康指标,并通过可视化面板呈现,让DBA团队洞察其运行状况;需要周边工具链如备份、容灾、审计、迁移等,则为数据库保驾护航;需要包括权威的认证培训体系,能培养出高水平的DBA人才;需要活跃的社区,让大家交流碰撞出创新的火花.....这里就不一一列举了,总之数据库产品是离不开生态的,这也是我们用户选型时需要重点考虑的。

W:有道理,还有什么容易忽略的吗?

L:安全也是需要重点考虑的,大家也听到我描述的关于不良厂商在测评时关闭安全功能换取性能提升的丑事。正是因为安全这块不容易评估,所以很容易让我们忽略,安全测评往往没有严格的标准,大家也一般草草验证了事,甚至根本就不测。

Q:确实如此!

7

    服务不尽心,绑架拼全力

L:除了技术指标,服务也是选型时大家本该重点考虑,却容易忽略的事。

W:确实,我们用户往往理所当然地认为厂商能给予大力支持,其实未必。

L:服务质量差的厂商,往往在售前承诺得天花乱坠,但一旦签了合同,服务就变得敷衍了事。比如,你打电话给他们说各种问题,他们却让你各种进程重启。有甚者会推诿责任,导致问题久拖不决,严重影响业务。

老明:这不就是在说我嘛,厂家一直拖到数据库宕机为止。

L:还有些厂商,前期服务很好,后期为了绑架客户,故意制造技术壁垒,让客户不得不采购他们的专用硬件,价格昂贵不说,如果要更换数据库,这些采购的硬件就会变成一堆废铁了。

X:这种绑架行为太可恶了,和我公司规模相当的同行的同一业务场景的投入为数千万,而我们则是其十倍有余,这一对比真的是太难堪了!

8

    考虑要仔细,厂商勿盲信

L:总之,选型时要全面考虑,不仅要看性能,还要看安全、稳定、功能、易用、生态、成本和服务等各方面。

W:L兄,说了这么多,有没有什么具体的建议呢?

L:首先,要多听取同行的经验和建议,不要轻信厂商的宣传。比如,多问问那些过来人,听听他们的惨痛教训。其次,要进行全面、真实的测试,避免遗漏和只看表面数据。对于测评时厂商使的那些套路,咱们得能识破。要选择有良好口碑和长期服务记录的厂商,确保后续支持有保障......具体不展开了,后续我准备整一个数据库选型指南,把具体细节都写到里面如何,包括更细致的防骗手册。

Q:太好了!对了,防骗手册里不止你提到的那些测评套路吧。

L:当然了,太多了!我随便再抖一些劲爆的料,比如有的无良厂商居然准备了两套版本的数据库,一套上生产,而另一套不上生产仅用于选型测评。同时成立了专门的测评小分队,拿着PK专用版游走于全国各地客户现场。

W:天啦,三观尽毁啊!

L:是的,看到这一集的正经厂商们,为你们点赞!可千万别学坏哦,只有走正道才有未来!希望你们的数据库产品越来越完善,越来越先进!

Image

未完待续......

正所谓

测评现形记(数据库)
选型笑哈哈,未来惨巴巴
劣币驱良币,测评现形记
日志强关闭,副本无踪迹
场景忙割裂,数据假入库
随意改参数,缓存掩耳目
生态未完善,安全一边站
服务不尽心,绑架拼全力
考虑要仔细,厂商勿盲信

预告:《超融合数据库》即将出版,关注梁老师公众号,敬请期待。

Image