033、TiDB特性_AUTO_INCREMENT

news2024/9/22 5:31:56

自增列

    • 实现原理
    • 使用限制
    • 相关参数
    • 示例

实现原理

  • 每一个自增列使用一个全局可见的键值对用于记录当前已分配的最大ID
  • 为了降低分布式系统分配自增ID的网络开销,每个TiDB节点会缓存一个不重复的ID段
  • 当前预分配的ID段使用完毕,或重启,都会重新再次申请新的ID段

在这里插入图片描述

使用限制

  • 必须定义在主键或唯一索引的列上
  • 只能定义在整数、FLOAT或DOUBLE列上
  • 不支持与列的默认值同时指定在同一列上
  • 不支持使用 alter table 来添加auto_increment 属性
  • 需要通过session变量@@tidb_allow_remove_auto_inc控制是否允许通过alter table来移除auto_increment属性,默认不允许

在这里插入图片描述

auto_increment 属性

  • auto_increment: 用于自动填充默认字段值的属性
    • 处于性能考虑,auto_increment 编号会以批量的形式分配给每个TiDB 实例
    • 缓存批处理的大小可以通过auto_id_cache表选项控制
    • last_insert_id() 可以获得上次插入操作时使用的值

相关参数

AUTO_INCREMENT: 是⽤于⾃动填充默认字段值的属性

  • 出于性能考虑,AUTO_INCREMENT 编号会以批量的形式分配给每个 TiDB Server 实例
  • 缓存批处理⼤⼩可以通过 AUTO_ID_CACHE 表选项控制
  • LAST_INSERT_ID() 可以获得上次插⼊操作时使⽤的值
  • auto_increment_increment 每次增长多少,步长
  • auto_increment_offset 初始的数值是多少。
  • tidb_allow_remove_auto_inc 允许删除 列上的auto increment属性。默认是不允许。
tidb> show variables like 'auto_increment_%';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| auto_increment_increment | 1 |  # 每次增长多少,步长
| auto_increment_offset | 1 | # 初始的数值是多少。
+--------------------------+-------+
# tidb_allow_remove_auto_inc  允许删除 列上的auto increment属性。默认是不允许。

tidb> show variables like 'tidb_allow_remove_auto_inc';
+----------------------------+-------+
| Variable_name | Value |
+----------------------------+-------+
| tidb_allow_remove_auto_inc | OFF |
+----------------------------+-------+
1 row in set (0.01 sec)

示例

  1. 创建table
DROP TABLE IF EXISTS test.t1;
CREATE TABLE test.t1 (
 id int PRIMARY KEY AUTO_INCREMENT,
 from_port char(4));


DROP TABLE IF EXISTS test.t2;
CREATE TABLE test.t2 (
 id int PRIMARY KEY AUTO_INCREMENT,
 from_port char(4))
 AUTO_ID_CACHE 300;  # 从300的基础上 开始增长 TiDB server 1 0-300 TiDB Server 2 301-600 
  1. 执行插入
/* Populate */
INSERT INTO test.t1 (from_port) VALUES ('4000'), ('4000'),
('4000');  
# id : 1,2,3

/* Check value */
select id, from_port from test.t1;
/* Explictly assign value "7" to auto_increment column */
insert into test.t1 values (7, '4000');
# id: 1,2,3,7


/* Check value */
select id, from_port from test.t1;
/* Relying on auto_increment values to assign values to new rows
*/
insert into test.t1 (from_port) values ('4000');
insert into test.t1 (from_port) values ('4000');
/* Check value */
select id, from_port from test.t1;

# id: 1,2,3,7,8,9
注意:如果实在4000端口上执行,则结果是
# id: 1,2,3,457
  1. 验证不同TiDB的缓存批处理大小
/* 在4000端⼝的tidb上插⼊数据 */
insert into test.t2 (from_port) values ('4000');
insert into test.t2 (from_port) values ('4000');

# id: 1,2
/* 在4001端⼝的tidb上插⼊数据 */
insert into test.t2 (from_port) values ('4001');
insert into test.t2 (from_port) values ('4001');
/* 查询t2中的数据 */
select * from test.t2

# id: 1,2,301,302
  1. 验证不同TiDB中插⼊相同的id
/* 在4000端⼝的tidb上插⼊数据 */
insert into test.t2 (id,from_port) values (90000,'4000');
/* 在4001端⼝的tidb上插⼊数据 */
insert into test.t2 (id,from_port) values (90000,'4001');

注意:这个会报错,提示插入的是重复值

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/740083.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据结构导论】第 6 章:查找

目录 一、基本概念 二、静态查找表 (1)顺序表上的查找 —— 顺序查找 ① 过程 ② 算法 ③ 算法分析 (2)有序表上的查找 —— 二分查找 ① 二分查找思想 ② 二分查找过程 ③ 二分查找算法 ④ 示例 ⑤ 算法分析 &#…

CentOS系统内核升级(在线 离线)

centos7.x默认内核版本3.10.x,在安装docker时,部分功能(如 overlay2 存储层驱动)无法使用,并且部分功能可能不太稳定。所以建议大家升级到最新的稳定内核版本。 在线升级 1. 查看当前内核版本 uname -sr Linux 3.10…

python脚本编译成exe方式进行交付

Python自动化办公越来越方便,我们经常也会利用python来写一些自动化的小脚本,例如批量处理文档,自动发送邮件等等。 也许是平时吹得牛比较多,有一天秦医生就问起我说能不能给她写一个自动化处理生信数据的小脚本。 这当然是毫无问…

