[转帖]MySQL如何在InnoDB中重建索引并更新统计数据?
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;
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;
使用OPTIMIZE TABLE语句
OPTIMIZE TABLE table_name;
可以在InnoDB中是重新创建表的副产品,它将重建表索引并更新统计数据。
总结
重建索引和更新统计信息是保证InnoDB引擎中索引性能和正确性的一种方法。在重建索引和更新统计信息之前,一定要充分备份你的数据库,以防万一。通过合适的方式和手段,时刻保持你的数据库健康和稳定。
[转帖]MySQL如何在InnoDB中重建索引并更新统计数据?的更多相关文章
- SQL Server重建索引与重组索引会更新统计信息吗?
在SQL Server中重建索引(Rebuild Index)与重组索引(Reorganize Index)会触发统计信息更新吗? 那么我们先来测试.验证一下: 我们以AdventureWorks20 ...
- MySQL(四)InnoDB中一棵B+树能存多少行数据
一.InnoDB一棵B+树可以存放多少行数据?(约2千万) 我们都知道计算机在存储数据的时候,有最小存储单元,这就好比我们今天进行现金的流通最小单位是一毛.在计算机中磁盘存储数据最小单元是扇区,一个扇 ...
- mysql提取.sql备份文件中的单个表以及表数据
背景:随着业务模块的不断在增多,数据库mysql容量也是越来越大,做测试时,整个备份还原比较耗费时间,由于有时候仅仅需要单个表或者少数几个表,要想从整个备份文件中提取指定的表以及数据,需要以下方法. ...
- MySQL之LEFT JOIN中使用ON和WHRERE对表数据
背景 left join在我们使用mysql查询的过程中可谓非常常见,比如博客里一篇文章有多少条评论.商城里一个货物有多少评论.一条评论有多少个赞等等.但是由于对join.on.where等关键字的不 ...
- mysql在建表语句中添加索引
普通索引创建 创建普通索引,即不添加 UNIQUE.FULLTEXT 等任何参数. [例]创建表名为 score 的数据表,并在该表的 id 字段上建立索引,SQL 语句如下: CREATE tabl ...
- pandas | 如何在DataFrame中通过索引高效获取数据?
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是pandas数据处理专题的第四篇文章,我们一起来聊聊DataFrame中的索引. 上一篇文章当中我们介绍了DataFrame数据结构当 ...
- 「Elasticsearch」ES重建索引怎么才能做到数据无缝迁移呢?
背景 众所周知,Elasticsearch是⼀个实时的分布式搜索引擎,为⽤户提供搜索服务.当我们决定存储某种数据,在创建索引的时候就需要将数据结构,即Mapping确定下来,于此同时索引的设定和很多固 ...
- 【mysql】关于innodb中MVCC的一些理解
一.MVCC简介 MVCC (Multiversion Concurrency Control),即多版本并发控制技术,它使得大部分支持行锁的事务引擎,不再单纯的使用行锁来进行数据库的并发控制,取而代 ...
- 如何在Anaconda中把python环境更新更高版本
把Anaconda中的python从3.5.5更新到3.6版本,不想卸载重新安装.办法如下: 开始->Anaconda Promot 在Anaconda Promot中,输入: conda up ...
- MySQL 查询某个列中同样值的数量统计
数据如今是这种,我想确定出type列中的news和image....甚至以后有其它值,他们分别有多少个. SELECT type, count(1) AS counts FROM material G ...
随机推荐
- linux rz/sz 拖动文件上传
不需要第三方上传文件直接 rz上传 拖动.以及 sz下载文件 多舒服 那么 他来了 安装与使用 yum安装 yum -y install lrzsz 使用上传文件,执行命令rz,会跳出文件选择窗口,选 ...
- 【K8S系列】快速初始化⼀个最⼩集群
序言 走得最慢的人,只要不丧失目标,也比漫无目的地徘徊的人走得快. 文章标记颜色说明: 黄色:重要标题 红色:用来标记结论 绿色:用来标记一级重要 蓝色:用来标记二级重要 希望这篇文章能让你不仅有一定 ...
- osgEarth使用笔记3——加载倾斜摄影数据
目录 1. 概述 2. 详论 2.1. 位置 2.2. 着色 2.3. 其他 3. 结果 4. 参考 1. 概述 我在<OSG加载倾斜摄影数据>这篇博文中论述了如何通过OSG生成一个整体的 ...
- rasa train nlu详解:1.1-train_nlu()函数
本文使用<使用ResponseSelector实现校园招聘FAQ机器人>中的例子,主要详解介绍train_nlu()函数中变量的具体值. 一.rasa/model_training.p ...
- 十问Huawei Cloud Toolkit:开发插件如何提升云上开发效能
本文分享自华为云社区<[云享问答]第2期 十问Huawei Cloud Toolkit:开发插件如何提升云上开发效能>,作者:华为云社区精选. 众所周知,桌面集成开发环境(IDE)已经融入 ...
- 华为云MetaStudio全新升级,盘古数字人大模型助力数字人自由
摘要:基于盘古大模型能力,华为云MetaStudio数字内容生产线全新升级,推出数字人模型生成服务和模型驱动服务. 近日,华为开发者大会2023 ( Cloud ) 在东莞拉开帷幕.基于盘古大模型能力 ...
- 一文你带快速认识Vue-Router路由
摘要:Vue Router是Vue.js 官方的路由管理器.它和Vue.js的核心深度集成,可以非常方便的用于SPA应用程序的开发. 本文分享自华为云社区<Vue-Router路由快速了解与应用 ...
- 华为云GaussDB(for Influx)揭秘第五期:最佳实践之子查询
摘要: GaussDB(for influx)提供灵活的子查询能力,满足海量数据场景下的高性能查询需求. 本文分享自华为云社区<华为云GaussDB(for Influx)揭秘第五期:最佳实践之 ...
- Koa、koa-router、koa-jwt 鉴权详解:分模块鉴权实践总结
首先看koa-router koa-router use 熟悉Koa的同学都知道use是用来注册中间件的方法,相比较Koa中的全局中间件,koa-router的中间件则是路由级别的. koa-rout ...
- vue2升级vue3:this.$createElement is not a function—动态组件升级
this.$createElement vue2 动态组件加载,this.$createElement非常好使!比如: import { Component as tsc } from 'vue-ts ...