CREATE TABLE `test` (
`id` varchar(100) COLLATE utf8_estonian_ci NOT NULL COMMENT '唯一不重复',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`sex` int(11) DEFAULT NULL,
`name` varchar(255) COLLATE utf8_estonian_ci DEFAULT NULL,
`username` varchar(255) COLLATE utf8_estonian_ci DEFAULT NULL,
`password` varchar(255) COLLATE utf8_estonian_ci DEFAULT NULL,
`classes` varchar(255) COLLATE utf8_estonian_ci DEFAULT NULL,
`major` int(255) DEFAULT NULL,
`QQ` int(20) DEFAULT NULL,
`introducemyself` varchar(255) COLLATE utf8_estonian_ci DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_estonian_ci ROW_FORMAT=DYNAMIC;
插入语句:
INSERT INTO test(id,sex,name,username,password,classes,major,QQ,introducemyself) VALUE(replace(uuid(), '-', ''),1,"小米","xck","001","八班",265,953190259,"我最牛");
执行了俩次,生成了俩个不同id:
2、id实现自动增长
将类型改为整型,下方选择自动增长
看DDL:
CREATE TABLE `test` (
`id` bigint(100) NOT NULL AUTO_INCREMENT COMMENT '唯一不重复',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`sex` int(11) DEFAULT NULL,
`name` varchar(255) COLLATE utf8_estonian_ci DEFAULT NULL,
`username` varchar(255) COLLATE utf8_estonian_ci DEFAULT NULL,
`password` varchar(255) COLLATE utf8_estonian_ci DEFAULT NULL,
`classes` varchar(255) COLLATE utf8_estonian_ci DEFAULT NULL,
`major` int(255) DEFAULT NULL,
`QQ` int(20) DEFAULT NULL,
`introducemyself` varchar(255) COLLATE utf8_estonian_ci DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_estonian_ci ROW_FORMAT=DYNAMIC;
插入一条数据,sql:
INSERT INTO test(sex,name,username,password,classes,major,QQ,introducemyself) VALUE(1,"小米","xck","001","八班",265,953190259,"我最牛");
对应数据库变化:
1.集群配置,包含三个结点,主节点控制所有的子节点
2.集群已经搭建好了,解压之后直接可以使用Finalshell和VMware连接
3.包含全套组件:hdfs,hbase,hive,sqoop,mysql,pig,spark等大数据组件
4.如果不知道如何使用,或者需要做Hadoop项目可以私信博主
1、声明主键的方法:
您可以在创建表的时候就为表加上主键,如:
CREATE TABLE tbl_name ([字段描述省略…], PRIMARY KEY(index_col_name));
也可以更新表结构时为表加上主键,如:
ALTER TABLE tbl_name ADD PRIMARY KEY (index_col_name,…);
创建一个qq表,将qq_id设为主键,且没有对其进行NOT NULl约束
create table qq(
qq_id int(10),
nick_name varchar(255) not null,
primary key (qq_id
l 第五组值是一个IEE 802的节点标识值,它是空间上唯一的。假如主机没有网卡,或者我们不知道如何在某系统下获得机器地址,则空间唯一性就不能得到保证,即使这杨,出现重复值的机率还是非常小的。l 多次调用或执行得到的后2组值相同,若把mysqld服务器关闭,重新启动之后,会发现第四组的组与未重启前的值发生变化,然后一直不变化,只要重新启动mysqld服务就会发生变化。UUID()函数产生的值,并不适合作为InnoDB引擎表的主键,至于详细的原因,请阅读文章。l 前三组值是时间戳换算过来的;
SELECT REPLACE(UUID(),'-','');运行以上代码得到结果:4b1ea801bea911e7913c1418775159ef直接使用UUID()函数得到的结果是8e9503d9-beab-11e7-913c-1418775159ef,因为含有“-”与原有的ID不一致,我们就可以使用REPLACE函数去除“-”,保持格式一致。
没什么好讲的,肯定唯一
(2)UUID() 函数:
MySQL 的 UUID() 函数中,前三组数字从时间戳中生成,第四组数字暂时保持时间戳的唯一性,第五组数字是一个 IEEE 802 节点标点值,保证空间唯一。使用 UUID() 函数,可以生成时间、空间上都独一无二的值。
MySQL 5.1 之后的版本,提供 UUID_SHORT() 函数,生成一个 64 位无符号整数
(3)程序自定义
Demo:
select uuid();
select UU
前言:在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究竟有什么坏处?本篇博客我们就来分析这个问题,探讨一下内部的原因。一:mysql和程序实例1.1:要说明这个问题,我们首先来建立三张表,分别是user_auto_key,user_uuid,user_random_key,分别表示自动增长的主键,uuid作为主键,随机key作为主键,
当单库无法满足业务需求时,分库分表就是一种要做的优化手段了,然而将原本属于一个库中的数据拆分成多份后,如果让每个表的主键依旧从1开始递增,这很明显是不满足全局唯一id的需要。那这个时候我们要使用哪种方式来保证我们的是全局唯一呢,接下来花哥分享几种常见的做法,可以根据具体业务场景进行选择。
数据库自增id
此方式思路很简单,每次我们需要拿到id时,我们就向同一个库的某个表插入数据,此时我们会得到一个自增id,取到这个id之后再往对应的分库分表里去写入。同样该方式缺点也很明..
简介: 分布式系统中最关键的一个问题,ID生成,本文,一篇带你掌握系统唯一ID是我们在设计一个系统的时候常常会遇见的问题,也常常为这个问题而纠结。生成ID的方法有很多,适应不同的场景、需求以及性能要求。所以有些比较复杂的系统会有多个ID生成的策略。下面就介绍一些常见的ID生成策略。
数据库自增长序列或字段最常见的方式。利用数据库,全数据库唯一。
1)简单,代码方便,性能可以接受。
2)数字ID天然排序,对分页或者需要排序的结果很有帮助。
1)不同数据库语法和实现不同,数据库迁移的时
Mysql innodb存储引擎
一:为什么使用UUID
UUID 是 通用唯一识别码(Universally Unique Identifier)的缩写,是一种软件建构的标准,亦为开放软件基金会组织在分布式计算环境领域的一部分。其目的,是让分布式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。如此一来,每个人都可以创建不与其它人冲突的UUID。
UUID 便于生成,不会重复,在分布式架构的系统中,很常见,但对于使用了mysql innodb 存储引擎来说,U
1.为什么要使用uuid做主键
(1).其实在innodb存储引擎下,自增长的id做主键性能已经达到了最佳。不论是存储和读取速度都是最快的,而且占的存储空间也是最小。
(2).但是在我们实际到项目中会碰到问题,历史数据表的主键id会与数据表的id重复,两张自增id做主键的表合并时,id一定会有冲突,但如果各自的id还关联了其他表,