首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我看到谷歌云扳手的响应时间很慢?

为什么我看到谷歌云扳手的响应时间很慢?
EN

Stack Overflow用户
提问于 2021-12-02 11:44:54
回答 1查看 536关注 0票数 0

我正在为GAE上的Django应用程序迁移到google云扳手的过程中,发现响应时间很长,按2-3秒的顺序计算和索引查询,在扳手查询编辑器中运行时需要10 ms。

这也只是第一个需要花费这么长时间的查询,任何后续的查询都需要大约100 ms。

在对python客户端运行最低限度查询时,我遇到了同样的问题,我附加了下面的代码:

代码语言:javascript
复制
from google.cloud import spanner_v1
client = spanner_v1.Client()

i = client.instance("my-instance")
db = i.database("my-database")

start = time.time()
with db.snapshot() as snapshot:
    QUERY = (
        """
            SELECT
              *
            FROM
              dates
            WHERE 
              date_id = 4507
        """)
    result = snapshot.execute_sql(QUERY)

    for row in result:
        print(row)

end = time.time()
print((end-start)*1000)

在这种情况下需要1154毫秒。再次运行查询(而不重新初始化数据库对象)需要110 the。

Ill包括在与db.snapshot()对应的函数上运行的行分析器的一些输出:

代码语言:javascript
复制
Timer unit: 0.001 s

Total time: 1.05145 s
File: /Users/opt/anaconda3/envs/dev/lib/python3.8/site-packages/google/cloud/spanner_v1/database.py
Function: __enter__ at line 859

Line #      Hits         Time  Per Hit   % Time  Line Contents
==============================================================
   859                                               def __enter__(self):
   860                                                   """Begin ``with`` block."""
   861         1       1051.4   1051.4    100.0          session = self._session = self._database._pool.get()
   862         1          0.0      0.0      0.0          return Snapshot(session, **self._kw)

在Mac上运行这个python==3.8.0和google云扳手==3.11.1。我们非常感谢您提供的任何帮助或解决问题的想法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-02 12:38:03

我认为你所看到的可以归结为以下几点:

  1. 第一个查询将比其他查询慢,因为第一个查询必须等待创建由Python使用的会话池,并等待Cloud创建和返回至少一个会话。所有后续查询都将重用池中的会话,这就是为什么您看到第二个查询的值要低得多的原因。
  2. 第二个查询的总执行时间将取决于客户端与云扳手实例之间的物理距离和网络质量。我假设查询是基于主键选择一行(即date_id是表主键中唯一的列)。客户端最好在Google实例上运行,该实例与您的云扳手实例位于同一个物理区域(例如,这两个实例都可能在区域us-central1中,而不是在us-east1中,另一个在us-east1中)

如果我对您的理解是正确的,那么您提供的数字是基于本地从您自己的开发机器执行的。我认为,对于第二个和进一步的查询,您所看到的执行时间差(与GCP控制台相比)很大程度上是由于本地机器和云扳手之间的网络延迟造成的。

如果您从GAE实例或与云扳手数据库位于同一物理区域的简单的Google虚拟机执行测试查询,您会很感兴趣地看到是否得到了更好的数字。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70198837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档