diff options
author | unknown <monty@donna.mysql.fi> | 2001-03-15 13:36:14 +0200 |
---|---|---|
committer | unknown <monty@donna.mysql.fi> | 2001-03-15 13:36:14 +0200 |
commit | d71bb8b2d458c080361b2036933b6199826f0834 (patch) | |
tree | af4f51ee4607baa6b437039b6b6fe5a81dc80692 | |
parent | c669254da76877d1ca9fc78c1065604a797935ef (diff) | |
download | mariadb-git-d71bb8b2d458c080361b2036933b6199826f0834.tar.gz |
Improved ANALYZE TABLE a bit for small tables.
Docs/manual.texi:
Updated changelog
-rw-r--r-- | Docs/manual.texi | 9 | ||||
-rw-r--r-- | myisam/mi_check.c | 10 | ||||
-rw-r--r-- | mysql-test/r/show_check.result | 18 | ||||
-rw-r--r-- | mysql-test/t/show_check.test | 15 |
4 files changed, 41 insertions, 11 deletions
diff --git a/Docs/manual.texi b/Docs/manual.texi index d8072806cf7..6959df69116 100644 --- a/Docs/manual.texi +++ b/Docs/manual.texi @@ -20763,6 +20763,9 @@ only partly indexed. @code{NULL} if the entire key is indexed. For now, it tells whether index is FULLTEXT or not. @end multitable +Note that as the @code{Cardinality} is counted based on statistics +stored as integers, it's not necessarily accurate for small tables. + @cindex displaying, table status @cindex tables, displaying status @cindex status, tables @@ -23622,7 +23625,7 @@ If you get the following error in the @code{hostname.err log} when starting @code{mysqld}: @example -bdb: Ignoring log file: .../log.XXXXXXXXXX: unsupported log version #} +bdb: Ignoring log file: .../log.XXXXXXXXXX: unsupported log version # @end example it means that the new @code{BDB} version doesn't support the old log file format. In this case you have to delete all @code{BDB} log BDB @@ -42181,6 +42184,10 @@ Fixed wrong define @code{CLIENT_TRANSACTIONS}. Fixed bug in @code{SHOW VARIABLES} when using INNOBASE tables. @item Setting and using user variables in @code{SELECT DISTINCT} didn't work. +@item +Tuned @code{SHOW ANALYZE} for small tables. +@item +Fixed handling of arguments in the benchmark script @code{run-all-tests}. @end itemize @node News-3.23.34a, News-3.23.34, News-3.23.35, News-3.23.x diff --git a/myisam/mi_check.c b/myisam/mi_check.c index c0183496df9..699f0f5ad68 100644 --- a/myisam/mi_check.c +++ b/myisam/mi_check.c @@ -580,9 +580,7 @@ static int chk_index(MI_CHECK *param, MI_INFO *info, MI_KEYDEF *keyinfo, } if (param->testflag & T_STATISTICS) { - if (*keys == 1L) /* first_key */ - param->unique_count[keyinfo->keysegs]++; - else + if (*keys != 1L) /* not first_key */ { uint diff; _mi_key_cmp(keyinfo->seg,info->lastkey,key,USE_WHOLE_KEY,SEARCH_FIND, @@ -2520,10 +2518,11 @@ static int sort_key_write(SORT_INFO *sort_info, const void *a) { cmp=_mi_key_cmp(sort_info->keyseg,sort_info->key_block->lastkey,(uchar*) a, USE_WHOLE_KEY,SEARCH_FIND | SEARCH_UPDATE ,&diff_pos); + sort_info->unique[diff_pos-1]++; } else { - cmp= -1; diff_pos=sort_info->keyinfo->keysegs; + cmp= -1; } if ((sort_info->keyinfo->flag & HA_NOSAME) && cmp == 0) { @@ -2544,7 +2543,6 @@ static int sort_key_write(SORT_INFO *sort_info, const void *a) _mi_print_key(stdout,sort_info->keyseg,(uchar*) a, USE_WHOLE_KEY); return (sort_delete_record(param)); } - sort_info->unique[diff_pos-1]++; #ifndef DBUG_OFF if (cmp > 0) { @@ -3099,7 +3097,7 @@ static void update_key_parts(MI_KEYDEF *keyinfo, if (count == 0) tmp=records; else - tmp= (records+count/2) / count; + tmp= (records + (count+1)/2) / (count+1); if (tmp >= (ulonglong) ~(ulong) 0) tmp=(ulonglong) ~(ulong) 0; *rec_per_key_part=(ulong) tmp; diff --git a/mysql-test/r/show_check.result b/mysql-test/r/show_check.result index 29eeab6bc96..8c50570a31d 100644 --- a/mysql-test/r/show_check.result +++ b/mysql-test/r/show_check.result @@ -23,7 +23,7 @@ c int(11) 0 select,insert,update,references Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Comment t1 0 PRIMARY 1 a A 4 NULL NULL t1 1 b 1 b A 1 NULL NULL -t1 1 b 2 c A 2 NULL NULL +t1 1 b 2 c A 4 NULL NULL Table Op Msg_type Msg_text test.t1 check status Table is already up to date Table Op Msg_type Msg_text @@ -39,7 +39,7 @@ test.t1 check status OK Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Comment t1 0 PRIMARY 1 a A 5 NULL NULL t1 1 b 1 b A 1 NULL NULL -t1 1 b 2 c A 2 NULL NULL +t1 1 b 2 c A 5 NULL NULL Table Op Msg_type Msg_text test.t1 optimize status OK Table Op Msg_type Msg_text @@ -53,3 +53,17 @@ mysql test Database (test%) test +Table Op Msg_type Msg_text +test.t1 analyze status OK +Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Comment +t1 0 PRIMARY 1 f1 A 1 NULL NULL +t1 0 PRIMARY 2 f2 A 3 NULL NULL +t1 0 PRIMARY 3 f3 A 9 NULL NULL +t1 0 PRIMARY 4 f4 A 18 NULL NULL +Table Op Msg_type Msg_text +test.t1 repair status OK +Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Comment +t1 0 PRIMARY 1 f1 A 1 NULL NULL +t1 0 PRIMARY 2 f2 A 3 NULL NULL +t1 0 PRIMARY 3 f3 A 9 NULL NULL +t1 0 PRIMARY 4 f4 A 18 NULL NULL diff --git a/mysql-test/t/show_check.test b/mysql-test/t/show_check.test index 0e3447716a0..d4be1a6d25a 100644 --- a/mysql-test/t/show_check.test +++ b/mysql-test/t/show_check.test @@ -13,7 +13,7 @@ lock tables t1 read; check table t2,t1; show columns from t1; show full columns from t1; -show keys from t1; +show index from t1; drop table t1,t2; create table t1 (a int not null primary key, b int not null,c int not null, key(b,c)); @@ -25,7 +25,7 @@ insert into t1 values (5,5,5); check table t1 type=changed; check table t1 type=medium; check table t1 type=extended; -show keys from t1; +show index from t1; !$1062 insert into t1 values (5,5,5); optimize table t1; optimize table t1; @@ -37,3 +37,14 @@ show variables like "this_doesn't_exists%"; show table status from test like "this_doesn't_exists%"; show databases; show databases like "test%"; + +# +# Check of show index +# +create table t1 (f1 int not null, f2 int not null, f3 int not null, f4 int not null, primary key(f1,f2,f3,f4)); +insert into t1 values (1,1,1,0),(1,1,2,0),(1,1,3,0),(1,2,1,0),(1,2,2,0),(1,2,3,0),(1,3,1,0),(1,3,2,0),(1,3,3,0),(1,1,1,1),(1,1,2,1),(1,1,3,1),(1,2,1,1),(1,2,2,1),(1,2,3,1),(1,3,1,1),(1,3,2,1),(1,3,3,1); +analyze table t1; +show index from t1; +repair table t1; +show index from t1; +drop table t1; |