首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将列的编码从utf8切换到MySQL中的utf8mb4的影响

问将列的编码从utf8切换到MySQL中的utf8mb4的影响
EN

Database Administration用户
提问于 2018-05-15 14:58:58
回答 1查看 3.2K关注 0票数 2

背景信息

假设我在MySQL中有一个表,它有10亿条记录。我有一篇专栏文章,其中包含了一篇文章的一些描述。我们不以任何方式索引、搜索或排序这一列。

目前,description列的编码为utf8,在MySQL中不支持完整的unicode标准。我想添加对表情符号、其他语言等的支持,所以我需要列为utf8mb4。

问题

如果我按照这样的思路运行:

代码语言:javascript
复制
ALTER TABLE
user_posts
CHANGE post_description 
VARCHAR(300)
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

在后台实际发生了什么,在对一个非常大的(+10亿行)表进行操作时,它会对性能产生巨大的影响吗?

由于该列中没有索引、排序或搜索,因此是否需要修改每条记录?oOr,因为当前的utf8记录不会改变,它只会更改表模式。O(n)或O(1)

EN

回答 1

Database Administration用户

回答已采纳

发布于 2018-05-27 16:36:31

首先,语法错误:它是MODIFY,而不是CHANGE,除非您也要更改列名。

我做了一个只有1/200万行的实验。ALTER将一列从utf8更改为utf8mb4花费了1.6秒。我的结论是表被复制了,那就是O(n)。

当开发人员为ALTER添加各种加速比时,我怀疑他们忽略了utf8 8->utf8mb4的情况,或者认为这是一个风险很大的特殊情况--如果后来字符集出现了分歧怎么办?还是校对有分歧?当然,如果列上没有任何索引,那就不重要了。(但在以更快的方式进行修改之前,这将是更多的测试内容。)

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/206782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档