Created
January 16, 2020 08:21
-
-
Save bra-fsn/658a1eaecc6d358c74b47b8311ff0c69 to your computer and use it in GitHub Desktop.
crdb excessive IO CTE query plan
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
⚬ Root | |
⚬ Count | |
⚬ Insert | |
into = object_locations(store, id, disk, start, end, cksum) | |
strategy = inserter | |
⚬ Render | |
render = [column1, column2, unnest, unnest, unnest, CAST(_ AS BYTES)] | |
⚬ Project set | |
render = [unnest(@6), unnest(@7), unnest(@8)] | |
⚬ Hash-join | |
equality = (column2) = (id) | |
type = inner | |
⚬ Scan buffer node | |
label = buffer 1 (inputrows) | |
⚬ Scan buffer node | |
label = buffer 2 (inserted_objects) | |
⚬ Subquery | |
exec mode = all rows | |
id = @S1 | |
original sql = VALUES (_, _::BYTES, _, _, _, ARRAY[_, _], ARRAY[_, _], ARRAY[_, _]), (__more10__) | |
⚬ Buffer node | |
label = buffer 1 (inputrows) | |
⚬ Values | |
row 0, expr = [_, _, _, _, _, _, _, _] | |
row 1, expr = [_, _, _, _, _, _, _, _] | |
row 10, expr = [_, _, _, _, _, _, _, _] | |
row 2, expr = [_, _, _, _, _, _, _, _] | |
row 3, expr = [_, _, _, _, _, _, _, _] | |
row 4, expr = [_, _, _, _, _, _, _, _] | |
row 5, expr = [_, _, _, _, _, _, _, _] | |
row 6, expr = [_, _, _, _, _, _, _, _] | |
row 7, expr = [_, _, _, _, _, _, _, _] | |
row 8, expr = [_, _, _, _, _, _, _, _] | |
row 9, expr = [_, _, _, _, _, _, _, _] | |
size = 8 columns, 11 rows | |
⚬ Subquery | |
exec mode = all rows | |
id = @S2 | |
original sql = INSERT INTO objects(store, id, size) (SELECT DISTINCT ON (store, object_id) store, object_id, size FROM inputrows) ON CONFLICT (store, id) DO NOTHING RETURNING store, id | |
⚬ Buffer node | |
label = buffer 2 (inserted_objects) | |
⚬ Spool | |
⚬ Run | |
⚬ Insert | |
into = objects(store, id, size, flags, atime, chunks) | |
strategy = inserter | |
⚬ Render | |
render = [store, object_id, size, column23, column24, column25] | |
⚬ Filter | |
filter = store IS _ | |
⚬ Lookup-join | |
table = objects@primary | |
equality = (store, object_id) = (store, id) | |
equality cols are key | |
parallel | |
type = left outer | |
⚬ Render | |
render = [CAST(_ AS VARBIT), now()::INT8, CAST(_ AS JSONB), column1, column2, column5] | |
⚬ Distinct | |
distinct on = column1, column2 | |
⚬ Render | |
render = [column1, column2, column5] | |
⚬ Scan buffer node | |
label = buffer 1 (inputrows) | |
⚬ Subquery | |
exec mode = all rows | |
id = @S3 | |
original sql = INSERT INTO bucket_objects(store, oid, bucket, id) (SELECT store, object_id, bucket, bucket_id FROM inputrows) ON CONFLICT (store, oid, bucket, id) DO NOTHING RETURNING bucket, id | |
⚬ Buffer node | |
label = buffer 3 (inserted_bucket_objects) | |
⚬ Spool | |
⚬ Render | |
render = [bucket, id] | |
⚬ Run | |
⚬ Insert | |
into = bucket_objects(store, oid, bucket, id, http_headers, ipacl, max_downloads, counter, atime) | |
strategy = inserter | |
⚬ Render | |
render = [store, object_id, bucket, bucket_id, column49, column49, column50, column51, column52] | |
⚬ Render | |
render = [store, object_id, bucket, bucket_id, column49, column50, column51, column52] | |
⚬ Filter | |
filter = store IS _ | |
⚬ Lookup-join | |
table = bucket_objects@ixnbi | |
equality = (bucket, bucket_id) = (bucket, id) | |
equality cols are key | |
parallel | |
pred = (@5 = @9) AND (@6 = @10) | |
type = left outer | |
⚬ Render | |
render = [CAST(_ AS JSONB), CAST(_ AS INT8), _, now()::INT8, column1, column2, column3, column4] | |
⚬ Scan buffer node | |
label = buffer 1 (inputrows) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment