搜索

首页  >  问答  >  正文

mysql索引 - MySQL:索引是否需要整理维护?

每月定期需要对数据进行大量的删除操作,想请教这样操作后对索引是否有影响,是否需要在删除操作完成后对索引进行更新之类的操作

如果需要的话这方面的内容搜索哪些关键字呢?

高洛峰高洛峰2788 天前654

全部回复(1)我来回复

  • 大家讲道理

    大家讲道理2017-04-17 16:14:39

    使用OPTIMIZE可以定期优化表每星期或者每个月一次,具体可以参考下面链接
    http://dev.mysql.com/doc/refm...

    摘自官网的描述

    在这些情况下使用 OPTIMIZE TABLE,具体取决于表的类型:


    InnoDB 表执行大量插入、更新或删除操作后,该表拥有自己的 .ibd 文件,因为它是在启用了
    innodb_file_per_table 选项的情况下创建的。表和索引被
    重新组织,并且磁盘空间可以被回收以供操作系统
    系统使用。

    对 InnoDB 表中 FULLTEXT 索引一部分的
    列执行大量插入、更新或删除操作后。首先设置
    配置选项innodb_optimize_fulltext_only=1。为了将
    索引维护周期保持在合理的时间,请设置
    innodb_ft_num_word_optimize选项来指定要更新搜索索引中
    的单词数量,并运行一系列OPTIMIZE TABLE语句
    直到搜索完成索引已完全更新。

    删除 MyISAM 或 ARCHIVE 表的大部分内容后,
    对具有可变长度行的 MyISAM 或 ARCHIVE 表进行许多更改
    (具有 VARCHAR、VARBINARY、BLOB 或 TEXT 列的表) 。删除的
    行保存在链接列表中,后续的 INSERT 操作
    重用旧的行位置。您可以使用 OPTIMIZE TABLE 来回收
    未使用的空间并对数据文件进行碎片整理。对表进行大量更改
    后,此语句还可以提高使用该表的语句
    的性能,有时甚至会显着提高。

    回复
    0
  • 取消回复