关键字: Database database sybase
1:identity
Oracle, DB2, pgSQL中都有sequence的概念,这个概念比Identity先进很多,在Sybase中没有Sequence对象,与之相对应的是Identity
2:identity 的创建
identity跟sequence对象完成的功能类似,但是有一定的约束,每个table只能有一个identity的列,列的类型必须是numberic(n,0).
sql 代码
- create table table_name
- (column_name numeric(precision ,0) identity)
3:identity gap的产生:
缺省情况下Sybase Adaptive Server会给identity字段分配一段数字到内存中,在磁盘上记录被分派到内存中的最大的数值,
这样就不用每次插入数据都需要写磁盘来记录当前identity的最大值,而是直接在内存中计算,以提高performance,默认分配到内存的
数值段是identity 字段最大值的 0.05%,这样虽然提高了效率但是如果server fail或者no wait重起,那么内存中的数字段就会丢失,DB Server
会从记录在磁盘上的identity最大值开始计算identity值,就会产生gap,如果按照默认值来计算,server fail 和no wait重起2000次,那么
identity字段就会溢出,必须增加identity字段的长度,其实这期间会有大量的gap
4:要点提示:
a:定义identity时要对数据量有个良好的估计,例如上面的代码中identity的最大值时10的precision次幂-1,对于所有的identity都定义
numberic(18,0)是不合适的,不可能所有的表都有几十万亿的数据量
b:定义identity时要对数据量的增长情况有个良好的估计,合理设置idnetity_gap的值,而不是默认的值
sql 代码
- create table table_name
- (column_name numeric(precision ,0) identity)
- with identity_gap = value
这个value值会覆盖db 默认的是identity 字段最大值的 0.05%这个值。
5:如果我已经犯了这个错误我改怎么办?
在Sybase中使用
sp_chgattribute 'TableName', 'identity_gap', gap_value
来更改gap_value为一个合理的值 |
分享到:
相关推荐
对于MySql数据库使用递增序列时需要在建表时对主键指定为auto_increment属性。
Set IDENTITY _INSERTY用法
但是,具有identity特性的字段,不需要具有...在数据库中,我们需要三个表: user, chatsession(sessionid identity,…), user_chatsession (userid, sessionid, …), 来表示这个关系。这里面,多出了一个表chatsessi
达梦数据库_SQL语言手册.pdf
有关pdfbox-1.3.1中Identity-H编码为乱码的解决方法 有关pdfbox-1.3.1中Identity-H编码为乱码的解决方法
* 数据完整性实质,存储在数据库中的数据对的无误并且相关数据具有一致性,根据完整性机制所作用的数据库对象和范围不同,可以分为实体完整性、参照完整性、域完整性和用户定义完整性。 * 标志列(identity)可以...
1、对ms sql server及其他数据库库中类似int identity的数据库类型没有处理,转出来的sql语句直接执行时,还需要做一下处理. 2、不支持长字符集类型.比如ms sql server中的image,oracle中的blob,clob,long以及db2中...
SQL Server数据库中存储图片是许多开发者经常遇到的问题,本文将指导读者如何使用C#语言将图片存储到SQL Server数据库中,并从数据库中读取图片。 数据库表结构 为了将图片数据存入SQL Server数据库的表中,我们...
activiti数据库设计 activiti数据库设计全文共33页,当前为第1页。activiti数据库设计全文共33页,当前为第1页。activiti5.13 框架 数据库设计说明书 activiti数据库设计全文共33页,当前为第1页。 activiti数据库...
存储过程是存储在数据库中的一个可重复使用的 SQL 代码块,用于读者信息的插入。该存储过程接受读者编号、读者名称、读者密码、读者性别、职务类型编号、所在院系、专业、联系方式、邮箱和读者照片等参数,并将其...
SqlServer 2005 中identity的使用
Identity是数据库中的一种自动递增列,它可以自动生成唯一的标识符。TimeStamp是数据库中的一种时间戳列,它可以记录数据的修改时间。 在本文中,我们使用了Identity和TimeStamp来记录数据的修改时间和自动递增列。...
SQL Server 之 SET IDENTITY_INSERT SET IDENTITY_INSERT 想要将值插入到自动编号(或者说是标识列,IDENTITY)中去,需要设定 SET IDENTITY_INSERT
Neo4j.AspNet.Identity Neo4j图形数据库的自定义ASP.NET Identity提供程序目的ASP.NET MVC 5附带了一个新的Identity系统(位于Microsoft.AspNet.Identity.Core程序包中),以便支持通过OpenID / OAuth进行本地登录和...
MVC5 Identity Dapper-Example 源码,有数据库,DDD模型,精典,可参考可学习,可借鉴使用的源码.
本系列教程详细、完整、深入地介绍了微软的ASP.NET Identity技术,描述了如何运用ASP.NET Identity实现应用程序的用户管理,以及实现应用程序的认证与授权等相关技术,译者希望本系列教程能成为掌握ASP.NET Identity...
出于我的目的,没有必要的多角色策略(一个用户可以拥有 1 个以上的角色),这是 Identity 中的默认设置。 所以这里我有一个单一角色策略(一个用户 - 一个角色)。 实施细则 从 MVC 5 项目中采用 ASP.NET Identity...
IBM Tivoli identity manager 中文 管理员帮助手册 ,IBM Tivoli identity manager 中文 管理员帮助手册,IBM Tivoli identity manager 中文 管理员帮助手册
数据库中有张表User,字段是ID和Name,ID自增。 利用存储过程实现插入时返回当前的行数 代码如下: CREATE PROC Proc_InsertUser @name nvarchar(100) AS INSERT INTO dbo.User( Name )VALUES(@name) SELECT @@...