2011-02-08 88 views
3

我有一个包含约40 CREATE INDEX语句的文件。我以前将这个文件提供给我的生产数据库,它目前正在运行这些命令。在编写索引时重启MySQL是不是很糟糕?

不久之前,我不小心在我的生产数据库上跑了几次缓慢的查询,现在恐怕我可能已经把工作搞糟了。通常,当我运行一个不可接受的慢查询时,我重新启动MySQL,但我不确定我想这样做,因为我不知道在MySQL运行这些语句时是否安全。

欲了解更多的上下文,如果我运行select * from information_schema.statistics where index_name like 'index_%',我通常会看到每隔几分钟显示一个新的索引,但它似乎一直停留在14个索引。

我应该重新启动服务器吗?

+0

不是一个答案,但只是你知道的未来:你可以使用MySQL [`KILL`](http://dev.mysql.com/doc/refman/5.0/en/kill。 html)语句而不是重新启动服务器。 – 2011-02-08 17:27:45

回答

1

没有问题。使用show create table FOO来查看缺失的索引并应用它们。最后,您可以执行optimize table来重建所有索引。

请注意,如果这些40 create index语句位于同一个表上,那么您应该确定将此(和任何其他)查询重写为单个查询。否则,你等待的时间比你多出39倍。

相关问题