pg-workload 0.4.2__tar.gz → 0.5.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. {pg_workload-0.4.2/src/pg_workload.egg-info → pg_workload-0.5.0}/PKG-INFO +9 -5
  2. {pg_workload-0.4.2 → pg_workload-0.5.0}/README.md +8 -4
  3. {pg_workload-0.4.2 → pg_workload-0.5.0}/THIRD_PARTY_NOTICES.md +6 -8
  4. {pg_workload-0.4.2 → pg_workload-0.5.0}/pyproject.toml +1 -1
  5. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/__init__.py +1 -1
  6. pg_workload-0.5.0/src/pg_workload/bundled/profiles/imdb/README.md +43 -0
  7. pg_workload-0.5.0/src/pg_workload/bundled/profiles/imdb/generator.py +551 -0
  8. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/imdb/profile.yml +6 -3
  9. pg_workload-0.5.0/src/pg_workload/bundled/profiles/imdb/sql/01_company_catalog.sql +17 -0
  10. pg_workload-0.5.0/src/pg_workload/bundled/profiles/imdb/sql/02_people_by_keyword.sql +19 -0
  11. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/imdb/sql/03_keyword_trends.sql +4 -4
  12. pg_workload-0.5.0/src/pg_workload/bundled/profiles/imdb/sql/04_genre_cast.sql +14 -0
  13. pg_workload-0.5.0/src/pg_workload/bundled/profiles/imdb/sql/05_join_stress.sql +22 -0
  14. pg_workload-0.5.0/src/pg_workload/bundled/profiles/imdb/sql/imdb-fkindexes.sql +67 -0
  15. pg_workload-0.5.0/src/pg_workload/bundled/profiles/imdb/sql/imdb-schema.sql +176 -0
  16. pg_workload-0.5.0/src/pg_workload/bundled/profiles/imdb/sql/select_1.sql +87 -0
  17. pg_workload-0.5.0/src/pg_workload/bundled/profiles/imdb/sql/select_10.sql +72 -0
  18. pg_workload-0.5.0/src/pg_workload/bundled/profiles/imdb/sql/select_11.sql +136 -0
  19. pg_workload-0.5.0/src/pg_workload/bundled/profiles/imdb/sql/select_12.sql +102 -0
  20. pg_workload-0.5.0/src/pg_workload/bundled/profiles/imdb/sql/select_13.sql +135 -0
  21. pg_workload-0.5.0/src/pg_workload/bundled/profiles/imdb/sql/select_14.sql +133 -0
  22. pg_workload-0.5.0/src/pg_workload/bundled/profiles/imdb/sql/select_15.sql +143 -0
  23. pg_workload-0.5.0/src/pg_workload/bundled/profiles/imdb/sql/select_16.sql +114 -0
  24. pg_workload-0.5.0/src/pg_workload/bundled/profiles/imdb/sql/select_17.sql +143 -0
  25. pg_workload-0.5.0/src/pg_workload/bundled/profiles/imdb/sql/select_18.sql +104 -0
  26. pg_workload-0.5.0/src/pg_workload/bundled/profiles/imdb/sql/select_19.sql +169 -0
  27. pg_workload-0.5.0/src/pg_workload/bundled/profiles/imdb/sql/select_2.sql +69 -0
  28. pg_workload-0.5.0/src/pg_workload/bundled/profiles/imdb/sql/select_20.sql +131 -0
  29. pg_workload-0.5.0/src/pg_workload/bundled/profiles/imdb/sql/select_21.sql +134 -0
  30. pg_workload-0.5.0/src/pg_workload/bundled/profiles/imdb/sql/select_22.sql +215 -0
  31. pg_workload-0.5.0/src/pg_workload/bundled/profiles/imdb/sql/select_23.sql +132 -0
  32. pg_workload-0.5.0/src/pg_workload/bundled/profiles/imdb/sql/select_24.sql +110 -0
  33. pg_workload-0.5.0/src/pg_workload/bundled/profiles/imdb/sql/select_25.sql +145 -0
  34. pg_workload-0.5.0/src/pg_workload/bundled/profiles/imdb/sql/select_26.sql +160 -0
  35. pg_workload-0.5.0/src/pg_workload/bundled/profiles/imdb/sql/select_27.sql +170 -0
  36. pg_workload-0.5.0/src/pg_workload/bundled/profiles/imdb/sql/select_28.sql +202 -0
  37. pg_workload-0.5.0/src/pg_workload/bundled/profiles/imdb/sql/select_29.sql +208 -0
  38. pg_workload-0.5.0/src/pg_workload/bundled/profiles/imdb/sql/select_3.sql +65 -0
  39. pg_workload-0.5.0/src/pg_workload/bundled/profiles/imdb/sql/select_30.sql +192 -0
  40. pg_workload-0.5.0/src/pg_workload/bundled/profiles/imdb/sql/select_31.sql +180 -0
  41. pg_workload-0.5.0/src/pg_workload/bundled/profiles/imdb/sql/select_32.sql +41 -0
  42. pg_workload-0.5.0/src/pg_workload/bundled/profiles/imdb/sql/select_33.sql +160 -0
  43. pg_workload-0.5.0/src/pg_workload/bundled/profiles/imdb/sql/select_4.sql +61 -0
  44. pg_workload-0.5.0/src/pg_workload/bundled/profiles/imdb/sql/select_5.sql +79 -0
  45. pg_workload-0.5.0/src/pg_workload/bundled/profiles/imdb/sql/select_6.sql +141 -0
  46. pg_workload-0.5.0/src/pg_workload/bundled/profiles/imdb/sql/select_7.sql +106 -0
  47. pg_workload-0.5.0/src/pg_workload/bundled/profiles/imdb/sql/select_8.sql +108 -0
  48. pg_workload-0.5.0/src/pg_workload/bundled/profiles/imdb/sql/select_9.sql +136 -0
  49. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/common.py +2 -0
  50. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/orchestration.py +4 -1
  51. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/runner.py +18 -0
  52. {pg_workload-0.4.2 → pg_workload-0.5.0/src/pg_workload.egg-info}/PKG-INFO +9 -5
  53. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload.egg-info/SOURCES.txt +35 -2
  54. {pg_workload-0.4.2 → pg_workload-0.5.0}/tests/test_docker_postgres18.py +47 -0
  55. {pg_workload-0.4.2 → pg_workload-0.5.0}/tests/test_workload.py +76 -0
  56. pg_workload-0.4.2/src/pg_workload/bundled/profiles/imdb/README.md +0 -32
  57. pg_workload-0.4.2/src/pg_workload/bundled/profiles/imdb/generator.py +0 -121
  58. pg_workload-0.4.2/src/pg_workload/bundled/profiles/imdb/sql/01_company_catalog.sql +0 -16
  59. pg_workload-0.4.2/src/pg_workload/bundled/profiles/imdb/sql/02_people_by_keyword.sql +0 -18
  60. pg_workload-0.4.2/src/pg_workload/bundled/profiles/imdb/sql/04_genre_cast.sql +0 -14
  61. pg_workload-0.4.2/src/pg_workload/bundled/profiles/imdb/sql/05_join_stress.sql +0 -22
  62. pg_workload-0.4.2/src/pg_workload/bundled/profiles/imdb/sql/indexes.sql +0 -20
  63. pg_workload-0.4.2/src/pg_workload/bundled/profiles/imdb/sql/schema.sql +0 -69
  64. {pg_workload-0.4.2 → pg_workload-0.5.0}/LICENSE +0 -0
  65. {pg_workload-0.4.2 → pg_workload-0.5.0}/MANIFEST.in +0 -0
  66. {pg_workload-0.4.2 → pg_workload-0.5.0}/setup.cfg +0 -0
  67. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/__main__.py +0 -0
  68. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/assets.py +0 -0
  69. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/bloat_vacuum/README.md +0 -0
  70. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/bloat_vacuum/generator.py +0 -0
  71. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/bloat_vacuum/profile.yml +0 -0
  72. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/bloat_vacuum/sql/01_churn.sql +0 -0
  73. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/bloat_vacuum/sql/accounts-schema.sql +0 -0
  74. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/emulate_errors/README.md +0 -0
  75. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/emulate_errors/profile.yml +0 -0
  76. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/emulate_errors/sql/01_workload.sql +0 -0
  77. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/emulate_errors/sql/schema.sql +0 -0
  78. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/jsonb_docs/README.md +0 -0
  79. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/jsonb_docs/generator.py +0 -0
  80. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/jsonb_docs/profile.yml +0 -0
  81. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/jsonb_docs/sql/01_write.sql +0 -0
  82. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/jsonb_docs/sql/02_read.sql +0 -0
  83. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/jsonb_docs/sql/docs-schema.sql +0 -0
  84. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/many_objects/README.md +0 -0
  85. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/many_objects/profile.yml +0 -0
  86. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/many_objects/sql/01_workload.sql +0 -0
  87. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/many_objects/sql/prepare_schema_01.sql +0 -0
  88. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/many_objects/sql/prepare_schema_02.sql +0 -0
  89. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/pagila/README.md +0 -0
  90. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/pagila/generator.py +0 -0
  91. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/pagila/profile.yml +0 -0
  92. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/pagila/sql/01_select.sql +0 -0
  93. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/pagila/sql/02_insert.sql +0 -0
  94. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/pagila/sql/03_update.sql +0 -0
  95. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/pagila/sql/04_delete.sql +0 -0
  96. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/pagila/sql/pagila-schema.sql +0 -0
  97. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/partition_aging/README.md +0 -0
  98. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/partition_aging/generator.py +0 -0
  99. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/partition_aging/profile.yml +0 -0
  100. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/partition_aging/sql/01_ingest.sql +0 -0
  101. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/partition_aging/sql/02_read_recent.sql +0 -0
  102. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/partition_aging/sql/03_read_history.sql +0 -0
  103. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/partition_aging/sql/events-schema.sql +0 -0
  104. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/pss_overflow/README.md +0 -0
  105. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/pss_overflow/generator.py +0 -0
  106. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/pss_overflow/profile.yml +0 -0
  107. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/pss_overflow/sql/01_workload.sql +0 -0
  108. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/pss_overflow/sql/pss_overflow-schema.sql +0 -0
  109. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/queue_skip_locked/README.md +0 -0
  110. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/queue_skip_locked/generator.py +0 -0
  111. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/queue_skip_locked/profile.yml +0 -0
  112. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/queue_skip_locked/sql/01_enqueue.sql +0 -0
  113. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/queue_skip_locked/sql/02_dequeue.sql +0 -0
  114. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/queue_skip_locked/sql/03_settle.sql +0 -0
  115. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/queue_skip_locked/sql/queue-schema.sql +0 -0
  116. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/simple_stock/README.md +0 -0
  117. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/simple_stock/generator.py +0 -0
  118. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/simple_stock/profile.yml +0 -0
  119. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/simple_stock/sql/01_workload.sql +0 -0
  120. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/simple_stock/sql/indexes.sql +0 -0
  121. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/simple_stock/sql/stock-schema.sql +0 -0
  122. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/simple_stock_spec_symbols/README.md +0 -0
  123. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/simple_stock_spec_symbols/generator.py +0 -0
  124. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/simple_stock_spec_symbols/profile.yml +0 -0
  125. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/simple_stock_spec_symbols/sql/01_workload.sql +0 -0
  126. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/simple_stock_spec_symbols/sql/indexes.sql +0 -0
  127. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/profiles/simple_stock_spec_symbols/sql/stock-schema.sql +0 -0
  128. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/bundled/schema/pg_workload-v1.schema.json +0 -0
  129. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/cli.py +0 -0
  130. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/config.py +0 -0
  131. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/control.py +0 -0
  132. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/logging.py +0 -0
  133. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/pg_client.py +0 -0
  134. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/profiles.py +0 -0
  135. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/resources.py +0 -0
  136. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/scheduler.py +0 -0
  137. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload/state.py +0 -0
  138. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload.egg-info/dependency_links.txt +0 -0
  139. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload.egg-info/entry_points.txt +0 -0
  140. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload.egg-info/requires.txt +0 -0
  141. {pg_workload-0.4.2 → pg_workload-0.5.0}/src/pg_workload.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pg-workload
