我们正在考虑将UUID值用作MySQL数据库的主键。所插入的数据是从数十台,数百台甚至数千台远程计算机生成的,并且以每秒100-40,000次插入的速度插入,我们将永远不会进行任何更新。
在我们开始选择数据之前,数据库本身通常会获得大约5000万条记录,因此不是庞大的数据库,但也不小。我们也计划在InnoDB上运行,但是如果我们有更好的引擎来进行我们的工作,我们愿意改变它。
我们已经准备好使用Java的Type 4 UUID,但是在测试中已经看到了一些奇怪的行为。首先,我们将其存储为varchar(36),我现在意识到使用Binary(16)会更好-尽管我不确定有多少更好。
更大的问题是:当我们有50M条记录时,此随机数据对索引的破坏有多严重?如果我们使用例如类型1的UUID标记最左边的比特,会更好吗?还是我们应该完全放弃UUID并考虑使用auto_increment主键?
当将不同类型的UUID作为索引/主键存储在MySQL中时,我正在寻找有关不同类型的UUID的性能的一般想法/提示。谢谢!
UUID是通用唯一ID。这是您应该在此处考虑的普遍部分。
您真的需要ID通用吗?如果是这样,那么UUID可能是您唯一的选择。
我强烈建议如果您确实使用UUID,请将它们存储为数字而不是字符串。如果您有50M +记录,那么节省存储空间将提高您的性能(尽管我不能说多少)。
如果您的ID并不需要是唯一的,那么我认为仅使用auto_increment可以做得更好,这可以确保ID在表中是唯一的(因为值每次都会递增)来源:stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。