https://geek-docs.com/mysql/mysql-ask-answer/356_mysql_how_can_i_rebuild_indexes_and_update_stats_in_mysql_innodb.html

MySQL如何在InnoDB中重建索引并更新统计数据?

在MySQL中,索引是非常重要的。索引可以加速查询,并且还可以检查唯一性。但是,索引的优化是需要花费一些时间和精力的。在InnoDB引擎中,索引是以B-Tree结构组织的,也就是说,索引在存储的时候是分离存储的。

InnoDB引擎会自动维护索引和统计数据,但是在一些特殊情况下,需要手动重建索引和更新统计数据。下面是一些常见的情况:

阅读更多:MySQL 教程

 

1.数据库重建

当你在一个新的服务器上安装了MySQL,并且需要将原来的数据库转移到新服务器时,需要将数据还原到新服务器,并且需要重建索引和更新统计数据。

2.表结构变更

当你在一个已有的表上进行结构变更时,例如增加或删除列,你需要重建索引和更新统计数据来保证查询的性能和正确性。

3.长时间未使用

如果你有一些长时间未使用的表,不妨定期对其进行重建索引和更新统计数据。

现在,我们来看看如何重建索引和更新统计数据:

重建索引

在InnoDB中,你可以使用ALTER TABLE语句来重建索引。这里有几种方法可供选择:

1.使用ALTER TABLE语句

ALTER TABLE table_name ENGINE=InnoDB;
Mysql
Copy

2.使用pt-online-schema-change工具

pt-online-schema-change是Percona Toolkit中的一个实用工具,可以在不影响应用程序的情况下进行表结构变更。

 

使用pt-online-schema-change可以避免重建索引引起的锁定表的操作。对于一些大型的表,pt-online-schema-change可以节省大量的时间。

3.使用mysqldump和mysql命令行实用程序

可以将表导出为SQL文件,然后重新导入,从而重建索引。

更新统计信息

在MySQL中,你可以使用ANALYZE TABLE语句或opt-in的InnoDB系统统计数据来更新索引统计数据。

使用ANALYZE TABLE语句

ANALYZE TABLE table_name;
Mysql
Copy

使用OPTIMIZE TABLE语句

OPTIMIZE TABLE table_name;
Mysql
Copy

可以在InnoDB中是重新创建表的副产品,它将重建表索引并更新统计数据。

总结

重建索引和更新统计信息是保证InnoDB引擎中索引性能和正确性的一种方法。在重建索引和更新统计信息之前,一定要充分备份你的数据库,以防万一。通过合适的方式和手段,时刻保持你的数据库健康和稳定。

[转帖]MySQL如何在InnoDB中重建索引并更新统计数据?的更多相关文章

  1. SQL Server重建索引与重组索引会更新统计信息吗?

    在SQL Server中重建索引(Rebuild Index)与重组索引(Reorganize Index)会触发统计信息更新吗? 那么我们先来测试.验证一下: 我们以AdventureWorks20 ...

  2. MySQL(四)InnoDB中一棵B+树能存多少行数据

    一.InnoDB一棵B+树可以存放多少行数据?(约2千万) 我们都知道计算机在存储数据的时候,有最小存储单元,这就好比我们今天进行现金的流通最小单位是一毛.在计算机中磁盘存储数据最小单元是扇区,一个扇 ...

  3. mysql提取.sql备份文件中的单个表以及表数据

    背景:随着业务模块的不断在增多,数据库mysql容量也是越来越大,做测试时,整个备份还原比较耗费时间,由于有时候仅仅需要单个表或者少数几个表,要想从整个备份文件中提取指定的表以及数据,需要以下方法. ...

  4. MySQL之LEFT JOIN中使用ON和WHRERE对表数据

    背景 left join在我们使用mysql查询的过程中可谓非常常见,比如博客里一篇文章有多少条评论.商城里一个货物有多少评论.一条评论有多少个赞等等.但是由于对join.on.where等关键字的不 ...

  5. mysql在建表语句中添加索引

    普通索引创建 创建普通索引,即不添加 UNIQUE.FULLTEXT 等任何参数. [例]创建表名为 score 的数据表,并在该表的 id 字段上建立索引,SQL 语句如下: CREATE tabl ...

  6. pandas | 如何在DataFrame中通过索引高效获取数据?

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是pandas数据处理专题的第四篇文章,我们一起来聊聊DataFrame中的索引. 上一篇文章当中我们介绍了DataFrame数据结构当 ...

  7. 「Elasticsearch」ES重建索引怎么才能做到数据无缝迁移呢?

    背景 众所周知,Elasticsearch是⼀个实时的分布式搜索引擎,为⽤户提供搜索服务.当我们决定存储某种数据,在创建索引的时候就需要将数据结构,即Mapping确定下来,于此同时索引的设定和很多固 ...

  8. 【mysql】关于innodb中MVCC的一些理解

    一.MVCC简介 MVCC (Multiversion Concurrency Control),即多版本并发控制技术,它使得大部分支持行锁的事务引擎,不再单纯的使用行锁来进行数据库的并发控制,取而代 ...

  9. 如何在Anaconda中把python环境更新更高版本

    把Anaconda中的python从3.5.5更新到3.6版本,不想卸载重新安装.办法如下: 开始->Anaconda Promot 在Anaconda Promot中,输入: conda up ...

  10. MySQL 查询某个列中同样值的数量统计

    数据如今是这种,我想确定出type列中的news和image....甚至以后有其它值,他们分别有多少个. SELECT type, count(1) AS counts FROM material G ...

