`

mysql优化Analyze Table .

 
阅读更多
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取消写入。

Checksum Table

数据在传输时,可能会发生变化,也有可能因为其它原因损坏,为了保证数据的一致,我们可以计算checksum(校验值)。
使用MyISAM引擎的表会把checksum存储起来,称为live checksum,当数据发生变化时,checksum会相应变化。
在执行Checksum Table时,可以在最后指定选项qiuck或是extended;quick表示返回存储的checksum值,而extended会重新计算checksum,如果没有指定选项,则默认使用extended。

Optimize Table

经常更新数据的磁盘需要整理碎片,数据库也是这样,Optimize Table语句对MyISAM和InnoDB类型的表都有效。
如果表经常更新,就应当定期运行Optimize Table语句,保证效率。
与Analyze Table一样,Optimize Table也可以使用local来取消写入binlog。

Check Table

数据库经常可能遇到错误,譬如数据写入磁盘时发生错误,或是索引没有同步更新,或是数据库未关闭MySQL就停止了。
遇到这些情况,数据就可能发生错误:
Incorrect key file for table: ' '. Try to repair it.
此时,我们可以使用Check Table语句来检查表及其对应的索引。
譬如我们运行
CHECK TABLE PLAYERS;

结果是
TABLE          OP    MSG_TYPE MSG_TEXT
-------------- ----- -------- --------
TENNIS.PLAYERS check status   OK

MySQL会保存表最近一次检查的时间,每次运行check table都会存储这些信息:

执行
SELECT    TABLE_NAME, CHECK_TIME
FROM      INFORMATION_SCHEMA.TABLES
WHERE     TABLE_NAME = 'PLAYERS'
AND       TABLE_SCHEMA = 'TENNIS';  /*TENNIS是数据库名*/

结果是

TABLE_NAME   CHECK_TIME
----------   -------------------
PLAYERS      2006-08-21 16:44:25

Check Table还可以指定其它选项:
UPGRADE:用来测试在更早版本的MySQL中建立的表是否与当前版本兼容。
QUICK:速度最快的选项,在检查各列的数据时,不会检查链接(link)的正确与否,如果没有遇到什么问题,可以使用这个选项。
FAST:只检查表是否正常关闭,如果在系统掉电之后没有遇到严重问题,可以使用这个选项。
CHANGED:只检查上次检查时间之后更新的数据。
MEDIUM:默认的选项,会检查索引文件和数据文件之间的链接正确性。
EXTENDED:最慢的选项,会进行全面的检查。

Repair Table

用于修复表,只对MyISAM和ARCHIVE类型的表有效。
这条语句同样可以指定选项:
QUICK:最快的选项,只修复索引树。
EXTENDED:最慢的选项,需要逐行重建索引。
USE_FRM:只有当MYI文件丢失时才使用这个选项,全面重建整个索引。

与Analyze Table一样,Repair Table也可以使用local来取消写入binlog。
分享到:
评论

相关推荐

    MySQL优化大揭秘.rar

    - **分析表统计信息**:使用ANALYZE TABLE更新统计信息,帮助优化器做出更好的决策。 - **删除无用的数据和备份**:保持数据库整洁,减少不必要的资源占用。 7. **监控和调优工具**: - **使用MySQL Performance...

    Mysql 优化详细介绍.doc

    定期执行优化任务,如ANALYZE TABLE更新统计信息,OPTIMIZE TABLE整理表结构,以及定期清理不再使用的临时表和日志文件。 10. **硬件升级**: 当软件优化无法满足需求时,可以考虑升级硬件,如增加内存、使用更快...

    mysql数据库高级资料mysql优化技术资料.zip

    - **定期分析与优化表**(ANALYZE TABLE, OPTIMIZE TABLE):更新统计信息,修复碎片,保持表的最佳状态。 - **性能监控工具**:如MySQL Enterprise Monitor、Percona Monitoring and Management等,用于实时监控...

    Mysql查询优化器.rar

    查询优化器还涉及列统计信息的使用,如通过ANALYZE TABLE或ESTIMATE TABLE收集的行数、平均长度、最大值和最小值等。这些信息有助于优化器准确估计查询的成本。 在实际应用中,有时优化器的决策可能并不理想。这时...

    mysql优化笔记+资料

    1. 定期分析和优化表(ANALYZE TABLE和OPTIMIZE TABLE)以更新统计信息和物理结构。 2. 清理不再使用的旧数据,避免数据膨胀。 3. 监控数据库性能,使用工具如MySQL Performance Schema或Percona Toolkit进行诊断。 ...

    MySQL性能优化方案.docx

    - 使用ANALYZE TABLE收集统计信息,帮助优化器做出更好的查询决策。 10. **复制和负载均衡**: - 对于高并发读写场景,可以考虑采用主从复制实现负载均衡,将读操作分散到从服务器,减轻主服务器压力。 以上只是...

    php之mysql优化

    9. **维护任务**:定期执行OPTIMIZE TABLE和ANALYZE TABLE,可以整理碎片,更新统计信息,有助于优化查询计划。 10. **硬件升级**:如果软件优化无法满足需求,考虑提升硬件配置,如增加RAM、使用更快的硬盘或采用...

    MySQL优化技巧.rar

    7. **定期维护**:定期进行数据库维护,如分析表(ANALYZE TABLE)、优化表(OPTIMIZE TABLE)和重建索引,有助于保持数据库的健康状态,避免数据碎片影响性能。 8. **监控与调优**:通过监控MySQL的性能指标,如...

    04-VIP-Mysql索引优化实战一.zip

    使用ANALYZE TABLE或OPTIMIZE TABLE命令可以帮助评估和改善索引性能。 此外,过度使用索引也可能带来负面影响,如占用额外的存储空间和增加写操作的开销。因此,定期审查和调整索引策略是必要的。监控索引的使用...

    mysql基础知识和mysql优化整理

    8. 数据库维护:定期进行表维护操作,如ANALYZE TABLE、OPTIMIZE TABLE等,保持数据库健康。 9. 软件升级:适时更新到最新稳定版本的MySQL,获取性能提升和新功能。 10. 性能监控:使用工具如MySQL Performance ...

    性能优化Mysql篇.zip

    14. **定期分析与维护**:执行ANALYZE TABLE更新统计信息,以及OPTIMIZE TABLE进行碎片整理,保持数据库高效运行。 以上这些知识点涵盖了MySQL性能优化的主要方面,实践中应结合具体场景灵活运用,不断测试和调整,...

    MySQL数据库高效使用规范.docx.zip_MYSQL_mysql 优化_mysql优化

    - **定期分析与优化**:使用ANALYZE TABLE更新统计信息,OPTIMIZE TABLE整理数据碎片。 - **备份与恢复**:定期备份数据库,以防数据丢失,熟悉恢复流程。 7. **监控与调优工具** - **MySQL Performance Schema*...

    MySQL优化.docx

    "MySQL优化" MySQL是一种关系型数据库管理系统,作为一种流行的开源数据库,MySQL广泛应用于各种Web应用、企业应用和移动应用等领域。为了提高MySQL的性能和效率,需要进行优化,下面将从硬件、操作系统、软件、...

    mysqlcheck.exe 修复mysql数据库

    4. **分析(Analyze)**:`-a`或`--analyze`选项可以分析表的统计信息,帮助MySQL服务器更好地进行查询计划。 5. **其他选项**:`mysqlcheck.exe`还提供了清理、更新权限、恢复等其他功能,可以灵活地对数据库进行...

    MySQL优化学习思维笔记.rar

    10. **定期维护**:定期进行分析(ANALYZE TABLE)、优化(OPTIMIZE TABLE)和重建索引(REPAIR TABLE),保持数据库的健康状态。 11. **监控与调优工具**:使用MySQL自带的慢查询日志、Performance Schema或第三方...

    mysql添加索引.pdf

    同时,定期监控和评估索引的性能,通过`ANALYZE TABLE`或`OPTIMIZE TABLE`命令进行调整,以保持数据库的最佳状态。当某个索引不再有效或不再被使用时,应及时使用`ALTER TABLE ... DROP INDEX`语句删除,以避免资源...

    MySQL性能优化教学视频资料.zip

    9. **定期分析与优化**:使用ANALYZE TABLE收集统计信息,帮助优化器做出更好的执行计划。OPTIMIZE TABLE则用于重建表,整理碎片,恢复空间。 10. **复制与集群**:MySQL复制技术可以实现数据备份和故障恢复,同时...

    MySQL的保留字.pdf

    2. ANALYZE:对表或索引进行分析,以优化查询性能的SQL命令。 3. BETWEEN:用于在WHERE子句中指定范围的SQL操作符。 4. CALL:调用存储过程的SQL命令。 5. CHANGE:在ALTER TABLE语句中用于改变现有列的数据类型或...

    Devart dbForge Studio for MySQL Professional v6.3.358

    dbForge Studio also provides utilities to compare, synchronize, and backup MySQL databases with scheduling, and gives possibility to analyze and report table data. Over 15,000 users rely on dbForge ...

Global site tag (gtag.js) - Google Analytics