Stable Diffusion - 扩展插件 (Extensions) 功能的配置与使用

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/131576762 Prompt: (masterpiece, top quality, best quality, ((standing in centre)), ((1girl, black hair)), ((upper body, symmetrical com…

视频无损放大修复工具:Topaz Video AI对Mac和Windows的系统要求

Topaz Video AI是一款基于人工智能技术的视频增强软件,旨在提供高质量的视频修复、增强和转换功能。它可以通过智能算法和图像处理技术,改善视频的清晰度、稳定性、降噪效果,还能进行视频转码和格式转换。 Mac:Topaz Video AI fo…

[pyqt5]designer设计界面设计工具栏上图标和文字同时显示

打开设计师界面 右侧先选择toolBar然后去属性找到toolButtonStyle设置对应选项即可。

图扑 AR 技术应用与管理:施工建造、机柜扫描、办公室导航解决方案

随着科技的不断革新和创新,越来越多的行业开始迎来数字化时代的变革。建筑行业作为人类历史上最重要的产业之一,在数字化转型方面同样也在不断推进。图扑软件结合 AR 技术的应用,为建筑行业带来了更加便捷高效的建筑施工过程管理。 传统的建筑…

MathType7.4中文版下载安装教程

MathType7.4版是一款功能强大、专业实用、应用范围广的数学公式编辑器软件,这款软件采用了简体中文操作界面并且完美兼容office、wps等一系列常见办公工具,这样就能够很好的为相关用户省去了许多繁琐的操作步骤,用户在这里可以轻轻松松进行公…

使用Pytorch加载预训练模型及修改网络结构

Pytorch有自带的训练好的AlexNet、VGG、ResNet等网络架构。详见官网 1.加载预训练模型 import torch import torchvision import torch.nn as nn import torch.optim as optim import torch.nn.functional as F import torchvision.transforms as transforms import torchvis…

VBA系列技术资料MF33:VBA_将文本文件转换为Excel

【分享成果,随喜正能量】一心热枕对待生活,静静的安抚自己内心的急迫和焦虑,你人生的好运,常常在你沉醉于生活时悄悄临门的。。 我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高…

vue本地开发集成https

背景:在本地项目开发中,调用第三方服务获取音视频通话,音视频通话是采用 WebRTC 来实现的,而 WebRTC 中使用音视频设备进行取流是需要在安全域下才可以调起的设备权限 解决方案:使用npm安装mkcert,配置证书…

spring boot+MySQL实现学习平台

本次设计任务是要设计一个学习平台,通过这个系统能够满足学习信息的管理及学生和教师的学习管理功能。系统的主要功能包括首页,个人中心,学生管理,教师管理,课程信息管理,类型管理,作业信息管理…

Hive(18):DML之Load加载数据

1 背景 回想一下,当在Hive中创建好表之后,默认就会在HDFS上创建一个与之对应的文件夹,默认路径是由参数hive.metastore.warehouse.dir控制,默认值是/user/hive/warehouse。 要想让hive的表和结构化的数据文件产生映射,就需要把文件移到到表对应的文件夹下面,当然,可以在…

天天刷题-->LeetCode(无重复字符的最长字串)

个人名片: 🐅作者简介:一名大二在校生,热爱生活,爱好敲码! \ 💅个人主页 🥇:holy-wangle ➡系列内容: 🖼️ tkinter前端窗口界面创建与优化 &…

轻松学会Java导出word,一篇文章就够了!

很多小伙伴在工作中&#xff0c;可能又这样一个需求&#xff1a;根据word模板去填充数据&#xff0c;变成我们想要的word文档&#xff0c;这是很多刚进入职场的小白都会碰到的需求。 当遇上这种需求&#xff0c;我们可以通过这篇文章要讲的poi-tl 来做处理。 导入依赖 <dep…

下载pycharm专业版

PyCharm: the Python IDE for Professional Developers by JetBrainsThe Python & Django IDE with intelligent code completion, on-the-fly error checking, quick-fixes, and much more...https://www.jetbrains.com/pycharm/Pycharm安装使用与版本切换_pycharm专业版换…

华为开发者大会2023(Cloud)之旅

【摘要】 金鱼哥畅游记&#xff1a;华为开发者大会2023&#xff08;Cloud&#xff09; 2023年7月7日华为开发者大会2023&#xff08;Cloud&#xff09;在广东东莞正式揭开帷幕&#xff0c;金鱼哥很庆幸能有机会参加此次盛大聚会&#xff0c;看到众开发者共聚一堂&#xff0c;在…

812. 打印数字

链接&#xff1a; 812. 打印数字 - AcWing题库 题目&#xff1a; 输入一个长度为 nn 的数组 aa 和一个整数 sizesize&#xff0c;请你编写一个函数, void print(int a[], int size), 打印数组 aa 中的前 sizesize 个数。 输入格式 第一行包含两个整数 nn 和 sizesize。 第二行包…

MySQL (select查询的基本用法及select相关练习)

如图插入数据&#xff1a; 得 1、显示所有职工的基本信息。 mysql> select * from worker;效果如图&#xff1a; 2、查询所有职工所属部门的部门号&#xff0c;不显示重复的部门号 mysql> select distinct 部门号 from worker;效果如图&#xff1a; 3、求出所有职…

痴呆≠阿尔茨海默病?5个特征或是发生痴呆!

痴呆是一种智力退化的综合症&#xff0c;其特点包括记忆力减退、思维能力下降、判断力和语言能力受损等。然而&#xff0c;很多人错误地将痴呆等同于阿尔茨海默病。事实上&#xff0c;阿尔茨海默病只是痴呆症的一种常见类型。下面将介绍痴呆的五个主要特征以及导致痴呆的原因。…