随机推荐

  1. vue 2实战系列 —— 复习Vue

    复习Vue 近期需要接手 vue 2的项目,许久未写,语法有些陌生.本篇将较全面复习 vue 2. Tip: 项目是基于 ant-design-vue-pro ant-design-vue-pro 由 ...

  2. 好玩、有趣的 Linux 命令学习神器 kmdr!

    大家好,我是你们的民工哥. 所有学习Linux系统的初学者都知道,入门时除了简单的系统知识需要了解之外,其次,最重要的就是学习与理解Linux命令的用法与其应用场景. 所以,大家也会遇到这样的情况,不 ...

  3. 斯坦福 UE4 C++ ActionRoguelike游戏实例教程 08.创建主HUD & 自定义作弊指令

    斯坦福课程 UE4 C++ ActionRoguelike游戏实例教程 0.绪论 概述 本篇文章对应课程Lecture 14 ,56-58节.本篇文章将会教你将之前创建的各种UMG控件统合到一个主控件 ...

  4. 原理一、Java中的HashMap的实现

    文章从JDK1.7和JDK1.8两个版本解析HashMap的实现原理及其中常见的面试题(两个版本HashMap最大的区别,1.7版HashMap=数组+链表,1.8版HashMap=数组+红黑树+链表 ...

  5. 记录:websoket切换页面后重复执行问题

    问题描述 因为项目需求,实时播放执行信息.而项目的websoket只在这个页面,会有切换情况.从websoket连接得到执行列表数据.断开重连后会传递新连接数据+旧连接数据.也就是说,如果第一次进入页 ...

  6. Java 设置PDF文档过期时间(有效期)

    有些文档具有一定时效性,需在规定时间段内才可阅读查看,针对此类文档,需要设置文档的过期日期.时间等.下面以Java示例演示为例如何给PDF文档设置过期时间.需使用PDF类库, Free Spire.P ...

  7. 6种方法帮你搞定SimpleDateFormat类不是线程安全的问题

    摘要:本文主要讲述在高并发下SimpleDateFormat类为何会出现安全问题,以及如何解决SimpleDateFormat类的安全问题. 本文分享自华为云社区<[高并发]SimpleDate ...

  8. 云小课 | ModelArts Pro 自然语言处理套件:高效构建行业高精度文本处理模型

    摘要:ModelArts Pro提供了自然语言处理套件,为客户提供自然语言处理的自定制工具,旨在帮助客户高效地构建行业领域的高精度文本处理模型,可应用于政府.金融.法律等行业. 本文分享自华为云社区& ...

  9. 分享个本地maven配置

    用阿里云的快有点受不了了,经常有包下载不了 settings.xml <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0&q ...

  10. 用Python学线性代数:概率密度函数拟合

    问题 如果有一组数据,如何确定他们来自哪个统计分布? 从数据分析的角度,我们并不想要通过严格的统计方法去找到这个分布,Python中有一个可以自动拟合数据分析的库 -- distfit .这是一个py ...