pgbench-size-to-scale

by kmoppel

HTML

<h3>pgbench (PostgreSQL) size-to-scale calculator. Blog post with more info <a href="https://www.cybertec-postgresql.com/en/a-formula-to-calculate-pgbench-scaling-factor-for-target-db-size/" target="_blank">here</a>.</h></h3>
<table>
<tr>
<td>Target DB size:</td>
<td><input type="text" id="db_size" /></td>
<td>
  <select id="db_unit">
    <option value="gb" selected>GiB</option>
    <option value="mb">MiB</option>
  </select>
</td>
<td><input type="button" id="from_db_size" value="Calculate Scale" /></td>
<td>Scale:</td>
<td><input id="db_scale" type="text" readonly /></td>
</tr>
<tr>
<td>Target Table size:</td>
<td><input type="text" id="table_size" /></td>
<td>
  <select id="table_unit">
    <option value="gb" selected>GiB</option>
    <option value="mb">MiB</option>
  </select>
</td>
<td><input type="button" id="from_table_size" value="Calculate Scale" /></td>
<td>Scale:</td>
<td><input id="table_scale" type="text" readonly /></td>
</tr>
<tr>
<td>Target Index size:</td>
<td><input type="text" id="index_size" /></td>
<td>
  <select id="index_unit">
    <option value="gb" selected>GiB</option>
    <option value="mb">MiB</option>
  </select>
</td>
<td><input type="button" id="from_index_size" value="Calculate Scale" /></td>
<td>Scale:</td>
<td><input id="index_scale" type="text" readonly /></td>
</tr>
</table>

JavaScript

$(function() {
  $('#from_db_size').click(function() {
    var size_mb = parseInt($('#db_size').val());
    if ($('#db_unit').val() == 'gb')
      size_mb = size_mb * 1024;
    var scale = Math.round(0.06689 * size_mb - 0.5);
    $('#db_scale').val(scale);
  });
  $('#from_table_size').click(function() {
    var size_mb = parseInt($('#table_size').val());
    if ($('#table_unit').val() == 'gb')
      size_mb = size_mb * 1024;
    var scale = Math.round(0.0781 * size_mb);
    $('#table_scale').val(scale);
  });  
  $('#from_index_size').click(function() {
    var size_mb = parseInt($('#index_size').val());
    if ($('#index_unit').val() == 'gb')
      size_mb = size_mb * 1024;
    var scale = Math.round(0.4668 * size_mb);
    $('#index_scale').val(scale);
  });  
  
})