Vij*_*jay 6 performance execution-time nosql sql-execution-plan couchbase
如何在Couchbase中计算查询时间和查询执行计划.是否有任何实用程序,如Oracle解释计划和Couchbase数据库中的tkprof?
编辑:
我试图看看哪个数据库最适合我的数据.所以我想尝试使用mysql,mongodb,couchbase.我尝试了三个不同数量的条目10k,20k,40k条目.
使用mysql,我可以使用"set profiling = 1"查看查询时间.使用此设置我在三种情况下运行查询1)没有索引主键,2)索引主键3)第二次运行相同的查询(以查看查询缓存的效果)
同样,我使用mongodb运行相同的测试,并以表格格式汇总我的结果.我想用couchbase运行相同的测试,看看它的性能如何.我试图搜索网络,但找不到任何我可以遵循以获得类似结果的内容.
下面是我的表(所有时间都是毫秒).带有大括号()的第二行显示第二次运行的查询时间.
Records Count Mysql MongoDB CouchBase
___________________ _______________ ___________
Without | With Without | With With Index
Index | Index Index | Index
10K 62.27325 | 8.537 3311 | 33
(33.3135) | (3.27825) (7) | (0)
20K 108.4075 | 23.238 132 | 39
(80.90525)| (4.576) (17) | (0)
40K 155.074 | 26.26725 48 | 10
(110.42) | (10.037) (42) | (0)
对于couchbase,我想知道使用其密钥检索文档时的性能(类似于memcahed的功能).查询时间也使用其视图.
sca*_*ved 11
您必须了解couchbase的工作方式与Oracle之类的RDBMS不同.Couchbase提供两种检索数据的方法:
1)密钥查找,您知道要检索的文档的密钥.
2)定义Map Reduce名为Views的作业,它创建索引,允许您在除键之外的属性上查询数据.
Couchbase文档总是一致的,但视图不是并且最终是一致的(尽管您有能力更改它).
正如couchbase文档所述
当文档数据持久保存到磁盘时,视图会更新.创建或更新文档与在视图中更新的文档之间存在延迟.
所以查询时间真的取决于各种因素,视图数据可以陈旧吗?从索引发出的数据有多大,当前的工作负载和数据库大小是多少?Couchbase提供以下3个标志,用于处理视图以及如何访问数据.False意味着必须在返回结果之前更新索引,因此它可能很慢.
请查看官方文档以获取更深入的答案http://docs.couchbase.com/couchbase-manual-2.2/#views-and-indexes
您还可以查看有关缓存视图的这篇有趣文章http://blog.couchbase.com/caching-queries-couchbase-high-performance
目前正在开发的Couchbase是N1QL,实际上是沙发基础版的SQL,这将有EXPLAIN语句可用,这将不会发布到2014年底我相信.
一篇介绍N1QL的博客文章 http://blog.couchbase.com/n1ql-it-makes-cents
N1QL的备忘单 http://www.couchbase.com/communities/sites/default/files/Couchbase-N1QL-CheatSheet.pdf
如果您想使用N1QL http://www.couchbase.com/communities/n1ql,可以下载开发预览版
另外,请查看cb stats工具http://docs.couchbase.com/couchbase-manual-2.2/#cbstats-tool,它提供了持久率,更新,关键未命中等的高级概述.