Sli*_*liq 5 mysql auto-increment
在mySQL中,所有表都有适当的本机非解决方法自动增量可能性吗?我的意思是,不仅仅是每个表的auto inc,我的意思是数字数据库中每个新行的一个数字?
我在专业的oracle(?)设置上看到了这一点.主要优点是所有表中的所有行/元素都具有唯一ID,而不仅仅是PER TABLE.
可以像这样设置PostgreSQL CREATE SEQUENCE seq_name并使用nextval(seq_name)每个插件.
MySQL没有本机支持,你可以通过创建一个只有一列和一列的表来模拟PostgreSQL SEQUENCE的行为AUTO_INCREMENT.
您总是在该表中插入,首先读取该LAST_INSERT_ID表,以获取您需要插入表中的ID.这将是交易安全的,因此不会产生重复.
另一种实现此目的的方法是创建一个表,其中一列没有AUTO_INCREMENT,只有一行保存当前最大值.
每次你需要递增时,执行UPDATE seq_table SET seq_column = seq_colum+1;增量更新本身就是原子的,但是你需要读取后面的值,它产生两个语句并且它们不是原子的,除非你围绕它们设置一个事务和一个适当的隔离级别.此方法可节省空间,但也会生成锁定查询.
多个线程试图INSERT必须等待其他人更新,seq_table然后才能自己更新并读取新值.
此外,您必须使用适当的事务将事务中UPDATE的SELECTon 和on 包装起来,以避免在增加某个其他线程之后读取其他线程增加的值.seq_tableISOLATION LEVEL
这意味着INSERTS成为交易问题,但通常他们不是,所以我不建议采用第二种方法.
| 归档时间: |
|
| 查看次数: |
683 次 |
| 最近记录: |