3
- Version: 0.4.2
3
+ Version: 0.5.0
4
4
  Summary: PostgreSQL workload emulator for diagnostic and observability testing
5
5
  Author-email: O2eg <oleg.ispu@gmail.com>
6
6
  License-Expression: MIT
@@ -191,7 +191,11 @@ instead of `--passfile`; `PGPASSWORD` is accepted only as an admin-password comp
191
191
  `prepare-db --recreate` drops only the selected workload database after terminating its sessions;
192
192
  it does not drop the workload role.
193
193
  Unless `--extensions` is supplied, it creates both `pg_stat_statements` and
194
- `pg_buffercache`, matching the default pg_diag metric set used by pg_play.
194
+ `pg_buffercache`, and also installs `pg_stat_kcache` and `pg_wait_sampling` when
195
+ the server provides them. Managed `pg_stand` images include and preload the required
196
+ libraries, and new databases inherit the extensions from `template1`. An explicit
197
+ `--extensions` list replaces both default lists. Optional extension choices are
198
+ included in the machine plan.
195
199
 
196
200
  ## Targets
197
201
 
@@ -236,8 +240,8 @@ Use `--bin-dir /path/to/postgresql/bin` when client binaries are outside
236
240
 
237
241
  No profile requires a dump, CSV file, or network download. The Pagila schema is redistributed
