我正在为GAE上的Django应用程序迁移到google云扳手的过程中,发现响应时间很长,按2-3秒的顺序计算和索引查询,在扳手查询编辑器中运行时需要10 ms。
这也只是第一个需要花费这么长时间的查询,任何后续的查询都需要大约100 ms。
在对python客户端运行最低限度查询时,我遇到了同样的问题,我附加了下面的代码:
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()对应的函数上运行的行分析器的一些输出:
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。我们非常感谢您提供的任何帮助或解决问题的想法。
发布于 2021-12-02 12:38:03
我认为你所看到的可以归结为以下几点:
date_id是表主键中唯一的列)。客户端最好在Google实例上运行,该实例与您的云扳手实例位于同一个物理区域(例如,这两个实例都可能在区域us-central1中,而不是在us-east1中,另一个在us-east1中)如果我对您的理解是正确的,那么您提供的数字是基于本地从您自己的开发机器执行的。我认为,对于第二个和进一步的查询,您所看到的执行时间差(与GCP控制台相比)很大程度上是由于本地机器和云扳手之间的网络延迟造成的。
如果您从GAE实例或与云扳手数据库位于同一物理区域的简单的Google虚拟机执行测试查询,您会很感兴趣地看到是否得到了更好的数字。
https://stackoverflow.com/questions/70198837
复制相似问题