Commit 74ae82f5 authored by unknown's avatar unknown
Browse files

WL#2779 ndb_size.pl

Add display of minimum requirements for various cluster parameters
e.g. DataMemory, IndexMemory, MaxNoOfTables, MaxNoOfAttributes etc

and the memory usage because of them.


ndb/tools/ndb_size.pl:
  Computer minimum parameter settings (MaxNoOfTables, Attributes, Indexes, Triggers) and the memory usage because of these settings.
ndb/tools/ndb_size.tmpl:
  display parameters
parent 517967de
Loading
Loading
Loading
Loading
+56 −1
Original line number Diff line number Diff line
@@ -64,6 +64,14 @@ my $tables = $dbh->selectall_arrayref("show tables");

my @table_size;

my @dbDataMemory;
my @dbIndexMemory;
my @NoOfAttributes;
my @NoOfIndexes;
my @NoOfTables;
$NoOfTables[$_]{val} = @{$tables} foreach 0..$#releases;


sub align {
    my($to,@unaligned) = @_;
    my @aligned;
@@ -147,7 +155,10 @@ foreach(@{$tables})
	elsif($type =~ /binary/ || $type =~ /char/)
	{@realsize=($size,$size,$size)}
	elsif($type =~ /text/ || $type =~ /blob/)
	{@realsize=(256,256,1)} # FIXME check if 5.1 is correct
	{
	    @realsize=(256,256,1);
	    $NoOfTables[$_]{val} += 1 foreach 0..$#releases; # blob uses table
	} # FIXME check if 5.1 is correct

	@realsize= align(4,@realsize);

@@ -265,7 +276,51 @@ foreach(@{$tables})
	IndexMemory=>\@IndexMemory,
	
    };

    $dbDataMemory[$_]{val} += $DataMemory[$_]{val} foreach 0..$#releases;
    $dbIndexMemory[$_]{val} += $IndexMemory[$_]{val} foreach 0..$#releases;
    $NoOfAttributes[$_]{val} += @columns foreach 0..$#releases;
    $NoOfIndexes[$_]{val} += @indexes foreach 0..$#releases;
}

my @NoOfTriggers;
# for unique hash indexes
$NoOfTriggers[$_]{val} += $NoOfIndexes[$_]{val}*3 foreach 0..$#releases;
# for ordered index
$NoOfTriggers[$_]{val} += $NoOfIndexes[$_]{val} foreach 0..$#releases;

my @ParamMemory;
foreach (0..$#releases) {
    $ParamMemory[0]{releases}[$_]{val}= POSIX::ceil(200*$NoOfAttributes[$_]{val}/1024);
    $ParamMemory[0]{name}= 'Attributes';

    $ParamMemory[1]{releases}[$_]{val}= 20*$NoOfTables[$_]{val};
    $ParamMemory[1]{name}= 'Tables';

    $ParamMemory[2]{releases}[$_]{val}= 10*$NoOfIndexes[$_]{val};
    $ParamMemory[2]{name}= 'OrderedIndexes';

    $ParamMemory[3]{releases}[$_]{val}= 15*$NoOfIndexes[$_]{val};
    $ParamMemory[3]{name}= 'UniqueHashIndexes';    
}

$template->param(tables => \@table_size);
$template->param(Parameters => [{name=>'DataMemory (kb)',
				 releases=>\@dbDataMemory},
				{name=>'IndexMemory (kb)',
				 releases=>\@dbIndexMemory},
				{name=>'MaxNoOfTables',
				 releases=>\@NoOfTables},
				{name=>'MaxNoOfAttributes',
				 releases=>\@NoOfAttributes},
				{name=>'MaxNoOfOrderedIndexes',
				 releases=>\@NoOfIndexes},
				{name=>'MaxNoOfUniqueHashIndexes',
				 releases=>\@NoOfIndexes},
				{name=>'MaxNoOfTriggers',
				 releases=>\@NoOfTriggers}
				]
		 );
$template->param(ParamMemory => \@ParamMemory);

print $template->output;
+40 −0
Original line number Diff line number Diff line
@@ -15,6 +15,46 @@ td,th { border: 1px solid black }

<p>This information should be valid for MySQL 4.1 and 5.0. Since 5.1 is not a final release yet, the numbers should be used as a guide only.</p>

<h2>Parameter Settings</h2>
<p><b>NOTE</b> the configuration parameters below do not take into account system tables and other requirements.</p>
<table>
  <tr>
    <th>Parameter</th>
    <TMPL_LOOP NAME=releases>
      <th><TMPL_VAR NAME=rel></th>
    </TMPL_LOOP>
  </tr>
<TMPL_LOOP NAME=Parameters>
  <tr>
    <td><TMPL_VAR NAME=name></td>
    <TMPL_LOOP NAME=releases>
      <td><TMPL_VAR NAME=val></td>
    </TMPL_LOOP>
  </tr>
</TMPL_LOOP>
</table>

<h2>Memory usage because of parameters</h2>

<p>Usage is in kilobytes. Actual usage will vary as you should set the parameters larger than those listed in the table above.</p>
<table>
  <tr>
    <th>Parameter</th>
    <TMPL_LOOP NAME=releases>
      <th><TMPL_VAR NAME=rel></th>
    </TMPL_LOOP>
  </tr>
<TMPL_LOOP NAME=ParamMemory>
  <tr>
    <td><TMPL_VAR NAME=name></td>
    <TMPL_LOOP NAME=releases>
      <td><TMPL_VAR NAME=val></td>
    </TMPL_LOOP>
  </tr>
</TMPL_LOOP>
</table>

<h2>Table List</h2>
<ul>
<TMPL_LOOP NAME="tables">
<li><a href="#<TMPL_VAR NAME="table">"><TMPL_VAR NAME="table"></a></li>