2

我聘请了一名程序员将我的网站(最初使用 Django 和 MySQL 实现)移植到 Google App Engine。原始 Web 应用程序的数据库大小约为 2 GB,最大的表有 500 万行。据我了解,为了移植这些内容,程序员将数据库序列化为 JSON,然后将其上传到 Google 应用引擎。
到目前为止,按照 GAE 的收费,他的上传使用了 100 小时的 CPU 时间,但看起来只有大约 50 或 100 MB 已加载到数据库中。对于如此少量的数据,这是合理的 CPU 时间吗?MySQL 可以在几分钟内加载这么多数据,所以我不明白为什么 GAE 会慢 1000 倍。他是在做一些低效的事情吗?

4

3 回答 3

2

这似乎很高,并且很可能他们正在让服务器做很多可以在客户端完成的工作(解码 JSON、编码和存储实体)。SDK 已经提供了一个bulkloader,如果由于某种原因不适合,bulkloader 所基于的remote_api 提供了比滚动您自己的更有效的选项。

于 2011-07-15T01:01:01.617 回答
1

我已经批量加载了 1 GB 的数据,但是我编写了自己的批量加载模块(基于他们定义的接口),并且花费了 25 小时的 CPU 时间。

有关更多信息,您可以查看App Engine Bulk Loader Performance

于 2011-07-14T20:42:08.420 回答
0

这在很大程度上取决于他如何序列化数据。我强烈怀疑他在做一些低效的事情,因为是的,这对于这么多的数据来说是可笑的。您的低效率可能在于每个查询的传输时间和开始/停止时间。如果他对每一行进行序列化并一次将其发布给处理程序,那么我完全可以理解它既要花很长时间又要消耗大量的 cpu 时间。

于 2011-07-14T16:53:11.833 回答