开发者社区> 问答> 正文

MySQL中的UUID性能??mysql

我们正在考虑将UUID值用作MySQL数据库的主键。所插入的数据是从数十台,数百台甚至数千台远程计算机生成的,并且以每秒100-40,000次插入的速度插入,我们将永远不会进行任何更新。

在我们开始选择数据之前,数据库本身通常会获得大约5000万条记录,因此不是庞大的数据库,但也不小。我们也计划在InnoDB上运行,但是如果我们有更好的引擎来进行我们的工作,我们愿意改变它。

我们已经准备好使用Java的Type 4 UUID,但是在测试中已经看到了一些奇怪的行为。首先,我们将其存储为varchar(36),我现在意识到使用Binary(16)会更好-尽管我不确定有多少更好。

更大的问题是:当我们有50M条记录时,此随机数据对索引的破坏有多严重?如果我们使用例如类型1的UUID标记最左边的比特,会更好吗?还是我们应该完全放弃UUID并考虑使用auto_increment主键?

当将不同类型的UUID作为索引/主键存储在MySQL中时,我正在寻找有关不同类型的UUID的性能的一般想法/提示。谢谢!

展开
收起
保持可爱mmm 2020-05-17 18:38:02 721 0
1 条回答
写回答
取消 提交回答
  • UUID是通用唯一ID。这是您应该在此处考虑的普遍部分。

    您真的需要ID通用吗?如果是这样,那么UUID可能是您唯一的选择。

    我强烈建议如果您确实使用UUID,请将它们存储为数字而不是字符串。如果您有50M +记录,那么节省存储空间将提高您的性能(尽管我不能说多少)。

    如果您的ID并不需要是唯一的,那么我认为仅使用auto_increment可以做得更好,这可以确保ID在表中是唯一的(因为值每次都会递增)来源:stack overflow

    2020-05-17 18:40:32
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像