mysql5.6的统计信息

mysql5.6对统计信息进行了改善,使得使用innodb存储引擎的数据表的统计信息可以永久(persistent)管理。从5.6开始,在mysql数据库的innodb_index_stats表和innodb_table_stats表中也可以访问索引。

root@localhost:mysql3316.sock  09:06:19 [mysql]>show tables like "%_stats";
+---------------------------+
| Tables_in_mysql (%_stats) |
+---------------------------+
| innodb_index_stats        |
| innodb_table_stats        |
+---------------------------+

在mysql5.6创建表时,可以设置stats_persistent选项来控制是否保存统计信息

(1)stats_persistent=0  #采用mysql5.6以前方式管理表的统计信息,不保存于mysql数据库的innodb_index_stats和innodb_table_stats。

root@localhost:mysql3316.sock  09:06:34 [mysql]>create table test.zhangshuo(id int primary key,name varchar(20)) stats_persistent=0;
Query OK, 0 rows affected (0.62 sec)

(2)stats_persistent=1  #将表统计信息保存到mysql数据库的innodb_index_stats和innodb_table_stats。

root@localhost:mysql3316.sock  09:13:14 [mysql]>create table test.zs(id int primary key,name varchar(20)) stats_persistent=1;
Query OK, 0 rows affected (0.33 sec)

(3)访问mysql库中的innodb_table_stats表统计信息,可以看到只能访问到zs数据表(采用stats_persistent=1选项创建)

root@localhost:mysql3316.sock  09:24:46 [mysql]>select * from innodb_table_stats where table_name in ('zhangshuo','zs');
+---------------+------------+---------------------+--------+----------------------+--------------------------+
| database_name | table_name | last_update         | n_rows | clustered_index_size | sum_of_other_index_sizes |
+---------------+------------+---------------------+--------+----------------------+--------------------------+
| test          | zs         | 2016-08-03 09:16:01 |      0 |                    1 |                        0 |
+---------------+------------+---------------------+--------+----------------------+--------------------------+
1 row in set (0.00 sec)

(4)当然也可以使用alter table命令将表统计信息改为永久存储状态(stats_persistent=1)

posted on 2016-08-03 09:32  zhangshuo  阅读(471)  评论(0编辑  收藏  举报

导航