tarantool / go-tarantool

Tarantool 1.10+ client for Go language
https://pkg.go.dev/github.com/tarantool/go-tarantool/v2
BSD 2-Clause "Simplified" License
180 stars 58 forks source link

What is about pipelining? #329

Open Eugene-Usachev opened 1 year ago

Eugene-Usachev commented 1 year ago

I benchmarked Tarantool and Redis. Tarantool overtakes Redis only before using pipelining. With pipelining, Redis becomes more than 3 times faster than Tarantool. Is it possible to use pipelining with Tarantool?

R-omk commented 1 year ago

https://github.com/tarantool/go-tarantool/issues/327#issuecomment-1674863336

Eugene-Usachev commented 1 year ago

R-omk, I know it. But I need benchmark DBMS with network, because I will use DBMS with it. To squeeze more performance out of the DBMS, I need to reduce the load on the network, the ideal solution is pipelining. I read the connector documentation and couldn't find any mention of pipelining, which makes me opt for Redis.

R-omk commented 1 year ago

The tarantool is not the redis, it is much much faster, if the queries are independent they need to be executed in parallel, if they are dependent then write stored procedures on the server side and call func from client.

R-omk commented 1 year ago

what is called "pipeline" in redis works automatically out of the box in this driver . this is a multiplexing of any requests, you never have to wait for the result of the previous one in order to send the next one. Please look at benchmarks test.

oleg-jukovec commented 1 year ago

@R-omk thank you. @Eugene-Usachev you should execute requests in parallel for the best performance. The connector supports concurrent request execution by itself, see opts.Concurrency .

I think it's a good idea to write a parallel request execution example that we can refer to.

Eugene-Usachev commented 1 year ago

@R-omk thank you for your time. I close the issue.

oleg-jukovec commented 1 year ago

I think it's a good idea to write a parallel request execution example that we can refer to.