Arangodb 写入速度差

Arangodb 写入速度差,arangodb,Arangodb,我正在arangoDB上做一些测试,在使用web UI时,我想测试500000个文档的插入速度 我在web UI中使用了这个查询,代码是 在我的机器上大约需要9秒钟。但是,当我使用Python Arango驱动程序时,每1000次插入大约需要1.9秒 是否有人对python驱动程序足够熟悉,可以详细说明原因?您正在做不同的事情。用户界面中的查询或多或少只向服务器发出一个http请求。在循环中运行insert时,对每个项目都执行http请求。如果您不想使用AQL,那么您仍然可以在一个请求中发送多个

我正在arangoDB上做一些测试,在使用web UI时,我想测试500000个文档的插入速度 我在web UI中使用了这个查询,代码是

在我的机器上大约需要9秒钟。但是,当我使用Python Arango驱动程序时,每1000次插入大约需要1.9秒


是否有人对python驱动程序足够熟悉,可以详细说明原因?

您正在做不同的事情。用户界面中的查询或多或少只向服务器发出一个http请求。在循环中运行insert时,对每个项目都执行http请求。如果您不想使用AQL,那么您仍然可以在一个请求中发送多个文档。要了解更多信息,请查看以下代码:

( () => {
    const internal = require("internal")
    const db = internal.db
    const time = internal.time
    const print = internal.print
    let start_time = undefined
    let col = undefined

    const col_name = "users"

    // one http request
    print("aql insert")
    db._drop(col_name)
    col = db._create(col_name)
    start_time = time()
    db._query(`
        FOR x IN 1..50
          FOR i IN 1..1000 INSERT
            {'name': 'hello' ,'age': i }
          INTO ${col_name}
    `)
    print(time() - start_time)


    // one request for every document
    print("rest insert")
    db._drop(col_name)
    col = db._create(col_name)
    start_time = time()
    for(var x = 1; x <= 50; x++) {
        for (var i = 1; i <= 1000; i++) {
            col.insert({ name: 'hello', age: i})
        }
    }
    print(time() - start_time)


    // 50 http requests
    print("rest batched insert")
    db._drop(col_name)
    col = db._create(col_name)
    start_time = time()
    let batch = []
    for (var i = 1; i <= 1000; i++) {
        batch.push({ name: 'hello', age: i})
    }

    for (var x = 1; x <= 50; x++) {
        col.insert(batch)
    }
    print(time() - start_time)

})()
( () => {
    const internal = require("internal")
    const db = internal.db
    const time = internal.time
    const print = internal.print
    let start_time = undefined
    let col = undefined

    const col_name = "users"

    // one http request
    print("aql insert")
    db._drop(col_name)
    col = db._create(col_name)
    start_time = time()
    db._query(`
        FOR x IN 1..50
          FOR i IN 1..1000 INSERT
            {'name': 'hello' ,'age': i }
          INTO ${col_name}
    `)
    print(time() - start_time)


    // one request for every document
    print("rest insert")
    db._drop(col_name)
    col = db._create(col_name)
    start_time = time()
    for(var x = 1; x <= 50; x++) {
        for (var i = 1; i <= 1000; i++) {
            col.insert({ name: 'hello', age: i})
        }
    }
    print(time() - start_time)


    // 50 http requests
    print("rest batched insert")
    db._drop(col_name)
    col = db._create(col_name)
    start_time = time()
    let batch = []
    for (var i = 1; i <= 1000; i++) {
        batch.push({ name: 'hello', age: i})
    }

    for (var x = 1; x <= 50; x++) {
        col.insert(batch)
    }
    print(time() - start_time)

})()
127.0.0.1:8529@_system> require("internal").load("/home/ulf/insert-example.js")
aql insert
3.2375659942626953
rest insert
13.451776504516602
rest batched insert
3.7614316940307617