我们正在考虑将UUID值用作MySQL数据库的主键。所插入的数据是由数十,数百甚至数千台远程计算机生成的,并且以每秒100-40,000次插入的速度插入,我们将永远不会进行任何更新。
在我们开始选择数据之前,数据库本身通常将获得约5000万条记录,因此不是庞大的数据库,也不是很小的数据库。我们也计划在InnoDB上运行,但是如果我们有更好的引擎来进行我们的工作,我们愿意改变它。
我们已经准备好使用Java的Type 4 UUID,但是在测试中已经看到了一些奇怪的行为。一方面,我们将其存储为varchar(36),但现在我意识到使用Binary(16)会更好-尽管我不确定有多少更好。
更大的问题是:当我们拥有5000万条记录时,此随机数据对索引的破坏有多严重?如果我们使用例如类型1的UUID标记最左边的比特,我们会更好吗?还是我们应该完全放弃UUID并考虑使用auto_increment主键?
我正在寻找有关不同类型的UUID在MySQL中作为索引/主键存储时的性能的一般想法/提示。谢谢!