The other function IS_UUID does a very basic validation of the UUID provided as parameter and returns TRUE if the argument is a valid UUID and FALSE otherwise. Setting the argument to true while inserting the values: “INSERT INTO t VALUES(UUID_TO_BIN(UUID(), true)) ” will rearrange the time-related bits so that consecutive generated values will be ordered.įor more information about the problem and solution for previous versions of MySQL check this link. The UUID_TO_BIN/BIN_TO_UUID functions have a second boolean argument, which is optional, and can be used to avoid this problem. This will have a significant performance impact, since the values will be inserted in random locations in the index tree which will require a lot of IO when the index tree will not fit in memory anymore. You can observe in the results above that the values most likely to be different on consecutively generated UUIDs are the ones at the beginning of the string, that is because the smaller time units are the hexadecimals characters at the beginning of the string, while the larger time units come next, ending with the MAC address. That means compressing the 32 characters (36 or more with separators) to the 16-bit format or back to the human-readable format. These function will be used to convert from the human-readable format (char/varchar) to the compact format (binary) and back. Let’s start with the pair: UUID_TO_BIN/BIN_TO_UUID. These will ease the work with UUIDs and will provide a solution around the issues mentioned above. With these problems in mind, we added three new functions: UUID_TO_BIN, BIN_TO_UUID, IS_UUID. – performance issues: mainly because of the size and not being ordered – can be generated offline (without any exchange of information with the database or collaboration with other components of the system)īut they also come with some disadvantages: – are hard(er) to guess (example from an URL) – the keys are unique across tables, databases and servers UUIDs are a good alternative to AUTO_INCREMENT PRIMARY KEY and are used mainly because: The one that MySQL implements in the UUID() function is version 1 which is composed of the timestamp, UUID version and MAC address. UUIDs can have different underlying structure depending on the version.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |