antonmks / Alenka

GPU database engine
Other
1.17k stars 120 forks source link

Benchmarking #111

Open archenroot opened 7 years ago

archenroot commented 7 years ago

Do you have some common set of bench-marking you were doing in the past?

NOTE: Have you done for example 10000 requests per second benchmark, or some very high load? Is even Alenka design good for such approach?

I am just compiling the JDBC driver, so will have mine soon. I found on gpgpu.org Alenka benchmark blog post, but the links are gone.

Regards,

Ladislav

antonmks commented 7 years ago

Alenka is more suitable for high throughput than for high request count. In a past I run some TPC-H benchmarks with good results, you can see the load scripts and queries here : https://github.com/antonmks/Alenka/blob/master/how_to_run_tpch.txt

archenroot commented 7 years ago

Thanks for note, it looks quite promising :-)

AlexeyAB commented 7 years ago

@archenroot

For highload projects - you can use batch processing, accumulate parameters of SQL-query in the table (for each type of SQL-statement), and launch each type of SQL-statement sequentially. Compared to the CPU: it increase performance, but also increase latency.

For example, you can accumulate :par1 in table user_parameters for each for u_userid and to use: OFI := SELECT o_orderkey AS o_orderkey, o_orderdate AS o_orderdate, u_userid AS u_userid FROM orders JOIN user_parameters ON o_orderdate = u_orderdate

Instead of many queries:

OFI := FILTER orders BY o_orderdate = :par1;    // for u_userid = 1
OFI := FILTER orders BY o_orderdate = :par1;    // for u_userid = 2
OFI := FILTER orders BY o_orderdate = :par1;    // for u_userid = 3
...

Usually Highload-servers have few prepared SQL-statements 10-20. Also note that, as in MyISAM, there is not transactions.