mirror of
https://github.com/neondatabase/neon.git
synced 2026-01-07 13:32:57 +00:00
## Problem - We run the large tenant oltp workload with a fixed size (larger than existing customers' workloads). Our customer's workloads are continuously growing and our testing should stay ahead of the customers' production workloads. - we want to touch all tables in the tenant's database (updates) so that we simulate a continuous change in layer files like in a real production workload - our current oltp benchmark uses a mixture of read and write transactions, however we also want a separate test run with read-only transactions only ## Summary of changes - modify the existing workload to have a separate run with pgbench custom scripts that are read-only - create a new workload that - grows all large tables in each run (for the reuse branch in the large oltp tenant's project) - updates a percentage of rows in all large tables in each run (to enforce table bloat and auto-vacuum runs and layer rebuild in pageservers Each run of the new workflow increases the logical database size about 16 GB. We start with 6 runs per day which will give us about 96-100 GB growth per day. --------- Co-authored-by: Alexander Lakhin <alexander.lakhin@neon.tech>
26 lines
977 B
SQL
26 lines
977 B
SQL
-- add 100000 rows or approx. 18 MB to the vertices table
|
|
-- takes about 90 seconds
|
|
INSERT INTO workflows.vertices(
|
|
uuid,
|
|
created_at,
|
|
condition_block_id,
|
|
operator,
|
|
has_been_visited,
|
|
reference_id,
|
|
workflow_id,
|
|
meta_data,
|
|
-- id,
|
|
action_block_id
|
|
)
|
|
SELECT
|
|
uuid_generate_v4() AS uuid,
|
|
now() AS created_at,
|
|
CASE WHEN (gs % 2 = 0) THEN gs % 10 ELSE NULL END AS condition_block_id, -- Every alternate row has a condition_block_id
|
|
'operator_' || (gs % 10) AS operator, -- Cyclical operator values (e.g., operator_0, operator_1)
|
|
false AS has_been_visited,
|
|
'ref_' || gs AS reference_id, -- Unique reference_id for each row
|
|
(gs % 1000) + 1 AS workflow_id, -- Random workflow_id values between 1 and 1000
|
|
'{}'::jsonb AS meta_data, -- Empty JSON metadata
|
|
-- gs AS id, -- default from sequence to get unique ID
|
|
CASE WHEN (gs % 2 = 1) THEN gs ELSE NULL END AS action_block_id -- Complementary to condition_block_id
|
|
FROM generate_series(1, 100000) AS gs; |