今天我看到一位老师给我一份测试数据。
这是三个国产数据库。算是分布式的。其中有两个和我比较熟悉,但是这个数据看上去并不好。看上去第一个黄色的数据库数据是这里最好的了。但是即使如此,我相信大部分做数据库的人都知道。MySQL和PostgreSQL平时拿出的数据都比这些国产分布式数据库要好。那Oracle就更加不用说了。
练为战不为看
可能不懂数据库的领导看上去这些数据,每秒几千几万很厉害啊。其实刚才也说了,这对于数据库来说这根本不叫事。
那我说说看法,这些测试的数据,我基本不看。因为不是从实际出发。
大家看过电影电视剧之类提到过军事演习。里面经常会说一切以实战出发。什么是实战?就是模拟现实中遇到的问题。我国军队中一直有红军和蓝军。蓝军就是模拟外军的作战风格和战术,看看红军能不能打赢。每次演习就是一次磨刀任务,如果打赢了。那么将来可能也能打赢。如果打输了说明可能遇到这种打法会失败。要总结失败教训。这叫实战,模拟实际的,哪怕再恶劣的环境。而不是说对方一字排开在那里站着,让我们打,看看命中率多高。
压测数据脱离实际
以上表格的数据都是基于简单场景的、标准SQL的压测。而实际工作中几乎不可能是这样的。
大部分开发人员其实注重的是开发功能,至于索引不怎么关注。所以能用索引的场景太少了。真实的场景是什么?就是低效SQL。
如果总说这种极端理想压测,这就像物理考试做题,在光滑水平面。 然后那么这个物体可以运行到哪里?
而实际上生产环境,就没有所谓光滑水平面。意味着一到生产,发现何止不光滑,简直尼玛凹凸不平。别说可以运行多远了,连动几乎都没动。
当然可能有人会说应该去治理。没错。但是现状普遍没有这么主动治理的。都是被动治理,即出问题就治理。不出问题不治理。
用真实姿势压测
我一直觉得应该来常态化的测试,就是烂SQL测试,一切从实战出发。以无节操开发的写的那种SQL直接上(包括表结构不合理等)。看看哪家产品能活着。因为POC好看,而实际拉胯最终带来的效果是很恶劣的。