我无法理解为什么Cloud SQL比我的localhost MySQL服务器慢一点。
我可以接受从配置到配置会发生一些变化,但是......
在localhost中,只需要240毫秒来完成一个查询,该查询只返回表中包含其关系的所有记录(只有90条记录),而在Cloud SQL中它几乎需要 30秒。它就像28kb的数据一样。
我在Laravel 5.5中使用PHP。根据所有GCP文档,我有所需的所有配置。
我认为这不是配额问题。
使用第二代Cloud SQL并通过自动扩展从App Engine flex环境连接。
我确实将Cloud SQL实例的服务器规格改进为1.7 GB RAM。我认为这不是与服务器性能相关的问题......
感谢。
这令人困惑。
我正在调试正在执行的原始SQL字符串,当我使用DD进行调试时,我正在阻止JSON响应,它只需要1秒钟。由于某种原因我无法理解的好多了。
这是一个更快结束的
DB::enableQueryLog();
Contact::with([
'rooms',
'bathrooms',
'parkingLots',
'generalInterests',
'locationInterests',
'strongInterests',
'phonePrefix',
'source',
'contactType'
])->get();
dd(DB::getQueryLog());
return new JsonResponse([
'query' => 'all',
'results' => Contact::with([
'rooms',
'bathrooms',
'parkingLots',
'generalInterests',
'locationInterests',
'strongInterests',
'phonePrefix',
'source',
'contactType'
])->get()
], 200);
这是一个只需要相同的时间
DB::enableQueryLog();
Contact::with([
'rooms',
'bathrooms',
'parkingLots',
'generalInterests',
'locationInterests',
'strongInterests',
'phonePrefix',
'source',
'contactType'
])->get();
Log::debug(print_r(DB::getQueryLog(), true));
return new JsonResponse([
'query' => 'all',
'results' => Contact::with([
'rooms',
'bathrooms',
'parkingLots',
'generalInterests',
'locationInterests',
'strongInterests',
'phonePrefix',
'source',
'contactType'
])->get()
], 200);
正如您所看到的,唯一的区别是回归与否。
事实证明,当返回JSON响应时,Eloquent模型处理模型的appender,它们向另一个API REST发出一些请求,并为结果集中的每个模型执行此操作。
在localhost中,相同的操作在发出请求之前只返回null。所以,这是我的问题。
与MySQL,GCP,Laravel或PHP无关。只是我自己的愚蠢。
非常感谢您花时间阅读这个荒谬的问题。我最诚挚的道歉。
答案 0 :(得分:0)
您是否检查过互联网连接的吞吐量?这是您的2个环境之间的主要区别。确定原因的其他方法包括:直接从SQL运行查询,检查日志(尤其是SQL DB日志),从其他位置尝试相同的查询。
根据我的经验,直接从SQL运行查询可能会给您最好的帮助。只需一个基本SELECT * from my_table;
,看看需要多长时间。我在Google网站上发现了此document,它可能会帮助您调查和调整提示。它提到了AppEngine限制,但是有了这么多数据,我认为你没有遇到任何这些限制。