日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Sybase identity 字段

發布時間:2024/4/17 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Sybase identity 字段 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

http://ewoyaofei.blog.163.com/blog/static/343562612010314115446284/

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%這個值。

    ?

    在Sybase中使用

    sp_chgattribute 'TableName', 'identity_gap', gap_value

    來更改gap_value為一個合理的值

    5、@@IDENTITY

    可以使用 select @@IDENTITY 獲取 insert 之后的值


    總結

    以上是生活随笔為你收集整理的Sybase identity 字段的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。