【学习笔记】维护索引统计状态信息

背景:索引建立好了,也是需要维护一下?

===================分割线=======================

不说无的,只写自己知道的学到的,哈哈

上干货:查看当前索引有哪些, SHOW INDEXES FROM tablename \G  仅查索引名字也可以DESC tablename 或show create table tablename;

====================分割线==========================

有了索引,有了优化目标,是耗时已经较小的业务量超多的SQL好? 还是优化业务量极小,但耗时很大的SQL。 很明显优化前者带来的效益更好。

往往人们优化索引会向着 耗时较大的SQL去优化,这个方向往往不是最佳的。

优化业务量较多的SQL,减小耗时,服务器吞吐量更大,SQL锁更少,CPU更快的释放资源。。。有个SQL耗时2S,一天只跑几次,对其他无啥影响。显而易见优化前者。

这里索引优化,最后用到的是索引的根本是索引统计信息,一般是B+树索引,B+树二级索引。MySQL的优化器根据表中索引的分布统计信息, 抉择查询使用哪个索引执行查询最优,以及连接查询时的执行顺序;

======================分割线=========================

当表中数据更新时,索引的统计信息也会随之更新,分为自动更新 和 手动更新:

手动更新方式:ANALYZE TABLE tablename; 执行SHOW TABLE STATUS;在开启innodb_stats_on_metadata变量情况下,查询表 INFORMATION_SCHEMA.TABLES;

自动更新:默认情况下,开启参数innodb_stats_auto_recalc,10%的行更新会触发自动更新索引统计信息;

g

Sampling 20 data pages by default . Changed with the innodb_stats_persistent_sample_pages variable.

================================================

Innodb持久的保存索引统计信息到mysql.innodb_index_stats表中。默认是通过参数innodb_stats_persistent开启。

单独的表也可以单独设置是否开启索引统计,通过STATS_PERSISTENT参数实现。默认是开启的...想不到有不开的情况,哈哈

 

====================如何重建索引==============

1.重建除了全文索引外的索引,使用ALTER TABLE tablename FORCE;

可以跨数据页面更均匀地重组数据 ,可以回收空页面使用的文件系统空间。重建索引耗时长,ALTER TABLE会锁表,表中数据量较小时可以用ALTER TABLE

若数据量较大,建议看下替代方式删除索引,新建索引又不锁表,而不是直接重建索引,这里有点意思。

2.OPTIMIZE TABLE重建全文索引; 默认情况下OPTIMIZE TABLE会重建整张表;开启fulltext_only选项后,就会仅仅重建全文索引;

SET innodb_optimize_fulltext_only = 1;

OPTIMIZE TABLE tablename;

3.mysqlcheck客户端工具,可以从表级别,数据库级别,全部数据库级别,维护Innodb,MyISAM,ARCHIVE引擎的表;

mysqlcheck   --analyze: Perform an ANALYZE TABLE.

mysqlcheck   --optimize: Perform an OPTIMIZE TABLE.

mysqlcheck  --repair:perform a REPAIR TABLE 用于MyISAM引擎。

mysqlcheck   --check: Perform a CHECK TABLE (default).检查表中是否出错;

e.g.

 

==================End===================

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值