Viz*_*lni 0 python google-app-engine datastore
目前我正在研究应该被很多人使用的项目.我担心数据存储区读/写/小操作使用了太多资源.由于我是appengine的新手,有没有什么有效的方法可以缩小这些数字?我想过使用memcache,但这不是最安全的方式.使用以下方法搜索数据存储区实体也是一个好主意:
SELECT __key__ FROM table
Run Code Online (Sandbox Code Playgroud)
然后使用:
....#code
table.get_by_id(entity.id())
....#code
Run Code Online (Sandbox Code Playgroud)
?
非常感谢你.
对于经常读取和写入频率不太频繁的数据,请使用数据存储区前面的内存缓存.阅读时,首先检查数据是否在memcache中,如果没有,请从数据存储中读取,然后将其存储在memcache中以备将来读取.在您按键读取实体的简单情况下,您可以通过其内存缓存中的数据存储键存储每个实体.对于查询,您必须决定是否值得将结果集存储在memcache中,并由查询参数键入.
编写时,可以删除memcache值,并在下次读取时重新加载.你必须忍受删除失败的可能性.通常,您在memcache值上设置过期时间,因此旧值不会持续很长时间.请注意,对于每秒多次读取,即使很短的到期时间也会带来显着的性能提升.
您也可以使用memcache与其他耗时的数据操作(如URL提取)或计算值(例如复杂的模板文本)一样使用.在所有这些情况下,如果已逐出memcache值,则会回退到主要源,因此您可以获得读取性能而不会丢失对数据的访问权限.
其他性能提示:尽可能使用批量调用来减少RPC的数量.尽可能使用异步调用,这样当应用程序执行其他操作时,您的应用程序不会阻止服务调用.使用AppStats可视化您的服务调用并查找异步调用可能有帮助的区域.
关于你的按键提问:一般来说,做一个只有键的查询,然后立即按键获取结果实体没有帮助,因为无论如何这都是一个完整的实体查询.但是如果你需要从查询结果中有选择地获取,或者如果在一个地方查询密钥并在另一个地方获取密钥是有意义的,那么这些都是可能的,并且你不会损失太多.我经常发现仅用于键的查询.另请参见投影查询,仅用于获取(索引)属性的子集.
| 归档时间: |
|
| 查看次数: |
870 次 |
| 最近记录: |