获取第100行时遇到延迟

时间:2012-12-17 10:36:23

标签: mongodb mongodb-ruby

我从集合中获取所有行并在第100行遇到延迟。我知道find方法返回游标而不是前面的所有数据,在某一点上需要获取更多数据。但第100行是唯一的延迟。

Checking images 99
Checking image 100
*pause*
Checking image 101

然后没有可见的延迟达到100 000张图像。

二手ruby脚本:

require 'mongo'

time_start = Time.now

mongo = Mongo::MongoClient.new("localhost", 27017)

db = mongo["pics"]

images = db["images"]
albums = db["albums"]

orphans = []

images.find().each do |row|
    puts "Checking image #{row['_id']}"
end

# puts orphans
time_end = Time.now
puts "Total time taken: #{time_end - time_start}"

Used images collection (json)

mongoimport --db pics --collection images file_name

问题是:

  • 是否有一些数据与初始光标一起出现?
  • 为什么第100排唯一的延误?也许我错过了一些东西,但我当时甚至没有看到IO读取

谢谢

1 个答案:

答案 0 :(得分:4)

MongoDB游标的默认“批量大小”是100个对象。意味着MongoDB在获取下一批之前获取100个对象...这就是您看到延迟的原因。所有驱动程序都应在游标对象上提供方法“batch_size()”或类似方法,以设置和检索批量大小。