rob*_*che 5 postgresql performance azure azure-postgres-database
我在带有 docker 的虚拟机上使用 postgresql(和 Postgis)已经很多年了,我开始习惯于调整服务器参数和优化请求,而且我从来没有遇到过使用 Azure Postgresql 时遇到的那种问题。
问题如下:写入速度很慢(通常与普通 PG 相比约为 X2),但真空和索引非常慢。有一次,我们需要在 5 亿行上创建 PostGIS 索引,在另一台服务器上大约需要 30 分钟,在 Azure 实例上则需要一天以上的时间。
我尝试修改服务器参数,检查请求,最后回到基础检查服务器的性能,但我仍然不明白是否有我遗漏的东西或者Azure Postgres是否有大问题。
这是我所做的比较:
docker run --rm -e POSTGRES_PASSWORD=pass -d postgres:11.14-stretch
pgbench -i -s 50
)这是我能找到的最简单且可重现的。确切的结果可能略有不同,但其想法是相同的:
读取性能似乎相当不错,所以这实际上是一个写入问题,对我们来说更成问题的是索引创建,我看不出有什么可以解释这一点。
这对我们来说是一个大问题,我怀疑这种差异可以通过参数的一些调整来改变,除非有特定于 Azure 的东西?
我错过了什么大事吗?只有我有这样的表现吗?还是系统本身的限制?(我读到磁盘大小会影响 IOPS,但查看图表,这里似乎没有问题,我们尝试添加磁盘,但它没有太大变化)也许灵活的服务器没有这个问题?
编辑:
当然,我们测试了使用 3 种不同类型的服务(4 种可能的服务)创建新的 Azure postgres 服务,这些服务是我们刚刚创建的,没有修改。我做了和以前一样的测试,每个服务2次,取平均值。我添加了参考(称为上面的 PG TEST)和我们在生产中的参考(称为上面的 PG AZURE)。和之前的结果有一些变化,灵活服务器似乎好一点,但问题还是一样:
小智 1
PostgreSQL Azure 上的磁盘性能与分配的磁盘大小相关。每 GB 最多可获得 3 IOPS,对于您的大小来说是 128G x 3 = 384 IOPS。您的 SSD 可能具有 5,000 IOPS 和低延迟。
为了匹配,您需要分配约 1.7TB 的磁盘。试一试。