Analyze Table

MySQL 的Optimizer(优化元件)在优化SQL语句时,首先需要收集一些相关信息,其中就包括表的cardinality(可以翻译为“散列程度”),它表示某个索引对应的列包含多少个不同的值——如果cardinality大大少于数据的实际散列程度,那么索引就基本失效了。

我们可以使用SHOW INDEX语句来查看索引的散列程度:

SHOW INDEX FROM PLAYERS;

TABLE   KEY_NAME COLUMN_NAME CARDINALITY

------- -------- ----------- -----------

PLAYERS PRIMARY PLAYERNO             14

因为此时PLAYER表中不同的PLAYERNO数量远远多于14,索引基本失效。

下面我们通过Analyze Table语句来修复索引:

ANALYZE TABLE PLAYERS;

SHOW INDEX FROM PLAYERS;

结果是:

TABLE   KEY_NAME COLUMN_NAME CARDINALITY

------- -------- ----------- -----------

PLAYERS PRIMARY PLAYERNO           1000

此时索引已经修复,查询效率大大提高。

需要注意的是,如果开启了binlog,那么Analyze Table的结果也会写入binlog,我们可以在analyze和table之间添加关键字local取消写入

Optimize Table

如果您已经删除了表的一大部分,或者如果您已经对含有可变长度行的表(含有VARCHAR, BLOB或TEXT列的表)进行了很多更改,则应使用 OPTIMIZE TABLE。被删除的记录被保持在链接清单中,后续的INSERT操作会重新使用旧的记录位置。您可以使用OPTIMIZE TABLE来重新 利用未使用的空间,并整理数据文件的碎片。

在多数的设置中,您根本不需要运行OPTIMIZE TABLE。即使您对可变长度的行进行了大量的更新,您也不需要经常运行,每周一次或每月一次 即可,只对特定的表运行。

OPTIMIZE TABLE只对MyISAM, BDB和InnoDB表起作用。

注意,在OPTIMIZE TABLE运行过程中,MySQL会锁定表。

与Analyze Table一样,Optimize Table也可以使用local来取消写入binlog。

mysql analyze_mysql analyze和optimize相关推荐

  1. MySQL之check、optimize和analyze

    MySQL之check.optimize和analyze    >    > >    > >             >                     ...

  2. MySQL的analyze table和optimize table对表进行定期优化

    1.analyze table优化表的统计信息 mysql> show index from t; +-------+------------+---------------------+--- ...

  3. mysql优化Analyze Table

    MySQL 的Optimizer(优化元件)在优化SQL语句时,首先需要收集一些相关信息,其中就包括表的cardinality(可以翻译为"散列程度"),它表示某个索引对应的列包含 ...

  4. [MySQL优化案例]系列 -- OPTIMIZE的威力

    作/译者:叶金荣(Email: ),来源:http://imysql.cn,转载请注明作/译者和出处,并且不能用于商业用途,违者必究. 1.先来看看多次删除插入操作后的表索引情况 mysql> ...

  5. MySQL 中ANALYZE [LOCAL NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ...

    ANALYZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ... 本语句用于分析和存储表的关键字分布.在分析期间,使用一个读取锁 ...

  6. mysql 优化 案例_[MySQL优化案例]系列 -- OPTIMIZE的威力

    作/译者:叶金荣(Email: ),来源:http://imysql.cn,转载请注明作/译者和出处,并且不能用于商业用途,违者必究. 1.先来看看多次删除插入操作后的表索引情况 mysql> ...

  7. mysql表analyze,ANALYZE TABLE语句如何帮助维护MySQL表?

    MySQL查询优化器是MySQL服务器的重要组成部分,可为查询设置最佳的问题执行.对于特定查询,查询优化器使用存储的键分布和其他因素来确定执行联接时应联接表的顺序以及特定表应使用哪个索引. 但是,键分 ...

  8. MySQL EXPLAIN ANALYZE

    本文转载自"MySQL解决方案工程师"公众号,由 徐轶韬翻译 作者:Norvald H. Ryeng  译:徐轶韬 MySQL8.0.18刚刚发布,它包含一个全新的功能EXPLAI ...

  9. MySQL之ANALYZE TABLE

    关键词:索引分布    cardinality 语法:ANALYZE TABLE 表名; 作用:执行ANALYZE TABLE,MySQL会分析指定表的键的值(主键.唯一键.外键等,也可以看成就是索引 ...

  10. MySQL之mysqlcheck、check、optimize和analyze

    MySQL之mysqlcheckcheck.optimize和analyze     ㈠ optimize                 optimize可以回收空间.减少碎片.提高I/O     ...

最新文章

  1. 挑战杯科展上的智能车作品
  2. python中的time库安装步骤-python中time模块怎么用
  3. 《Windows Server 2012 Hyper-V虚拟化管理实践》一第1章 Hyper-V服务器选型
  4. 关于NandFlash在实际产品使用上的一些经验
  5. boost::histogram::algorithm::project用法的测试程序
  6. 你还会写这段C51程序吗?
  7. 他让全世界凶手睡不着觉,现实版福尔摩斯,退休了4次又被拽回来工作,无敌实在是太寂寞了~...
  8. 清华大学团队夺冠AAAI 2021国际深度元学习挑战赛
  9. Float浮点内存存储方式 转
  10. 设计模式学习笔记——外观模式
  11. MySQL视图索引与存储过程精析
  12. 测试金士顿固态硬盘软件,金士顿固态硬盘管理工具(Kingston SSD Manager)
  13. 高校全场景智慧教室建设方案
  14. 颜色选择器(拾色器)
  15. html网页文本框无法输入,浏览器打开网页文本框无法输入文字如何解决
  16. 基于6N137高速光耦开关电路
  17. if(a)是什么意思
  18. 我爱赚钱吧:你知道自己建网站可以赚钱吗?①
  19. Python中单引号和双引号括起来的短字符有什么区别
  20. 中国著名大学校训巡礼

热门文章

  1. 单片机七阶音符_单片机教程二十七:单片机音乐程序设计(含源程序)
  2. EINT DINT ERTM DRTM理解
  3. 软考中级嵌入式系统设计师备考攻略
  4. Java 枚举 ordinal 使用以及介绍
  5. 各代DDR内存的速度表
  6. 大数据的价值可以体现在哪些方面?
  7. 关于 nth-child(n)的几种写法。
  8. 算法/回溯法/8-Queen八皇后问题
  9. 192.168.0.1路由器设置进入
  10. 创建维基百科,编辑维基百科的四个技巧