繁体   English   中英

与 Mongodb 相比,AWS DocumentDb 查询运行缓慢

[英]AWS DocumentDb queries running slow compared to Mongodb

我有一个包含大约 1 000 000 个文档的 mongo 集合。 该集合在“product_type”字段上有一个索引(以及其他索引)。 product_type 'foo' 大约有 70 000 件商品。 当我在本地开发机器上执行查询(见下文)时,查询大约需要 1 秒。 当我在 AWS DocumentDb 上执行完全相同的查询(具有相同大小的集合和索引,以及类似的计算能力)时,查询可能需要 60 秒到 1500 秒(取决于指定的 product_type)。 我正在通过 python flask 应用程序(在同一地理区域的 EC2 实例上运行)执行查询。 该查询还执行投影以仅返回文档 ID 和一个其他属性。 似乎我在 DocumentDb 上的查询速度要慢得多。 附加信息:服务器实例位于堡垒服务器后面,flask 应用程序在 Apache 服务器(安装在 EC2 实例上)上运行。 一切都在 VPC 中运行。 看起来查询在所有方面都比较慢(不仅是这个查询)。 有什么可以给我一些关于可能是瓶颈原因的建议吗?

查询:

    query = {
        'properties.property1': {'$ne': None},
        'properties.property2': {'$ne': None},
        'properties.property3': {'$ne': None},
        'properties.property4': {'$ne': None},
        'properties.property5': {'$ne': None},
        'product_ids': {'$ne': None},
        'properties.property6': {'$ne': None},
        'properties.property7': {'$ne': None},
        'properties.property8': {'$ne': None},
        'properties.property9': {'$ne': None},
        'properties.property10': {'$ne': None},
        'properties.property11': {'$ne': None},
        'properties.property12': {'$ne': None},
        'properties.property13': {'$ne': None},
        'properties.property14': {'$ne': None},
        'product_type': {'$regex': '^foo$', '$options': 'i'},
        'date': {'$ne': None},
        'status': 'ENABLED',
        'properties': {'$ne': None},
        'properties.property15': {'$ne': True}
    }

我尝试加快查询速度的事情(没有太大成功):删除正则表达式并将 product_type 直接设置为“foo”使用“skip”和“limit”分批执行查询尝试使用不同的索引(“product_type”)是迄今为止我能找到的最好的。 尝试了不同的查询变体(从查询中删除不同的项目)

Amazon DocumentDB 存在一些功能差异,其中之一是对于$regex ,您必须明确提示索引才能使用它。 另外,我看到您正在使用$ne ,目前没有索引支持,您可能必须将查询修改为相等过滤器,或者可能改用比较运算符。 正如 MongoDB 文档中所述:

不等式运算符 $ne 不是很有选择性,因为它通常匹配索引的很大一部分。 因此,在许多情况下,带有索引的 $ne 查询可能不会比必须扫描集合中所有文档的 $ne 查询执行得更好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM