可扩展性和并发优化的基本原则

Vertica 数据库在一组商用硬件上运行。对数据库运行的所有加载和查询均需占用 CPU、内存、磁盘 I/O 带宽、文件句柄等系统资源。给定查询的性能(运行时间)取决于为其分配的资源量。

在系统中同时运行多个查询时,这些查询会共享资源;因此,每个查询的运行时间可能比其单独运行时要长。在可扩展的高效系统中,如果某个查询占用计算机的所有资源且运行时间为 X,则运行两个此类查询可能会使每个查询的运行时间增加一倍。如果查询的运行时间超过 2X,则说明系统并非可线性扩展;如果查询的运行时间小于 2X,则说明单个查询在资源使用方面存在浪费情况。请注意,只要查询获得其运行所需的最少资源且受 CPU 周期限制,就会发生上述情况。相反,如果因系统瓶颈导致查询无法获得运行所需的足够特定资源,则说明系统已达到极限。在这种情况下,为了提高并发性,必须通过另外添加此资源来扩展系统。

实际上,Vertica 应在达到系统资源限制之前,通过提高并发性而在运行时间方面实现近乎线性的可扩展性。如果达到足够的并发性且未引发任何瓶颈,便可认为系统大小非常适合工作负载。