总结:int(11),tinyint(1),bigint(20),后面的数字,不代表占用空间容量。而代表最小显示位数。这个东西基本没有意义,除非你对字段指定zerofill。 所以我们在设计mysql数据库时,建表时,mysql会自动分配长度:int(11)、tinyint(4)、smallint(6)、mediumint(9)、bigint(20)。 所以,就用这些默认的显示长度就可以...
create table test_uuid (id_binvarchar(36) PRIMARY KEY, name varchar(200)) ENGINE=InnoDB DEFAULT CHARSET=utf8; – 使用重组后的uuid做为主键 create table test_uuid_ordered (id_bin binary(16) PRIMARY KEY, name varchar(200)) ENGINE=InnoDB DEFAULT CHARSET=utf8; 2)在mysql中创建转换函数uuidtobin...
UUID_SHORT() 返回的是64位无符号整数, unsigned long long 类型【长度为:(0 ~ 2^64-1) 10^19 20位数字】 数据库使用了无符号bigint类型之后,使用UUID_SHORT()进行生产id的时候,数据库是可以插入 由于JAVA本身的基本类型是不支持无符号类型的,JAVA的Long类型进行数据接收,这里有可能是会超出长度的。【数据...
原因是在字段类型上面:bigint 20 对应的类型是 long long 类型,有符号 ,范围:-2^63 ~ 2^63-1 而UUID_SHORT() 返回的是 unsigned long long 类型,无符号,范围:0 ~ 2^64-1 在MySQL设置的时候没有勾选 「无符号」这个选项导致的,勾选上就解决了。
在MySQL 5.1 之后的版本,提供 UUID_SHORT() 函数,生成一个 64 位无符号整数。另外,需要注意的是,server_id的范围必须为 0-255,并且不支持 STATEMENT 模式复制。 mysql> SELECT UUID_SHORT(); +---+ | UUID_SHORT() | +---+ | 95914352036544514 | +---+ 1 row in set (0.00 sec) 五 小结## ...
名称 存储长度 生成方式1. uuid 32+4uuid()函数2. uuid20 20UUID_SHORT()函数3. bigint自增 20 auto_increment 测试表:id_int()、 --uuid测试表CREATETABLE`id_uuid` ( `id`varchar(50)NOTNULL, `name`varchar(100)DEFAULTNULL,PRIMARYKEY(`id`) ...
主键采用bigint,使用uuid_short()产生数据,数据为有序列的纯数字(22461015967875697)。(其相当于自动增长,只是固定的基数值较大而已。)运行查询语句1:SELECT COUNT(id) FROM test_long;运行查询语句2:SELECT * FROM test_long WHERE vname='63b10f80-0e20-28cc-3078-d7331ba410b6';运行查询语句3:SELE...
Uuid_short 与uuid返回固定长度字符串不同, uuid_short的返回值是一个unsigned long long类型。MySQL启动后第一次执行的值是通过server_id << 56 + server_start_time << 24来初始化。server_start_time单位是秒。 之后每次执行都加1。 由于每次加1都会加全局mutex锁,因此多线程安全,可以当作sequence来用,只是...
1.varchar(n),char(n)表示n个字符,无论汉字和英文,MySQL都能存入n个字符,仅是实际字节长度有所...