MySql UUID字节顺序

时间:2019-01-27 10:10:27

标签: mysql mysql-connector

我有一个MySql表,其中的主键是一个自动增量列,然后还有一个binary(16)列,该列具有用于存储UUID的唯一索引。

MySqlConnectorGuidFormat提供了一个连接选项,其中,我对TimeSwapBinary16LittleEndianBinary16感到困惑,因为其中一个是更好的选择以及为什么。

在效率和性能方面,例如在插入,索引编制,使用binary(16)子句中的WHERE列进行选择等方面,以一定顺序排列UUID字节是否会带来好处?

有人可以解释一下吗?

1 个答案:

答案 0 :(得分:2)

有一个普遍的原则,即按升序将新值插入索引会导致索引效率更高。

虽然MySQL的默认UUID格式包含从时间戳生成的字节,但它们不在UUID内的字节位置,这使其符合“按升序插入”目标。在MySQL 8.0中,他们引入了函数UUID_TO_BIN(),该函数具有重新排列字节的选项,以便在生成UUID值时按时间戳进行排序。

TimeSwapBinary16连接器选项采用了该选项,因此对于索引插入性能更好。

如果您有兴趣,请在此博客文章中通过详细的基准测试显示无序和有序UUID之间的性能差异:https://www.percona.com/blog/2014/12/19/store-uuid-optimized-way/