238
242
  under its upstream license; see `THIRD_PARTY_NOTICES.md`. Its rows are generated locally. The
239
- bundled `imdb` profile is an original, compact movie-domain model and does not contain Join Order
240
- Benchmark SQL or IMDB source data.
243
+ bundled `imdb` profile contains a full synthetic 21-table movie-domain model, 38 analytical
244
+ scripts, and 113 SELECT variants; it contains no IMDB source data.
241
245
 
242
246
  Every profile directory contains a `README.md` with the scenario description, its jobs, the
243
247
  pg_diag sections it is meant to exercise, and scale/observation guidance.
@@ -352,7 +356,7 @@ pg-workload run --profile simple_stock --pgbench-transactions 100
352
356
  |---|---|
353
357
  | `simple_stock` | 150,000 product groups; 1,000,000 SKUs; 1,000,000 stock rows |
354
358
  | `simple_stock_spec_symbols` | the same cardinalities with hostile and Unicode identifiers/values |
355
- | `imdb` | 10,000 companies; 100,000 people; 100,000 titles; 1,300,000 fact rows |
359
+ | `imdb` | 21 tables; 10,000 companies; 100,000 people; 100,000 titles; ~2,000,000 related rows |
356
360
  | `pagila` | 600 customers; 1,000 films; 4,500 inventory; 16,000 rentals; 16,500 payments |
