gpt4 book ai didi

mysql - 在一个巨大的表上按 RAND( ) 排序导致它在 MySQL 中崩溃。为什么?

转载 作者:行者123 更新时间:2023-11-29 05:44:08 26 4
gpt4 key购买 nike

friend 们,早安。我在 32b 机器上运行 Fedora 13。

我有一个巨大的 1.5B ip 地址表(当我有资源时,它会被拆分,不用担心 ;))。当我运行此查询时:

SELECT ip FROM ips ORDER BY RAND() LIMIT 500000;

有时表会崩溃(我收到错误“MySQL 表被标记为已崩溃,应该修复”),有时不会。我的问题是;什么样的事情会导致 MyISAM 或 InnoDB 表崩溃?内存有影响吗?因为我的系统监视器显示它只使用了大约 30%。

这是 my.cnf(默认,从元包安装):

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

还有;我听说 PostGreSQL “更健壮”并且不会像 MySQL 在这些情况下那样崩溃。这是真的还是一个妻子的故事?

最佳答案

1500M IP 地址进行排序并不是最好的主意。

如果您想要 500K 个随机 IP 地址,请使用此方法:

不过,它也不会太有效,因为它需要在 table 上经过两次。

您可以粗略估计 COUNT(*) 而不是子查询。这将加快查询速度,但代价是有可能丢失一些地址或获得比需要的结果少的机会。

关于mysql - 在一个巨大的表上按 RAND( ) 排序导致它在 MySQL 中崩溃。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4135236/

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