2
我应该使用UUID还是ID
我已经在系统中使用UUID一段时间了,原因有很多,从日志记录到延迟的关联。随着我变得越来越幼稚,我使用的格式发生了变化: VARCHAR(255) VARCHAR(36) CHAR(36) BINARY(16) 当我到达最后一个时BINARY(16),我开始将性能与基本自动递增整数进行比较。测试和结果如下所示,但如果你只是想总结,表示INT AUTOINCREMENT和BINARY(16) RANDOM对数据相同的性能范围高达20万(该数据库已预先填充之前测试)。 最初,我对将UUID用作主键持怀疑态度,确实确实如此,但是我发现这里有潜力创建一个可以同时使用两者的灵活数据库。尽管许多人强调这两种方法的优点,但同时使用这两种数据类型可以消除哪些缺点呢? PRIMARY INT UNIQUE BINARY(16) 这种类型的设置的用例将是表间关系的传统主键,并且具有用于系统间关系的唯一标识符。 我本质上试图发现的是两种方法之间的效率差异。除了所使用的四倍磁盘空间(在添加其他数据后可能几乎可以忽略不计)外,在我看来它们是相同的。 架构: -- phpMyAdmin SQL Dump -- version 4.0.10deb1 -- http://www.phpmyadmin.net -- -- Host: localhost -- Generation Time: Sep 22, 2015 at 10:54 AM -- Server version: 5.5.44-0ubuntu0.14.04.1 -- PHP Version: 5.5.29-1+deb.sury.org~trusty+3 SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; …