357
361
  | `queue_skip_locked` | 20,000 pending + 5,000 done queue tasks |
358
362
  | `jsonb_docs` | 50,000 JSONB documents |
@@ -152,7 +152,11 @@ instead of `--passfile`; `PGPASSWORD` is accepted only as an admin-password comp
152
152
  `prepare-db --recreate` drops only the selected workload database after terminating its sessions;
153
153
  it does not drop the workload role.
154
154
  Unless `--extensions` is supplied, it creates both `pg_stat_statements` and
155
- `pg_buffercache`, matching the default pg_diag metric set used by pg_play.
155
+ `pg_buffercache`, and also installs `pg_stat_kcache` and `pg_wait_sampling` when
156
+ the server provides them. Managed `pg_stand` images include and preload the required
157
+ libraries, and new databases inherit the extensions from `template1`. An explicit
158
+ `--extensions` list replaces both default lists. Optional extension choices are
159
+ included in the machine plan.
156
160
 
157
161
  ## Targets
158
162
 
@@ -197,8 +201,8 @@ Use `--bin-dir /path/to/postgresql/bin` when client binaries are outside
197
201
 
198
202
  No profile requires a dump, CSV file, or network download. The Pagila schema is redistributed
199
203
  under its upstream license; see `THIRD_PARTY_NOTICES.md`. Its rows are generated locally. The
200
- bundled `imdb` profile is an original, compact movie-domain model and does not contain Join Order
201
- Benchmark SQL or IMDB source data.
204
+ bundled `imdb` profile contains a full synthetic 21-table movie-domain model, 38 analytical
205
+ scripts, and 113 SELECT variants; it contains no IMDB source data.
202
206
 
203
207
  Every profile directory contains a `README.md` with the scenario description, its jobs, the
204
208
  pg_diag sections it is meant to exercise, and scale/observation guidance.
@@ -313,7 +317,7 @@ pg-workload run --profile simple_stock --pgbench-transactions 100
313
317
  |---|---|
314
318
  | `simple_stock` | 150,000 product groups; 1,000,000 SKUs; 1,000,000 stock rows |
315
319
  | `simple_stock_spec_symbols` | the same cardinalities with hostile and Unicode identifiers/values |
