mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 20:12:31 +01:00
Improved ANALYZE TABLE a bit for small tables.
Docs/manual.texi: Updated changelog
This commit is contained in:
parent
c669254da7
commit
d71bb8b2d4
4 changed files with 41 additions and 11 deletions
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue