分析oracle主鍵的跳號現象

2022-04-09 07:53:04 字數 808 閱讀 8042

分析oracle主鍵的跳號現象

從做jforum專案以來,以來遇到乙個很明顯的現象,就是每個表的主鍵都出現跳號現象。具體表現在:當一次操作若干條資料時,自動增長的sequence序列總是從200的倍數開始增加,這次操作完成後,無論這時currentval是什麼,隔段時間,總是又從下乙個200的倍數開始了。比如說:一張表當前value是800,增加了3條記錄,這時currentval應該是803。但是隔段時間以後,再次插入資料時,就從1000開始增加。

www.2cto.com  

這個現象在大多數人眼裡肯定不值一提,但在我這裡卻是新鮮玩意,沒遇見過。問了兩個老手,他們也不怎麼熟悉,只是稍微有些印象,好像遇到過類似情況。雖然無解,但我卻知道了從**下手,肯定是sequence的某個屬性導致的。果不其然,當我使用pl/sql developer開啟jforum_topics_seq時可以看到:

那個快取記憶體的值與200是符合的,從名稱上來理解:快取是用來提高系統執行速度和效率所設定的機制。那麼是不是可以這麼猜想,如果快取用不完了,那麼就要將之丟棄,這大概就是快取的一些***吧。

從網上查詢資料,發現很多說明文章都在,在這裡只做簡單說明好了。

www.2cto.com  

1,快取可以預定義,也可以預設,預設的快取大小為20.

2,快取應根據系統資料量的大小來設定,比如jforum論壇系統經過改造之後,同一時段內增加的資料量並不多,那麼設定為200就顯得比較浪費。

3,不設定快取會給系統效能帶來極大的不便,因此當資料量較小的時候,不妨採用預設的快取值20。

4,儘管使用快取會出現主鍵不連續、跳號的現象,但該sequence仍可以保證值的唯一性。

oracle的主鍵問題

在oracle中主鍵建立通常有兩種方法,但也可以讓使用者進行自己進行定義生成主鍵的策略。自增主鍵序列和sys guid生成唯一的序列。下面分別進行介紹這兩種方法 一 自增主鍵 建立乙個表 create table student stid int primary key,name varchar2 ...

oracle 主鍵刪除,聯合主鍵的建立

alter table tablename drop primary key 執行上面的sql能夠刪除主鍵 假設不成功能夠用 alter table tablename drop constraints column cascade 刪除約束 alter table tablename disabl...

出現亂碼現象的原因分析

首先我們知道知道utf 8編碼俗稱 萬國碼 我們能接觸到的編碼utf 8都囊括在內,所以我們也常用這一編碼集,出現亂碼情況也可以從這入手。1.資料庫建立的時候我們一般會設定編碼,通常也有預設形式。出現亂碼我們可以檢查是否為utf 8,通過控制台等檢視表中是否出現亂碼,出現了就可能需要檢查修改資料庫的...