summaryrefslogtreecommitdiff
path: root/sql/ha_ndbcluster.cc
diff options
context:
space:
mode:
authortomas@poseidon.ndb.mysql.com <>2005-02-07 08:51:27 +0100
committertomas@poseidon.ndb.mysql.com <>2005-02-07 08:51:27 +0100
commit4873adace0826765ec330063330d6ce9481a4b8b (patch)
treef742e82e200e705cec2ca931364b8eb0ed300926 /sql/ha_ndbcluster.cc
parentb97a519d7204eb4c1a00f7bfc9dc56382b666ee4 (diff)
downloadmariadb-git-4873adace0826765ec330063330d6ce9481a4b8b.tar.gz
Corrected fragmentation calculation to take into account that LQH creates "2 fragments per fragment" in 4.1 and 5.0
+added some comments to ndb fragmentation calulation
Diffstat (limited to 'sql/ha_ndbcluster.cc')
-rw-r--r--sql/ha_ndbcluster.cc15
1 files changed, 10 insertions, 5 deletions
diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc
index 9f0da616289..b4e05ace27b 100644
--- a/sql/ha_ndbcluster.cc
+++ b/sql/ha_ndbcluster.cc
@@ -3513,18 +3513,23 @@ static void ndb_set_fragmentation(NDBTAB &tab, TABLE *form, uint pk_length)
uint no_fragments;
{
#if MYSQL_VERSION_ID >= 50000
- uint acc_row_size= 25+2;
+ uint acc_row_size= 25 + /*safety margin*/ 2;
#else
uint acc_row_size= pk_length*4;
/* add acc overhead */
- if (pk_length <= 8)
- acc_row_size+= 25+2; /* main page will set the limit */
- else
- acc_row_size+= 4+4; /* overflow page will set the limit */
+ if (pk_length <= 8) /* main page will set the limit */
+ acc_row_size+= 25 + /*safety margin*/ 2;
+ else /* overflow page will set the limit */
+ acc_row_size+= 4 + /*safety margin*/ 4;
#endif
ulonglong acc_fragment_size= 512*1024*1024;
ulonglong max_rows= form->max_rows;
+#if MYSQL_VERSION_ID >= 50100
+ no_fragments= ((max_rows*acc_row_size)/acc_fragment_size+1
+ +1/*correct rounding*/)/2;
+#else
no_fragments= (max_rows*acc_row_size)/acc_fragment_size+1;
+#endif
}
{
uint no_nodes= g_ndb_cluster_connection->no_db_nodes();