List:Commits« Previous MessageNext Message »
From:Sergey Petrunia Date:October 22 2007 12:30pm
Subject:bk commit into 5.2 tree (sergefp:1.2590)
View as plain text  
Below is the list of changes that have just been committed into a local
5.2 repository of psergey. When psergey does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html

ChangeSet@stripped, 2007-10-22 16:30:04+04:00, sergefp@stripped +4 -0
  WL#2771: Batched Key Access
   - Added Handler_mrr_init counter
   - Started to work on adding BKA batch size statistics values.

  sql/ha_ndbcluster.cc@stripped, 2007-10-22 16:30:00+04:00, sergefp@stripped +1 -0
    WL#2771: Batched Key Access
     - Added Handler_mrr_init counter
     - Started to work on adding BKA batch size statistics values.

  sql/handler.cc@stripped, 2007-10-22 16:30:00+04:00, sergefp@stripped +5 -1
    WL#2771: Batched Key Access
     - Added Handler_mrr_init counter
     - Started to work on adding BKA batch size statistics values.

  sql/mysqld.cc@stripped, 2007-10-22 16:30:00+04:00, sergefp@stripped +1 -0
    WL#2771: Batched Key Access
     - Added Handler_mrr_init counter
     - Started to work on adding BKA batch size statistics values.

  sql/sql_class.h@stripped, 2007-10-22 16:30:00+04:00, sergefp@stripped +38 -0
    WL#2771: Batched Key Access
     - Added Handler_mrr_init counter
     - Started to work on adding BKA batch size statistics values.

diff -Nrup a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc
--- a/sql/ha_ndbcluster.cc	2007-10-14 16:21:11 +04:00
+++ b/sql/ha_ndbcluster.cc	2007-10-22 16:30:00 +04:00
@@ -9846,6 +9846,7 @@ int ha_ndbcluster::multi_range_read_init
   mrr_need_range_assoc = !test(mode & HA_MRR_NO_ASSOCIATION);
   if (mrr_need_range_assoc)
   {
+    ha_statistic_increment(&SSV::ha_multi_range_read_init_count);
 /*   uint max_records_to_fit=
       (multi_range_buffer.buffer_end - multi_range_buffer.buffer) /
        table_share->reclength;
diff -Nrup a/sql/handler.cc b/sql/handler.cc
--- a/sql/handler.cc	2007-10-20 20:04:55 +04:00
+++ b/sql/handler.cc	2007-10-22 16:30:00 +04:00
@@ -3459,8 +3459,12 @@ int DsMrr_impl::dsmrr_init(handler *h, K
   is_mrr_assoc= !test(mode & HA_MRR_NO_ASSOCIATION);
   semi_join= test(mode & HA_MRR_SEMI_JOIN);
   DBUG_ASSERT(!semi_join || is_mrr_assoc);
+
+  if (is_mrr_assoc)
+    h->ha_statistic_increment(&SSV::ha_multi_range_read_init_count);
+ 
+
   rowids_buf_end= buf->buffer_end;
-  
   elem_size= h->ref_length + (int)is_mrr_assoc * sizeof(void*);
   rowids_buf_last= rowids_buf + 
                       ((rowids_buf_end - rowids_buf)/ elem_size)*
diff -Nrup a/sql/mysqld.cc b/sql/mysqld.cc
--- a/sql/mysqld.cc	2007-10-03 15:09:44 +04:00
+++ b/sql/mysqld.cc	2007-10-22 16:30:00 +04:00
@@ -6828,6 +6828,7 @@ SHOW_VAR status_vars[]= {
   {"Handler_commit",           (char*) offsetof(STATUS_VAR, ha_commit_count), SHOW_LONG_STATUS},
   {"Handler_delete",           (char*) offsetof(STATUS_VAR, ha_delete_count), SHOW_LONG_STATUS},
   {"Handler_discover",         (char*) offsetof(STATUS_VAR, ha_discover_count), SHOW_LONG_STATUS},
+  {"Handler_mrr_init",         (char*) offsetof(STATUS_VAR, ha_multi_range_read_init_count),  SHOW_LONG_STATUS},
   {"Handler_prepare",          (char*) offsetof(STATUS_VAR, ha_prepare_count),  SHOW_LONG_STATUS},
   {"Handler_read_first",       (char*) offsetof(STATUS_VAR, ha_read_first_count), SHOW_LONG_STATUS},
   {"Handler_read_key",         (char*) offsetof(STATUS_VAR, ha_read_key_count), SHOW_LONG_STATUS},
diff -Nrup a/sql/sql_class.h b/sql/sql_class.h
--- a/sql/sql_class.h	2007-09-04 22:30:36 +04:00
+++ b/sql/sql_class.h	2007-10-22 16:30:00 +04:00
@@ -359,6 +359,38 @@ struct system_variables
 
 };
 
+/*
+  Statistics for some value. One can feed the specimen values in, and then
+  get AVG() and VARIANCE() of the observed set.
+*/
+class Stat_value
+{
+  /* number of values */
+  uint n;
+
+  double mean, stddev;
+public:
+  void init(ulong *counter_arg)
+  {
+    mean= stddev= 0.0;
+  }
+  
+  void add_val(double val)
+  {
+    double prev_mean= mean;
+    if (!n)
+      mean= val;
+    else
+      mean+= (val - mean)/(n-1);
+
+    stddev += val -prev_mean * val - mean;
+    n++;
+  }
+
+  double get_avg() { return mean; }
+  double get_variance() { return stddev; }
+};
+
 
 /* per thread status variables */
 
@@ -379,6 +411,12 @@ typedef struct system_status_var
   ulong ha_read_prev_count;
   ulong ha_read_rnd_count;
   ulong ha_read_rnd_next_count;
+  /*
+    This number doesn't include calls to the default implementation and
+    calls made by range access. The intent is to count only calls made by
+    BatchedKeyAccess.
+  */
+  ulong ha_multi_range_read_init_count;
   ulong ha_rollback_count;
   ulong ha_update_count;
   ulong ha_write_count;
Thread
bk commit into 5.2 tree (sergefp:1.2590)Sergey Petrunia22 Oct