测达达服务分都提供哪些服务?

Erlang内置了一个key-value内存数据库叫ets除了支持通常key-value存储支持的按key查询数据以外,还支持两种更灵活的查询方式分别是match和select。

灵活是要付出性能代价的文档上有明确说明match和select是要遍曆表中所有数据的,查询算法就不再是按key读取的n(1)复杂度了但是如果在match和select的条件中明确指定了key的时候,ets的内部实现是否会对这样的查询优囮成n(1)复杂度呢

我做了一个对比实验,插入一批数据然后分别按key和按普通字段match和select查询数据,下面是实验结果的shell输出:


  

实验输出的数值是查询时间以微秒为单位。实验分别试了两次1w玩家每个玩家10条数据的查询(共10w条数据),以及10w玩家每个玩家10条数据的查询(共100w条数据)。

  1. 有用到key的select和match一样是n(1)复杂度查询时间几乎不受数据条数影响
  2. 没有用到key的select和match查询,耗时严重受数据条数影响
 

我要回帖

更多关于 达达服务分 的文章

 

随机推荐