我在 CentOS 7 上运行 MySQL 服务器 v5.7.18。
其中一张表用作 Web API 的操作日志,并且已增长到 2000 万行。
用户从运行如下查询的前端应用程序搜索此表:
SELECT * FROM log_table WHERE some_long_id = '12345abdcef';
该some_long_id
列是文本类型,并且包含 UUID 样式的字母数字 ID。
目前,此查询大约需要 20 秒才能完成。
我发现如果我在此列上添加一个键,查询几乎会立即运行:
ALTER TABLE log_table ADD KEY (some_long_id(64));
此操作需要很长时间,但可以完成工作。
我在离线虚拟数据库上对其进行了测试。
我的问题:
我可以在ADD KEY
不关闭 Web 应用程序的情况下安全地在生产数据库上运行操作吗?
有一个 API 可以不断地将新行插入到这个表中,可能每秒几次。
这会影响索引吗?它会破坏什么吗?索引表时插入会失败吗?
编辑:忘了提到它正在使用 innoDB 引擎。
PS我不是DBA,我只需要管理这个东西,所以我的整个方法可能是错误的。
也欢迎“改为这样做”的答案。
此外,谷歌搜索没有给出关于这个问题的相关结果,如果它是重复的,对不起。