gpt4 book ai didi

MySQL - 创建索引需要多长时间?

转载 作者:IT老高 更新时间:2023-10-28 12:59:09 29 4
gpt4 key购买 nike

谁能告诉我如何在 MySQL 中添加键缩放?我在数据库中有 500,000,000 行,trans,列 i (INT UNSIGNED)、j (INT UNSIGNED)、nu (DOUBLE)、A (DOUBLE)。我尝试索引一列,例如

ALTER TABLE trans ADD KEY idx_A (A);

我等着。对于 14,000,000 行的表,在我的 MacBook Pro 上执行大约需要 2 分钟,但对于整个 50 亿行,它需要 15 小时并且还在计数。是我做错了什么,还是我只是对索引数据库如何随行数扩展而天真?

最佳答案

有几个因素需要考虑:

  • 排序是一个 N.log(N) 操作。
  • 14M 行的排序可能很适合主内存; 500M 行的排序可能不会,所以排序溢出到磁盘,这大大减慢了速度。

由于因子的大小约为 30,因此大数据集的标称排序时间大约是 50 倍 - 不到两个小时。但是,每个数据值需要 8 个字节和另外 8 个字节的开销(这是一个猜测 - 如果您了解更多关于它在索引中存储的内容,请调整到 mySQL)。因此,14M × 16 ≈ 220 MB 主内存。但是 500M × 16 ≈ 8 GB 主内存。除非您的机器有这么多内存可用(并且 MySQL 已配置为使用它),否则大排序会溢出到磁盘,这占了其余时间的大部分时间。

关于MySQL - 创建索引需要多长时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2483205/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com