Commit 4fd3b1cf authored by unknown's avatar unknown

Corrected fragmentation calculation to take into account that LQH creates "2...

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


parent 18dcc5dd
...@@ -3513,18 +3513,23 @@ static void ndb_set_fragmentation(NDBTAB &tab, TABLE *form, uint pk_length) ...@@ -3513,18 +3513,23 @@ static void ndb_set_fragmentation(NDBTAB &tab, TABLE *form, uint pk_length)
uint no_fragments; uint no_fragments;
{ {
#if MYSQL_VERSION_ID >= 50000 #if MYSQL_VERSION_ID >= 50000
uint acc_row_size= 25+2; uint acc_row_size= 25 + /*safety margin*/ 2;
#else #else
uint acc_row_size= pk_length*4; uint acc_row_size= pk_length*4;
/* add acc overhead */ /* add acc overhead */
if (pk_length <= 8) if (pk_length <= 8) /* main page will set the limit */
acc_row_size+= 25+2; /* main page will set the limit */ acc_row_size+= 25 + /*safety margin*/ 2;
else else /* overflow page will set the limit */
acc_row_size+= 4+4; /* overflow page will set the limit */ acc_row_size+= 4 + /*safety margin*/ 4;
#endif #endif
ulonglong acc_fragment_size= 512*1024*1024; ulonglong acc_fragment_size= 512*1024*1024;
ulonglong max_rows= form->max_rows; 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; no_fragments= (max_rows*acc_row_size)/acc_fragment_size+1;
#endif
} }
{ {
uint no_nodes= g_ndb_cluster_connection->no_db_nodes(); uint no_nodes= g_ndb_cluster_connection->no_db_nodes();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment