def scenario_66_delete_and_entire_incremetal_last_15_no_autocheckpoint(td): td.monitor_pipe.send( result.Title( "Delete Last 15 Rows, Entire Incremental Vacuum, Manual Checkpoint (S.66)" )) ################################################## # Disable auto checkpoint ################################################## _set_auto_checkpoint(td, 0) ################################################## # Write data ################################################## _write_data(td, True, config.NUM_ROWS_IN_DB) _get_pages_usage(td) _checkpoint_passive_and_log_pages(td) _checkpoint_truncate(td) ################################################## # Delete some data ################################################## _delete_data(td, True, 85, config.NUM_ROWS_IN_DB) _get_pages_usage(td) _checkpoint_passive_and_log_pages(td) _checkpoint_truncate(td) ################################################## # Try and shrink the DB with incremental_vacuum ################################################## _get_pages_usage(td) _incremental_vacuum(td, 0) _checkpoint_passive_and_log_pages(td) _get_pages_usage(td)
def scenario_42_delete_and_granular_incremental_vacuum_first_60(td): td.monitor_pipe.send( result.Title( "Delete First 60 Rows and Granular Incremental Vacuum (S.42)")) ################################################## # Write data ################################################## _write_data(td, True, config.NUM_ROWS_IN_DB) ################################################## # Delete some data ################################################## _delete_data(td, True, 0, 60) _checkpoint_truncate(td) ################################################## # Try and shrink the DB with incremental_vacuum ################################################## for i in range(1000): (_, freelist_count) = _get_pages_usage(td) if freelist_count == 0: break _incremental_vacuum(td, twoish_mb_of_pages)
def scenario_65_delete_and_granular_incremental_vacuum_last_15_200(td): td.monitor_pipe.send( result.Title( "Delete Last 15 Rows, Granular Incr Vacuum 200, Checkpoint (S.65)") ) ################################################## # Write data ################################################## _write_data(td, True, config.NUM_ROWS_IN_DB) ################################################## # Delete some data ################################################## _delete_data(td, True, 85, config.NUM_ROWS_IN_DB) _checkpoint_truncate(td) ################################################## # Try and shrink the DB with incremental_vacuum ################################################## (_, pages_to_vacuum) = _get_pages_usage(td) step_size = 200 for i in range(int(pages_to_vacuum / step_size + 1)): _incremental_vacuum(td, step_size) _checkpoint_passive_and_log_pages(td) _get_pages_usage(td)
def scenario_45_delete_and_granular_incremental_vacuum_last_15_checkpoint(td): td.monitor_pipe.send( result.Title( "Delete Last 15 Rows, Granular Incremental Vacuum And Checkpoint (S.45)" )) ################################################## # Write data ################################################## _write_data(td, True, config.NUM_ROWS_IN_DB) ################################################## # Delete some data ################################################## _delete_data(td, True, 85, config.NUM_ROWS_IN_DB) _checkpoint_truncate(td) ################################################## # Try and shrink the DB with incremental_vacuum ################################################## for i in range(1000): (_, free_count) = _get_pages_usage(td) if free_count == 0: break _incremental_vacuum(td, twoish_mb_of_pages) _checkpoint_passive(td)
def scenario_11_small_transaction_vacuum_populated_db(td): td.monitor_pipe.send( result.Title("Small Write Transactions Then Vacuum (S.11)")) _write_data(td, True, config.NUM_ROWS_IN_DB) _vacuum(td)
def scenario_35_delete_and_entire_incremental_vacuum_last_3_checkpoint(td): td.monitor_pipe.send( result.Title( "Delete Last 3 Rows, Entire Incremental Vacuum, Checkpoint (S.35)") ) ################################################## # Write data ################################################## _write_data(td, True, config.NUM_ROWS_IN_DB) ################################################## # Delete some data ################################################## _delete_data(td, True, 97, config.NUM_ROWS_IN_DB) _checkpoint_truncate(td) ################################################## # Try and shrink the DB with incremental _vacuum ################################################## _get_pages_usage(td) _incremental_vacuum(td, 0) _get_pages_usage(td) _checkpoint_passive(td)
def scenario_21_vacuum_and_checkpoint_previously_populated_db(td): td.monitor_pipe.send(result.Title("Vacuum, Checkpoint An Empty DB (S.21)")) ################################################## # Write data ################################################## _write_data(td, True, config.NUM_ROWS_IN_DB) _checkpoint_truncate(td) ################################################## # Delete all data ################################################## _delete_data(td, True, 0, config.NUM_ROWS_IN_DB) _checkpoint_truncate(td) ################################################## # Try and shrink the DB with a vacuum ################################################## _get_pages_usage(td) _vacuum(td) _get_pages_usage(td) # DB will only shrink here if a checkpoint of some description is ran # Vacuum is "stuck" in WAL _checkpoint_passive(td) _get_pages_usage(td)
def scenario_10_large_transaction_vacuum_populated_db(td): td.monitor_pipe.send( result.Title("Large Write Transaction Then Vacuum (S.10)")) _write_data(td, False, config.NUM_ROWS_IN_DB) _vacuum(td)
def scenario_02_large_write_single_commit_checkpoint_tuncate(td): td.monitor_pipe.send( result.Title("Large Write Transaction and Checkpoint Trucate (S.02)")) _write_data(td, False, config.NUM_ROWS_IN_DB) _checkpoint_truncate(td)
def scenario_03_small_write_large_delete_transaction(td): td.monitor_pipe.send( result.Title( "Small Write Transactions, Large Delete Transaction (S.03)")) _write_data(td, True, config.NUM_ROWS_IN_DB) _delete_data(td, False, 0, config.NUM_ROWS_IN_DB)
def scenario_12_small_transaction_vacuum_populated_checkpoint_db(td): td.monitor_pipe.send( result.Title( "Small Write Transactions Then Vacuum And Checkpoint Truncate (S.12)" )) _write_data(td, True, config.NUM_ROWS_IN_DB) _checkpoint_truncate(td) _vacuum(td) _checkpoint_truncate(td)
def scenario_51_delete_last_15(td): td.monitor_pipe.send(result.Title("Delete Last 15 Rows (S.51)")) ################################################## # Write data ################################################## _write_data(td, True, config.NUM_ROWS_IN_DB) _checkpoint_truncate(td) ################################################## # Delete some data ################################################## _delete_data(td, True, 85, config.NUM_ROWS_IN_DB) _get_pages_usage(td) _checkpoint_truncate(td)
def scenario_34_delete_and_entire_incremental_vacuum_all_100(td): td.monitor_pipe.send( result.Title("Delete All Rows and Entire Incremental Vacuum (S.34)")) ################################################## # Write data ################################################## _write_data(td, True, config.NUM_ROWS_IN_DB) ################################################## # Delete some data ################################################## _delete_data(td, True, 0, config.NUM_ROWS_IN_DB) _checkpoint_truncate(td) ################################################## # Try and shrink the DB with incremental _vacuum ################################################## _get_pages_usage(td) _incremental_vacuum(td, 0) _get_pages_usage(td)
def scenario_20_vacuum_previously_populated_db(td): td.monitor_pipe.send(result.Title("Vacuum An Empty DB (S.20)")) ################################################## # Write data ################################################## _write_data(td, True, config.NUM_ROWS_IN_DB) _checkpoint_truncate(td) ################################################## # Delete all data ################################################## _delete_data(td, True, 0, config.NUM_ROWS_IN_DB) _checkpoint_truncate(td) ################################################## # Try and shrink the DB with a vacuum ################################################## _get_pages_usage(td) _vacuum(td) _get_pages_usage(td)
def scenario_01_large_write_multiple_commits(td): td.monitor_pipe.send(result.Title("Small Write Transactions (S.01)")) _write_data(td, True, config.NUM_ROWS_IN_DB)
def scenario_00_large_write_single_commit(td): td.monitor_pipe.send(result.Title("Large Write Transaction (S.00)")) _write_data(td, False, config.NUM_ROWS_IN_DB)