- 浏览: 253176 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
wls212:
...
数据库查询优化技巧(MySQL) -
wang1352083:
来看几个实例 1、客户/订单/订单项目 ...
MongoDB Schema Design(MongoDB模式设计)(中文简述版) -
RunUpwind:
感谢,对我很有帮助!
ruby install相关(远程安装时出现HTTP Response 302的解决办法) -
yinmang1215:
不错,感觉这些方面的文档真是稀缺,谢了。
MongoDB+Rails的Demo实现 -
fireflyman:
rake -T
Rake命令大全
控制AUTO_INCREMENT列的系统变量 auto_increment_increment和 auto_increment_offset
auto_increment_increment 和auto_increment_offset 用于主服务器-主服务器(master-to-master )复制,并可以用来控制AUTO_INCREMENT 列的操作。两个变量均可以设置为全局或局部变量,并且假定每个值都可以为1 到65,535 之间的整数值。将其中一个变量设置为0 会使该变量为1 。如果试图将这些变量设置为大于65,535 或小于0 的值,则会将该值设置为65,535 。如果向将auto_increment_increment 或auto_increment_off set 设置为非整数值,则会给出错误,并且变量的实际值在这种情况下保持不变。
这两个变量影响AUTO_INCREMENT 列的方式:
o auto_increment_increment 控制列中的值的增量值。例如:
o mysql> SHOW VARIABLES LIKE 'auto_inc%';
o +--------------------------+-------+
o | Variable_name | Value |
o +--------------------------+-------+
o | auto_increment_increment | 1 |
o | auto_increment_offset | 1 |
o +--------------------------+-------+
o 2 rows in set (0.00 sec)
o
o mysql> CREATE TABLE autoinc1 (col INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
o Query OK, 0 rows affected (0.04 sec)
o
o mysql> SET @auto_increment_increment=10;
o Query OK, 0 rows affected (0.00 sec)
o
o mysql> SHOW VARIABLES LIKE 'auto_inc%';
o +--------------------------+-------+
o | Variable_name | Value |
o +--------------------------+-------+
o | auto_increment_increment | 10 |
o | auto_increment_offset | 1 |
o +--------------------------+-------+
o 2 rows in set (0.01 sec)
o
o mysql> INSERT INTO autoinc1 VALUES (NULL), (NULL), (NULL), (NULL);
o Query OK, 4 rows affected (0.00 sec)
o Records: 4 Duplicates: 0 Warnings: 0
o
o mysql> SELECT col FROM autoinc1;
o +-----+
o | col |
o +-----+
o | 1 |
o | 11 |
o | 21 |
o | 31 |
o +-----+
o 4 rows in set (0.00 sec)
( 注明如何使用SHOW VARIABLES 来获取这些变量的当前值)。
o auto_increment_offset 确定AUTO_INCREMENT 列值的起点。假定在与前面的例子的相同的会话中执行下面的命令:
o mysql> SET @auto_increment_offset=5;
o Query OK, 0 rows affected (0.00 sec)
o
o mysql> SHOW VARIABLES LIKE 'auto_inc%';
o +--------------------------+-------+
o | Variable_name | Value |
o +--------------------------+-------+
o | auto_increment_increment | 10 |
o | auto_increment_offset | 5 |
o +--------------------------+-------+
o 2 rows in set (0.00 sec)
o
o mysql> CREATE TABLE autoinc2 (col INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
o Query OK, 0 rows affected (0.06 sec)
o
o mysql> INSERT INTO autoinc2 VALUES (NULL), (NULL), (NULL), (NULL);
o Query OK, 4 rows affected (0.00 sec)
o Records: 4 Duplicates: 0 Warnings: 0
o
o mysql> SELECT col FROM autoinc2;
o +-----+
o | col |
o +-----+
o | 5 |
o | 15 |
o | 25 |
o | 35 |
o +-----+
o 4 rows in set (0.02 sec)
o
如果auto_increment_off set 的值大于auto_increment_increment 的值,则auto_increment_offset 的值被忽略。
如果其中一个或两个变量被更改了,然后更改插入到包含AUTO_INCREMENT 列的表中的新行,结果可能看上去有问题,由于计算AUTO_INCREMENT 系列值时没有考虑列内已经存在的值,并且插入的下一个值是列内最小的值,大于AUTO_INCREMENT 列内已有的最大值。换句话说,数值的计算方法为:
auto_increment_offset+ N * auto_increment_increment
其中N 为系列内的正整数值[1,2,3,...] 。例如:
mysql> SHOW VARIABLES LIKE 'auto_inc%';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| auto_increment_increment | 10 |
| auto_increment_offset | 5 |
+--------------------------+-------+
2 rows in set (0.00 sec)
mysql> SELECT col FROM autoinc1;
+-----+
| col |
+-----+
| 1 |
| 11 |
| 21 |
| 31 |
+-----+
4 rows in set (0.00 sec)
mysql> INSERT INTO autoinc1 VALUES (NULL), (NULL), (NULL), (NULL);
Query OK, 4 rows affected (0.00 sec)
Records: 4 Duplicates: 0 Warnings: 0
mysql> SELECT col FROM autoinc1;
+-----+
| col |
+-----+
| 1 |
| 11 |
| 21 |
| 31 |
| 35 |
| 45 |
| 55 |
| 65 |
+-----+
8 rows in set (0.00 sec)
auto_increment_increment 和auto_increment_offset 所示的值可以生成系列5 + N * 10, 即,[5,15,25,35,45,...] 。在INSERT 前col 列内最大的值为31, AUTO_INCREMENT 数列的下一个值为35, 因此col 中插入的值从该点开始,结果如SELECT 查询所示。
一定要记住不可能将这两个变量的结果限制到一个表中,因此不会替代其它数据库管理系统提供的序列;这些变量控制MySQL 服务器上all 表AUTO_INCREMENT 列的所有行为。如果某个变量设为全局变量,则只有通过局部设置将全局值更改和覆盖后或mysqld 重启后其作用方可改变;如果局部设置,则新值影响所有表的AUTO_INCREMENT 列,在这个会话期间当前用户在这些表中插入了新行,除非在会话期间更改了这些值。
auto_increment_increment 的 默认值为1 。auto_increment_offset 变量的默认值为1 。
################################
注:可以在mysql配置文件my.cnf设置上述两个系统变量的值。
在my.cnf中添加如下设置:
[mysqld]
#这2个设置是为了防
止2台互相复制的服务器产生关键字段的冲突用的,
#如果他们用不同的偏移, 就可以实现一台服务器按照1,3,5,7..增加
#另一台服务器按照
个2,4,6,8..增加
#如果服务器的复制是单向的,就不需要这个2个设置项
auto_increment_increment
= 2 #自动增加的字段每次步进是2
auto_increment_offset = 1 #自动增加的字段的初始值是1
发表评论
-
mysql proxy V0.8.2 测试问题记录
2012-03-08 15:40 19181、 问题:没法输出控制台日志。(控制台日志可以统计分 ... -
mysql用户管理
2012-02-27 16:30 1398网络转载:http://www.cnblogs.com/blo ... -
数据库查询优化技巧(MySQL)
2011-12-19 13:42 1715在数据库程序的开发中,性能是最让人关心和担心的问题之一, ... -
mysql服务器性能调优工具
2011-12-19 12:10 1926数据库服务器的性能在网络服务中往往起着至关重要的作用,通常 ... -
mysql主从服务器搭建配置
2011-12-19 12:07 1738主服务器的(db1)配置 ●my.cnf设置 [mysql ... -
mysql中如何获得数据库的大小
2011-07-15 13:33 2477转载:http://zhidao.zgsj.com/artic ... -
mysql中常用命令收集
2011-04-22 17:13 1143①查看表中各列的具体属性: show full col ... -
mysql慢查询功能介绍及其相关工具的使用
2011-03-07 11:43 3892【Backgroud】在以MySQL为 ... -
MySQL中查看表状态
2011-02-18 17:19 2641#MySQL中查看表状态 SHOW TABLE STATUS ... -
MySQL-Proxy负载平衡测试遇到的问题及其分析 && MySQL-Proxy工作机制
2010-12-23 16:19 4269(1)MySQL-Proxy负载平衡测试中遇到的问题及其分析 ... -
mysql中查看该台数据库服务器执行的查询次数
2010-11-26 17:26 2072mysql> show status like & ... -
mysql中GROUP BY的高级应用
2010-10-18 19:53 2002有SQL文如下所示: SELECT place_id, con ... -
mysql中GROUP BY结合GROUP_CONCAT的使用
2010-10-18 18:59 1657有查询语句如下所示: select id, type, si ... -
MySQL Proxy Version 0.8.0安装手顺
2010-09-08 15:56 3186MySQL Proxy Version 0.8.0安装 ... -
MySql查看数据库和表的创建语句
2010-07-27 16:59 19971博文参照:http://zhuixue.iteye.c ... -
查看mysql服务器的端口
2010-07-21 17:13 3350##########查看mysql服务器的端口####### ... -
MySQL Sandbox的安装
2010-07-13 17:37 1798安装MySQLSandbox 下载地址:https://la ... -
利用MySQL Sandbox同一台机器上创建多个MySQL服务器
2010-07-13 17:33 2742创第一个MySQL服务器---sp ... -
USING SPIDER (Simple case)
2010-07-12 17:28 1568利用spider storage engine的简单实 ... -
spider storage engine实践时遇到[Mysql::Error: This xid is already exist: COMMIT]的解决办法
2010-07-07 17:16 2085参考博文:http://ilgnep.iteye.com/bl ...
相关推荐
而`AUTO_INCREMENT`属性则是在MySQL数据库系统中为某些整数类型的主键自动分配唯一值的功能。下面我们将深入探讨`AUTO_INCREMENT`与主键的相关知识点。 #### 1. 主键 (Primary Key) 主键是指在一个数据表中能够...
MySQL中最简单使用序列的方法就是使用 MySQL AUTO_INCREMENT 来定义列。 实例 以下实例中创建了数据表insect, insect中id无需指定值可实现自动增长。 mysql> CREATE TABLE insect -> ( -> id INT UNSIGNED NOT
auto_increment_value = table_status[6] # 该列为AUTO_INCREMENT值 print("Current AUTO_INCREMENT value:", auto_increment_value) except Error as e: print("Error while fetching table status", e) ``` 3....
在MySQL数据库中,`auto_increment` 是一个非常重要的特性,它允许系统自动为新插入的行生成唯一的标识符,通常用于主键字段。这个特性在处理大量数据时尤其有用,因为它消除了手动分配唯一ID的需求。本文将详细介绍...
在MySQL数据库中,自增列(AUTO_INCREMENT)是一种非常有用的特性,它允许表中的某列在插入新记录时自动递增其值。当你需要重置这个初始值时,可能是因为数据库进行了一些清理操作或者需要从特定数值开始重新计数。...
理解这两种方法可以帮助你有效地处理数据清理和重新初始化`auto_increment`计数器的需求。无论选择哪种方法,都要确保对操作的后果有充分了解,特别是在生产环境中,避免数据丢失或引发其他意外的问题。
标题“blog_auto_increment”暗示了我们讨论的主题与数据库中的自动递增字段有关,这通常用于在插入新记录时自动生成唯一的标识符。在数据库管理中,自动递增(Auto Increment)是一个非常重要的概念,尤其在关系型...
当插入新记录时,系统会基于当前的`auto_increment_offset`和`auto_increment_increment`值来生成ID。例如,如果`offset`是2,`increment`是10,那么第一条记录的ID将是2,第二条记录的ID将是12,依此类推。 4. **...
04_auto_increment.avi MYSQL应用 MYSQL视频 MYSQL教程,讲解中连接上一集03集
从上述分析中可以得出,在设计数据库和编写应用逻辑时,需要充分考虑存储引擎对auto_increment的不同处理方式,以保证数据的完整性和应用的正确性。 本文章通过一个实际的示例进一步说明了这一点。作者通过实验操作...
总的来说,解决MySQL双向同步中的键值冲突问题,关键在于利用`auto_increment_offset`和`auto_increment_increment`参数,合理规划每个服务器的自增长ID序列,以确保数据的一致性和完整性。同时,为了保证整个系统的...
mongoose_auto_increment 创建一个Counter用来记录所有Collections增长数,以Mongoose plugin的方式与对应的Scheme相关联,以此实现Mongoose自动增长列
此外,`mongoid_auto_increment` gem 会默认创建一个名为 `increment_counters` 的集合来存储每个自动递增字段的当前值。如果你的数据库中有大量这样的字段,这个集合可能会变得相当大。因此,在设计数据库结构时,...
`id` bigint(20) NOT NULL AUTO_INCREMENT, `category_id` bigint(20) NOT NULL COMMENT '内容类目ID', `title` varchar(200) DEFAULT NULL COMMENT '内容标题', `sub_title` varchar(100) DEFAULT NULL COMMENT...
`auto_increment_increment`变量定义了自增长的步长,默认值为1,这意味着每次自增长时数值增加1。而`auto_increment_offset`则设置了初始值,也就是自增长序列的第一个值,默认也是1。 当试图插入一个值X到具有自...
像MySQL一样,将Mongoid id字段更改为Integer的宝石。 MongoDB文档中的想法: 注意! 这个宝石已经帮助超过了4年,并产生了超过一百万行,这是非常...gem 'mongoid_auto_increment_id' , "0.6.1" # Mongoid 3.1.x gem