索引操作到底发生了什么?

2024-04-13

今天我正在为一个包含 20 亿条记录的巨大表建立索引。我以为 MySQL 会吃掉我的 2TB 驱动器...磁盘消耗不断增加到 400GB,然后是 500GB,最后下降到 180GB,MySQL 说成功添加了索引。为什么空间会增加,最后发生了什么?有人可以给我一些指点吗?


顺便说一句昨天我回答了关于如何使MySQL中的索引创建更快的问题 https://stackoverflow.com/questions/3845181/does-mysql-use-existing-indexes-on-creating-new-indexes,以下是我的研究得出的结果:

The CREATE INDEX and DROP INDEX命令的工作方式是创建一个用所请求的索引集定义的新的空表。然后,它将现有行一一复制到新表中,同时更新索引。以这种方式将条目插入索引(其中键值未排序)需要随机访问索引节点,并且远非最佳。复制原始表中的所有行后,旧表将被删除,并使用原始表的名称重命名副本。

Source: 快速创建索引概述 http://dev.mysql.com/doc/innodb-plugin/1.0/en/innodb-create-index-overview.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

索引操作到底发生了什么? 的相关文章

  • mysql jdbc 与 SSL 连接在 tls 握手级别失败

    我们的 mysql 服务器配置为仅接受与 ssl 密码 DHE RSA AES256 GCM SHA384 的连接 我正在使用 java mysql connector java 8 0 15 和 java 8 openjdk 版本 1 8
  • MySQL - 查询合并具有相同 id 的行并保留该 id 的所有条目但作为一条记录

    我一直在处理本地保存在 wamp 服务器上的 mysql 数据库中的表 我正在使用 wamp 中的 phpmyadmin 区域来运行查询 我正在尝试获取数据来执行以下操作 谁能帮我制作一张包含许多植物记录的表格 植物可以有多个名称 表格将其
  • 为什么涉及用户变量的表达式的求值顺序未定义?

    From MySQL手册 http dev mysql com doc refman 5 7 en user variables html以下查询的输出不保证始终相同 SET a 0 SELECT a AS first a a 1 AS s
  • 表已满(使用 MEMORY 引擎)

    我想将生产数据库传输到我的开发机器上进行测试 它有 6 张桌子MEMORY出于性能目的的引擎 I did mysqldump routines hxxx uxxx pxxx prod database gt prod dump sql 当我
  • 如果一列没有值,MySQL 返回最大值或 null

    我尝试获取 mysql select 的最大值 但如果有一行不包含时间戳 则希望将其设置为 null empty 0 表统计数据 简化 ID CLIENT ORDER DATE CANCEL DATE 1 5 1213567200 2 5
  • java中如何知道一条sql语句是否执行了?

    我想知道这个删除语句是否真的删除了一些东西 下面的代码总是执行 else 是否删除了某些内容 执行此操作的正确方法是什么 public Deleter String pname String pword try PreparedStatem
  • 如何在 MySQL Insert 语句中添加 where 子句?

    这不起作用 INSERT INTO users username password VALUES Jack 123 WHERE id 1 有什么想法如何通过 id 将插入范围缩小到特定行吗 在插入语句中 您不会有现有行来执行 where 语
  • CakePHP - 获取上次运行的查询

    我想获取 CakePHP 运行的最后一个查询 我无法在 core php 中打开调试 也无法在本地运行代码 我需要一种方法来获取最后一个 sql 查询并将其记录到错误日志中而不影响实时站点 该查询失败但正在运行 像这样的事情会很棒 this
  • 无需 cron 在后台发送邮件

    我想知道是否有一种方法可以运行 PHP 循环 以便在后台向订阅者发送几百封电子邮件 我的目标是格式化新闻通讯 单击发送 然后关闭浏览器或更改页面 当然 发送电子邮件的实际过程将在后台运行 不会因浏览器关闭而中断 我知道这可以通过 cron
  • 如何使用MySqlCommand和prepare语句进行多行插入?(#C)

    Mysql 给出了如何使用准备语句和 NET 插入行的示例 http dev mysql com doc refman 5 5 en connector net programming prepared html http dev mysq
  • 将 Access 数据库转换为 SQL Microsoft DTS - 数据类型“130”不在映射文件中

    我正在尝试将大型 Access mdb 数据库导出到 SQL Server 数据库 但遇到了 Microsoft DTS 无法识别 Access 数据库中特定类型字段的数据类型的问题 我查看了相关的访问表 它们被设置为长度为 1 的 文本
  • MySQL Workbench 忽略外键

    在处理 MySQL Workbench 中的 SQL 编辑器时 我偶然发现了一些奇怪的事情 其中 执行似乎忽略了外键约束 这是一个例子 create database testdb use testdb create table t1 te
  • 在 MySQL 中插入时检查并防止相似字符串

    简要信息 我有3张桌子 Set id name SetItem set id item id position TempSet id 我有一个函数可以生成新的随机组合Item桌子 基本上 总是在成功生成之后 我在中创建一个新行Set表 获取
  • mysql LIKE 查询时间太长

    SQL SELECT COUNT usr id as total results FROM users as usr LEFT JOIN profile as prof ON prof uid usr uid WHERE usr usern
  • 如何使用 AJAX/jQuery 显示打印内容?

    所以我试图理解整个 AJAX jQuery 的事情 现在 当我单独运行这个 PHP 脚本时 我必须等待并观察轮子旋转 直到循环完成然后加载 while row mysql fetch array res postcode to storm
  • iOS 解析如何通过 URL 下载文件

    我正在将 parse 用于我的聊天应用程序 当我上传文件时 我保留该 url 并将该 url 发送给其他用户 然后其他用户可以通过该 URL 下载文件 这是我上传文件的代码 void uploadBlob NSData blob fileN
  • 如何在单个查询中搜索 RealmObject 的 RealmList 字段

    假设我有一堂课 public class Company extends RealmObject private String companyId private RealmList
  • 退出 PHP 脚本后终止或停止 MySQL 查询

    我在工作中运行一个统计服务器 由于运行的查询量很大 该服务器有时会变得非常慢 我们的营销团队使用它作为主要统计工具 团队中的某些人有时会在脚本结束之前退出脚本 通过关闭浏览器或选项卡 同时 SQL 查询继续执行 当有人关闭或离开 PHP 脚
  • 通过Java从MySQL中获取大量记录

    有一个 MySQL 表 服务器上的用户 它有 28 行和 100 万条记录 也可能会增加 我想从这个表中获取所有行 对它们进行一些操作 然后将它们添加到 MongoDB 中 我知道通过简单的 从用户中选择 操作来检索这些记录将花费大量时间
  • 如何使用 dql 从数据表中获取唯一值?

    我有一个表 其中有一列存储了各种值 我想使用 dql 从该表中检索唯一值 Doctrine Query create gt select rec school gt from Records rec gt where rec city ci

随机推荐

  • 如何用通俗语言解释CSS Float?

    如何用通用语言 而不是编程 解释CSS Float 有没有现实生活中的例子可以举个例子来解释CSS Float 有没有以非常简单的方式解释浮动的幻灯片 就像听起来一样解释它 之所以称为 浮动 是因为元素像船一样 漂浮 考虑内容的其余部分是水
  • LINQ to SQL:存储过程结果

    如何更改 LINQ to SQL 设计器生成的存储过程结果的类名 除了弄乱 Designer cs 之外 另外 如何对存储过程的结果集执行 linq 查询 您可以在 dbml 中编辑它吗 就我个人而言 我倾向于将自动生成的类型 来自函数和存
  • 使用 Pandas 为来自多个 URL 的多个 CSV 文件创建一个数据框

    我想使用来自 URL 的多个 CSV 文件的 Pandas 创建 1 个数据框 结构 并保留初始标题行 使用单个 URL 一切都会按预期工作 df pd read csv http www URL1 csv 我已尝试使用多个 URL 进行以
  • JMeter 中的周期性后台任务

    我的测试计划中的请求使用授权令牌 我知道该令牌将在 1 小时内过期 我需要以某种方式每 59 分钟重新请求一次令牌 直到测试完成 有人可以建议最好的方法吗 看起来使用 While 控制器测试将永远不会完成并停留在永恒的 while 循环中
  • 在控制台中显示完整的 Git 提交消息

    我正在尝试在控制台中输出完整的提交消息 并且我能够获取该消息 但是为了查看完整的消息 我必须不断调整控制台窗口的大小以显示更多信息 我在 Windows 上使用 Cygwin 我正在使用的命令是git log pretty full 寻呼机
  • PHP 缺少 mb_strpos 函数?

    我收到此错误 PHP Fatal error Call to undefined function mb strpos in my file php 这很奇怪 因为mb strpos http us php net manual en fu
  • 使用 javascript 或 jquery 的几何(卷积)函数

    我尝试这样做 3 个月 我需要按路线方向创建一个多边形 如下所示 所以我写这个 directionService route request function result status if status google maps Dire
  • CSS 选项卡边框问题

    我无法确定如何操作某些选项卡的边框 如果您已登录 您可以在 ASP NET 上看到该功能http forums asp net user editprofile aspx http forums asp net user editprofi
  • 如何使用 OpenShift 为裸域添加别名?

    如何使我的裸域指向我的 Openshift 应用程序 可以在 Openshift 在线仪表板中完成还是只能通过rhc公用事业 但是我不确定要执行哪些步骤 这是一个两步过程 首先 确保您有一个提供裸机支持的 DNS 提供商CNAMES 然后添
  • Microk8s、MetalLB、ingress-nginx - 如何路由外部流量?

    Kubernetes Ubuntu 新手来了 我正在使用单个 Raspberry Pi 设置 k8s 集群 希望将来有更多 我用的是microk8sv1 18 8和 Ubuntu 服务器20 04 1 LTS GNU Linux 5 4 0
  • OSError:SavedModel 文件不存在于:C:\Users\Munib\New 文件夹/{saved_model.pbtxt|saved_model.pb}

    我想在 android studio 中使用我的 keras 训练模型 我在互联网上获得了这段代码 将我的代码从 keras 转换为tensorflow lite 但是当我尝试代码时我收到了这个错误 OSError SavedModel f
  • C++ 默认赋值运算符

    int a 10 int b 10 a b struct test int a 10 test a b a b 第一个代码无法编译 因为我们无法分配数组 但第二个代码可以 类的默认赋值运算符不是简单地为每个数据成员调用赋值吗 为什么第二个代
  • MySQL:用户“userName”@“localhost”的访问被拒绝

    我在使用 phpMyAdmin 创建用户并授予用户权限时遇到问题 我有一个 Java swing 应用程序 它需要连接到该数据库 下面是我如何创建用户并授予权限的逐步说明 打开 phpMyAdmin 转到 用户 选项卡 点击Add New
  • 无法使用 Angular 和 Spring Security 设置身份验证标头

    我在让 Angular CORS SpringSecurity 和基本身份验证正常运行时遇到困难 我有以下 Angular Ajax 调用 我试图将标头设置为在请求中包含基本授权标头 var headerObj headers Author
  • java.lang.noclassdeffound错误:org.ksoap2.serialization.SoapObject

    我收到这个 no class def 错误 org ksoap2 serialization SoapObject自从我更新了 Eclipse ADT 插件和 SDK 管理器后就出现错误 我正在使用ksoap2 android assemb
  • java中另一个类可以调用类的main()方法吗

    Can a main java中另一个类可以调用类的方法吗 e g class class1 public static void main String args class class2 public static void main
  • 在 ASP.NET 控件中访问全局资源

    meta resourcekey WizardStep1Resource1 这就是我用来访问App LocalResources 我如何访问资源App GlobalResources 解决方案 创建一个名为Globalresource re
  • Yii2:如何使用 301 重定向旧 URL?

    由于 SEO 目的 我想将旧版本网站中的一些 URL 重定向到 Yii2 中的新版本 例如 about us php to about 我怎么做 我不能使用 htaccess 而且我不能使用urlManager规则 因为需要设置HTTP响应
  • 如何发送带有变量的 GraphQL AJAX 查询?

    我正在尝试使用 GraphQL 对 GitHub 进行 API 调用 我已经能够使用静态 graphQL 调用成功地调用数据 但是我在调 用中添加变量 var 条目 时遇到问题 以便我可以基于更改调用用户在网络应用程序中提供的输入 我使用
  • 索引操作到底发生了什么?

    今天我正在为一个包含 20 亿条记录的巨大表建立索引 我以为 MySQL 会吃掉我的 2TB 驱动器 磁盘消耗不断增加到 400GB 然后是 500GB 最后下降到 180GB MySQL 说成功添加了索引 为什么空间会增加 最后发生了什么