mirror of https://github.com/citusdata/citus.git
Before this commit, we've recorded the relation accesses in 3 different places - FindPlacementListConnection -- applies all executor in tx block - StartPlacementExecutionOnSession() -- adaptive executor only - StartPlacementListConnection() -- router/real-time only This is different than Citus 8.2, and could lead to query execution times increase considerably on multi-shard commands in transaction block that are on partitioned tables. Benchmarks: ``` 1+8 c5.4xlarge cluster Empty distributed partitioned table with 365 partitions: https://gist.github.com/onderkalaci/1edace4ed6bd6f061c8a15594865bb51#file-partitions_365-sql ./pgbench -f /tmp/multi_shard.sql -c10 -j10 -P 1 -T 120 postgres://citus:w3r6KLJpv3mxe9E-NIUeJw@c.fy5fkjcv45vcepaogqcaskmmkee.db.citusdata.com:5432/citus?sslmode=require cat /tmp/multi_shard.sql BEGIN; DELETE FROM collections_list; DELETE FROM collections_list; DELETE FROM collections_list; COMMIT; cat /tmp/single_shard.sql BEGIN; DELETE FROM collections_list WHERE key = :aid; DELETE FROM collections_list WHERE key = :aid; DELETE FROM collections_list WHERE key = :aid; COMMIT; cat /tmp/mix.sql BEGIN; DELETE FROM collections_list WHERE key = :aid; DELETE FROM collections_list WHERE key = :aid; DELETE FROM collections_list WHERE key = :aid; DELETE FROM collections_list; DELETE FROM collections_list; DELETE FROM collections_list; COMMIT; ``` The table shows `latency average` of pgbench runs explained above, so we have a pretty solid improvement even over 8.2.2. | Test | Citus 8.2.2 | Citus 8.3.1 | Citus 8.3.2 (this branch) | Citus 8.3.1 (FKEYs disabled via GUC) | | ------------- | ------------- | ------------- |------------- | ------------- | |multi_shard | 2370.083 ms |3605.040 ms |1324.094 ms |1247.255 ms | | single_shard | 85.338 ms |120.934 ms |73.216 ms | 78.765 ms | | mix | 2434.459 ms | 3727.080 ms |1306.456 ms | 1280.326 ms | |
||
---|---|---|
.. | ||
backend | ||
include | ||
test/regress |