316
- | `imdb` | 10,000 companies; 100,000 people; 100,000 titles; 1,300,000 fact rows |
320
+ | `imdb` | 21 tables; 10,000 companies; 100,000 people; 100,000 titles; ~2,000,000 related rows |
317
321
  | `pagila` | 600 customers; 1,000 films; 4,500 inventory; 16,000 rentals; 16,500 payments |
318
322
  | `queue_skip_locked` | 20,000 pending + 5,000 done queue tasks |
319
323
  | `jsonb_docs` | 50,000 JSONB documents |
@@ -27,11 +27,9 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
27
27
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
28
28
  SOFTWARE.
29
29
 
30
- ## Join Order Benchmark and source IMDB data
31
-
32
- The original development workspace may contain local Join Order Benchmark SQL
33
- and source IMDB data. They are deliberately excluded from the source
34
- distribution and wheel because the upstream repository does not publish an
35
- explicit license. The bundled profile named `imdb` is an independent synthetic
36
- movie-domain schema, generator, and workload; it does not contain or derive from
37
- those excluded files.
30
+ ## Synthetic movie-domain workload
31
+
32
+ The bundled `imdb` profile includes SQL query shapes migrated and adapted from
33
+ the predecessor `pg_workload_generator` implementation. Its data generator is
34
+ local and deterministic. No source IMDB dataset, CSV archive, or downloaded row
35
+ data is included in the source distribution or wheel.
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "pg-workload"
7
- version = "0.4.2"
7
+ version = "0.5.0"
8
8
  description = "PostgreSQL workload emulator for diagnostic and observability testing"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -1,6 +1,6 @@
1
1
  """PostgreSQL workload generation and scheduling tools."""
2
2
 
3
- __version__ = "0.4.2"
3
+ __version__ = "0.5.0"
4
4
 
5
5
  from pg_workload.assets import bundled_profiles_root, initialize_project
6
6
  from pg_workload.cli import build_parser
@@ -0,0 +1,43 @@
1
+ # imdb
2
+
3
+ Analytical read-only workload over a synthetic movie-domain model: multi-way joins,
4
+ aggregations, selective lookups, correlated subgraphs, and skewed popularity distributions.
5
+ It is a workload generator rather than a benchmark: the goal is to keep PostgreSQL busy and
6
+ produce varied plans and statistics for `auto_explain`, `pg_stat_statements`, and DBA tooling.
7
+ No IMDB source rows, CSV files, archives, or network downloads are required.
8
+
9
+ ## Objects (at scale 1)
10
+
11
+ - The full 21-table relational shape used by the earlier profile, including alternate names and
12
+ titles, characters, company and role types, complete-cast metadata, indexed movie attributes,
13
+ person information, and movie links.
14
+ - 10,000 companies; 100,000 people; 50,000 characters; 20,000 keywords; 100,000 titles; and about
15
+ 2 million fact, relationship, and attribute rows.
16
+ - Deterministic synthetic anchor rows cover the names, years, countries, notes, roles, keywords,
17
+ genres, ratings, and link types selected by every bundled query family.
18
+ - Foreign-key/join-column and selective-filter indexes are created after loading, followed by
19
+ `ANALYZE` for all 21 tables.
20
+
21
+ ## Jobs
22
+
23
+ | Job | Type | Interval | What it does |
24
+ |---|---|---|---|
25
+ | `analytical_selects` | pgbench | 60 s | 38 scripts and 113 SELECT variants: five compact analytics plus 33 multi-join families |
26
+
27
+ The `select_1.sql` through `select_33.sql` files retain the diverse join shapes of the previous
28
+ implementation. Their predicates target values deliberately generated by `generator.py`, so the
29
+ aggregate results describe existing synthetic rows instead of repeatedly exercising empty joins.
30
+
31
+ ## What to watch in pg_diag
32
+
33
+ - `sql_workload` — top statements by total/mean time with real join plans
34
+ - `object_workload` — sequential vs index scan split on fact tables
35
+ - `buffer_cache` — relation caching behaviour under repeated analytical reads
36
+ - `snapshot_charts_db` — read I/O rates during the observation window
37
+
38
+ ## Recommended scale and observation window
39
+
40
+ - Scale 1 for meaningful planning; scale 0.1 still keeps join selectivity sensible. Very small
41
+ scales retain the complete anchor dataset and at least 1,000 titles for CI and training.
42
+ - 5–10 minutes of scheduled runs; analytical queries dominate `pg_stat_statements`
43
+ quickly because the job interval is 60 s.